Compare commits
97 Commits
chapril-1.
...
develop
Author | SHA1 | Date | |
---|---|---|---|
|
19bec88184 | ||
|
8f115461e1 | ||
|
d8123634fa | ||
|
8dcfb0d494 | ||
|
e7d5b1762e | ||
|
f861b77326 | ||
|
c4b562d016 | ||
|
a5373818fb | ||
|
f1678c1744 | ||
|
3438635cda | ||
|
f8f4cc6076 | ||
|
4b8fe75f95 | ||
|
149b64e3b0 | ||
|
ce11049630 | ||
|
f656c790d0 | ||
|
14053d20c9 | ||
|
92f699337f | ||
|
af760cf273 | ||
|
f4c901d6cd | ||
|
b04f95f0e1 | ||
|
bd748e5da7 | ||
|
e793a77b2a | ||
|
e078e2d22b | ||
|
52bc066b05 | ||
|
4b394e9546 | ||
|
d6c2f01457 | ||
|
7305c0f89c | ||
|
2cd54d9c4d | ||
|
964952433c | ||
|
4c0c2a16f9 | ||
|
e6716bc745 | ||
|
b5ce4baf60 | ||
|
feb0c1e6ce | ||
|
bcd5acdea5 | ||
|
2e3fe1dcd3 | ||
|
ad450e2798 | ||
|
141e9105be | ||
|
fad662e09a | ||
|
586e59e23f | ||
|
d5f0f5a289 | ||
|
442fd174e9 | ||
|
081a32b1bb | ||
|
5951519ad8 | ||
|
a64e182076 | ||
|
823c41d2e4 | ||
|
f28198e497 | ||
|
fe93733872 | ||
|
5631167ca7 | ||
|
87a61ebea3 | ||
|
b008bfea9b | ||
|
3ba045791f | ||
|
7f41eb831c | ||
|
006a191544 | ||
|
235002cd24 | ||
|
c4e9cb59d3 | ||
|
8e8ffedc4a | ||
|
2b351bc3d1 | ||
|
17c264721e | ||
|
e379b58d58 | ||
|
b2a550d09b | ||
|
0409256588 | ||
|
abec2cb6a3 | ||
|
b24cc43c85 | ||
|
4c4fb1557f | ||
|
0841675577 | ||
|
aa690bb6d8 | ||
|
06c3a8a078 | ||
|
41578b19c8 | ||
|
81092482af | ||
|
290ec002d5 | ||
|
3330d28f29 | ||
|
fb7c5e2f12 | ||
|
cc0f572335 | ||
|
0b598b8e80 | ||
|
2627dc2ae6 | ||
|
1a3081b58d | ||
|
685d8b5e3d | ||
|
7a12d98943 | ||
|
c1ea6ae2a8 | ||
|
68d5b64180 | ||
|
6dd8fb1723 | ||
|
b89622695e | ||
|
7d9f5becec | ||
|
5b2a40ac58 | ||
|
0f4587adf8 | ||
|
3878c3ce7c | ||
|
a004576592 | ||
|
081fdae5f5 | ||
|
8528a7fe65 | ||
|
c723c81697 | ||
|
afd83efd79 | ||
|
00b871df5c | ||
|
3b54590bde | ||
|
6455f4be87 | ||
|
83ba53dffa | ||
|
94f7288446 | ||
|
f9c3cde701 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -24,3 +24,4 @@ Thumbs.db
|
|||||||
.project
|
.project
|
||||||
.idea/
|
.idea/
|
||||||
*.iml
|
*.iml
|
||||||
|
test_database.sqlite
|
||||||
|
@ -12,24 +12,25 @@ test:
|
|||||||
- composer install -o --no-interaction --no-progress --prefer-dist
|
- composer install -o --no-interaction --no-progress --prefer-dist
|
||||||
- mkdir tpl_c
|
- mkdir tpl_c
|
||||||
- php vendor/bin/php-cs-fixer fix --verbose --dry-run
|
- php vendor/bin/php-cs-fixer fix --verbose --dry-run
|
||||||
|
- APP_ENV=test bin/doctrine migrations:migrate --no-interaction -vvv
|
||||||
- vendor/bin/phpunit --bootstrap app/tests/bootstrap.php --debug app/tests
|
- vendor/bin/phpunit --bootstrap app/tests/bootstrap.php --debug app/tests
|
||||||
cache:
|
cache:
|
||||||
paths:
|
paths:
|
||||||
- vendor/
|
- vendor/
|
||||||
|
|
||||||
check-trad:
|
# check-trad:
|
||||||
stage: test
|
# stage: test
|
||||||
allow_failure: true
|
# allow_failure: true
|
||||||
script:
|
# script:
|
||||||
- if [ -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then echo "*** Unable to check if translations need to be pulled, exiting ***"; exit 1; fi
|
# - if [ -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then echo "*** Unable to check if translations need to be pulled, exiting ***"; exit 1; fi
|
||||||
- export ORIG=$(git diff-files --shortstat)
|
# - export ORIG=$(git diff-files --shortstat)
|
||||||
- if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then mkdir -p ${HOME}/.config; echo -e "${ZANATA_CONFIG_FRAMABOT}" > ${HOME}/.config/zanata.ini; fi
|
# - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then mkdir -p ${HOME}/.config; echo -e "${ZANATA_CONFIG_FRAMABOT}" > ${HOME}/.config/zanata.ini; fi
|
||||||
- if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then make push-locales; fi
|
# - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then make push-locales; fi
|
||||||
- git status > /dev/null 2>&1
|
# - git status > /dev/null 2>&1
|
||||||
- export CHANGES=$(git diff-files --shortstat)
|
# - export CHANGES=$(git diff-files --shortstat)
|
||||||
- if [[ $CHANGES != $ORIG ]]; then echo "*** There is changes in locales ***"; echo "*** You need to do `make pull-locales` in your repo ***"; exit 1; fi
|
# - if [[ $CHANGES != $ORIG ]]; then echo "*** There is changes in locales ***"; echo "*** You need to do `make pull-locales` in your repo ***"; exit 1; fi
|
||||||
only:
|
# only:
|
||||||
- develop
|
# - develop
|
||||||
|
|
||||||
# Create artifacts on master
|
# Create artifacts on master
|
||||||
pages:
|
pages:
|
||||||
@ -62,8 +63,8 @@ beta:
|
|||||||
- git checkout develop
|
- git checkout develop
|
||||||
- composer install -o --no-interaction --no-progress --prefer-dist --no-dev
|
- composer install -o --no-interaction --no-progress --prefer-dist --no-dev
|
||||||
- composer dump-autoload --optimize --no-dev --classmap-authoritative
|
- composer dump-autoload --optimize --no-dev --classmap-authoritative
|
||||||
- if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then mkdir -p ${HOME}/.config; echo -e "${ZANATA_CONFIG_FRAMABOT}" > ${HOME}/.config/zanata.ini; fi
|
# - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then mkdir -p ${HOME}/.config; echo -e "${ZANATA_CONFIG_FRAMABOT}" > ${HOME}/.config/zanata.ini; fi
|
||||||
- if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then make pull-locales; fi
|
# - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then make pull-locales; fi
|
||||||
- mkdir tpl_c
|
- mkdir tpl_c
|
||||||
- mkdir .public
|
- mkdir .public
|
||||||
- cp -r * .public
|
- cp -r * .public
|
||||||
@ -98,11 +99,11 @@ funky:
|
|||||||
- funky
|
- funky
|
||||||
|
|
||||||
# Push new translations strings to https://trad.framasoft.org
|
# Push new translations strings to https://trad.framasoft.org
|
||||||
trads:
|
# trads:
|
||||||
stage: deploy
|
# stage: deploy
|
||||||
image: framasoft/push-trad:latest
|
# image: framasoft/push-trad:latest
|
||||||
script:
|
# script:
|
||||||
- if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then mkdir -p ${HOME}/.config; echo -e "${ZANATA_CONFIG_FRAMABOT}" > ${HOME}/.config/zanata.ini; fi
|
# - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then mkdir -p ${HOME}/.config; echo -e "${ZANATA_CONFIG_FRAMABOT}" > ${HOME}/.config/zanata.ini; fi
|
||||||
- if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then make push-locales; fi
|
# - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then make push-locales; fi
|
||||||
only:
|
# only:
|
||||||
- develop
|
# - develop
|
||||||
|
3
.php_cs
3
.php_cs
@ -38,7 +38,8 @@ return PhpCsFixer\Config::create()
|
|||||||
->exclude([
|
->exclude([
|
||||||
'vendor',
|
'vendor',
|
||||||
'var',
|
'var',
|
||||||
'web'
|
'web',
|
||||||
|
'tpl_c',
|
||||||
])
|
])
|
||||||
->in(__DIR__)
|
->in(__DIR__)
|
||||||
)
|
)
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
This changelog file is **deprecated**. For an up-to-date changelog, please check [the tags](https://framagit.org/framasoft/framadate/tags).
|
||||||
|
|
||||||
|
---------------------
|
||||||
|
|
||||||
# Changelog de framadate
|
# Changelog de framadate
|
||||||
|
|
||||||
## Version 1.0 (Erik - Markus - Ecmu - Julien - Imre - Luc - Pierre - Antonin - Olivier)
|
## Version 1.0 (Erik - Markus - Ecmu - Julien - Imre - Luc - Pierre - Antonin - Olivier)
|
||||||
|
7
CONTRIBUTING.md
Normal file
7
CONTRIBUTING.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
Please report issues on <https://framagit.org/framasoft/framadate/issues>
|
||||||
|
|
||||||
|
If you made a change and want it to be available in official repository, merge requests are welcome!
|
||||||
|
|
||||||
|
Read the [guidelines](https://framagit.org/framasoft/framadate/wikis/coding) to submit your changes.
|
16
Makefile
16
Makefile
@ -1,12 +1,22 @@
|
|||||||
locales:
|
locales:
|
||||||
json2po -P -i locale/en.json -t locale/en.json -o po/framadate.pot
|
scripts/locales.sh
|
||||||
|
|
||||||
push-locales: locales
|
push-locales: locales
|
||||||
zanata-cli -q -B push
|
zanata-cli -q -B push --errors
|
||||||
|
|
||||||
pull-locales:
|
pull-locales:
|
||||||
zanata-cli -q -B pull --min-doc-percent 50
|
zanata-cli -q -B pull --min-doc-percent 50
|
||||||
./.po2json.sh
|
scripts/po2json.sh
|
||||||
|
|
||||||
stats-locales:
|
stats-locales:
|
||||||
zanata-cli -q stats
|
zanata-cli -q stats
|
||||||
|
|
||||||
|
push-trad-to-zanata:
|
||||||
|
scripts/push-trad-to-zanata.sh $(filter-out $@,$(MAKECMDGOALS))
|
||||||
|
|
||||||
|
add-key-locales:
|
||||||
|
scripts/locale-add-key.pl "$(subst ",\",$(filter-out $@,$(MAKECMDGOALS)))"
|
||||||
|
|
||||||
|
# empty targets to be able to use MAKECMDGOALS as arguments to scripts
|
||||||
|
%:
|
||||||
|
@:
|
||||||
|
@ -42,7 +42,7 @@ $is_admin = false;
|
|||||||
$logService = new LogService();
|
$logService = new LogService();
|
||||||
$pollService = new PollService($connect, $logService);
|
$pollService = new PollService($connect, $logService);
|
||||||
$inputService = new InputService();
|
$inputService = new InputService();
|
||||||
$mailService = new MailService($config['use_smtp'], $config['smtp_options']);
|
$mailService = new MailService($config['use_smtp'], $config['smtp_options'], $config['use_sendmail']);
|
||||||
$notificationService = new NotificationService($mailService);
|
$notificationService = new NotificationService($mailService);
|
||||||
$securityService = new SecurityService();
|
$securityService = new SecurityService();
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ include_once __DIR__ . '/../app/inc/init.php';
|
|||||||
|
|
||||||
$logService = new LogService();
|
$logService = new LogService();
|
||||||
$sessionService = new SessionService();
|
$sessionService = new SessionService();
|
||||||
$mailService = new MailService($config['use_smtp'], $config['smtp_options']);
|
$mailService = new MailService($config['use_smtp'], $config['smtp_options'], $config['use_sendmail']);
|
||||||
$pollService = new PollService($connect, $logService);
|
$pollService = new PollService($connect, $logService);
|
||||||
|
|
||||||
$result = false;
|
$result = false;
|
||||||
|
29
admin/cleanDemo.php
Normal file
29
admin/cleanDemo.php
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Framadate\Services\LogService;
|
||||||
|
use Framadate\Services\PurgeService;
|
||||||
|
|
||||||
|
include_once __DIR__ . '/../app/inc/init.php';
|
||||||
|
|
||||||
|
$logService = new LogService();
|
||||||
|
$purgeService = new PurgeService($connect, $logService);
|
||||||
|
|
||||||
|
$purgeService->cleanDemoPoll();
|
||||||
|
|
@ -17,112 +17,64 @@
|
|||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use Framadate\Migration\AddColumn_hidden_In_poll_For_0_9;
|
use Doctrine\DBAL\Migrations\Configuration\Configuration;
|
||||||
use Framadate\Migration\AddColumn_receiveNewComments_For_0_9;
|
use Doctrine\DBAL\Migrations\Migration;
|
||||||
use Framadate\Migration\AddColumn_uniqId_In_vote_For_0_9;
|
use Doctrine\DBAL\Migrations\OutputWriter;
|
||||||
use Framadate\Migration\AddColumn_ValueMax_In_poll_For_1_1;
|
use Doctrine\DBAL\Migrations\Tools\Console\Helper\MigrationStatusInfosHelper;
|
||||||
use Framadate\Migration\AddColumns_password_hash_And_results_publicly_visible_In_poll_For_0_9;
|
|
||||||
use Framadate\Migration\Alter_Comment_table_adding_date;
|
|
||||||
use Framadate\Migration\Alter_Comment_table_for_name_length;
|
|
||||||
use Framadate\Migration\Fix_MySQL_No_Zero_Date;
|
|
||||||
use Framadate\Migration\From_0_0_to_0_8_Migration;
|
|
||||||
use Framadate\Migration\From_0_8_to_0_9_Migration;
|
|
||||||
use Framadate\Migration\Generate_uniqId_for_old_votes;
|
|
||||||
use Framadate\Migration\Increase_pollId_size;
|
|
||||||
use Framadate\Migration\Migration;
|
|
||||||
use Framadate\Migration\RPadVotes_from_0_8;
|
|
||||||
use Framadate\Utils;
|
use Framadate\Utils;
|
||||||
|
|
||||||
include_once __DIR__ . '/../app/inc/init.php';
|
require_once __DIR__ . '/../app/inc/init.php';
|
||||||
|
|
||||||
set_time_limit(300);
|
class MigrationLogger {
|
||||||
|
private $log;
|
||||||
|
|
||||||
// List a Migration sub classes to execute
|
public function __construct()
|
||||||
$migrations = [
|
{
|
||||||
new From_0_0_to_0_8_Migration(),
|
$this->log = '';
|
||||||
new From_0_8_to_0_9_Migration(),
|
|
||||||
new AddColumn_receiveNewComments_For_0_9(),
|
|
||||||
new AddColumn_uniqId_In_vote_For_0_9(),
|
|
||||||
new AddColumn_hidden_In_poll_For_0_9(),
|
|
||||||
new AddColumn_ValueMax_In_poll_For_1_1(),
|
|
||||||
new Generate_uniqId_for_old_votes(),
|
|
||||||
new RPadVotes_from_0_8(),
|
|
||||||
new Alter_Comment_table_for_name_length(),
|
|
||||||
new Alter_Comment_table_adding_date(),
|
|
||||||
new AddColumns_password_hash_And_results_publicly_visible_In_poll_For_0_9(),
|
|
||||||
new Increase_pollId_size(),
|
|
||||||
new AddColumn_ValueMax_In_poll_For_1_1(),
|
|
||||||
new Fix_MySQL_No_Zero_Date(),
|
|
||||||
];
|
|
||||||
// ---------------------------------------
|
|
||||||
|
|
||||||
// Check if MIGRATION_TABLE already exists
|
|
||||||
/** @var \Framadate\FramaDB $connect */
|
|
||||||
$tables = $connect->allTables();
|
|
||||||
$pdo = $connect->getPDO();
|
|
||||||
$prefixedMigrationTable = Utils::table(MIGRATION_TABLE);
|
|
||||||
|
|
||||||
if (!in_array($prefixedMigrationTable, $tables, true)) {
|
|
||||||
$pdo->exec('
|
|
||||||
CREATE TABLE IF NOT EXISTS `' . $prefixedMigrationTable . '` (
|
|
||||||
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
||||||
`name` TEXT NOT NULL,
|
|
||||||
`execute_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
PRIMARY KEY (`id`)
|
|
||||||
)
|
|
||||||
ENGINE = MyISAM
|
|
||||||
DEFAULT CHARSET = utf8;');
|
|
||||||
}
|
|
||||||
|
|
||||||
$selectStmt = $pdo->prepare('SELECT id FROM `' . $prefixedMigrationTable . '` WHERE name=?');
|
|
||||||
$insertStmt = $pdo->prepare('INSERT INTO `' . $prefixedMigrationTable . '` (name) VALUES (?)');
|
|
||||||
$countSucceeded = 0;
|
|
||||||
$countFailed = 0;
|
|
||||||
$countSkipped = 0;
|
|
||||||
|
|
||||||
// Loop on every Migration sub classes
|
|
||||||
$success = [];
|
|
||||||
$fail = [];
|
|
||||||
foreach ($migrations as $migration) {
|
|
||||||
$className = get_class($migration);
|
|
||||||
|
|
||||||
// Check if $className is a Migration sub class
|
|
||||||
if (!$migration instanceof Migration) {
|
|
||||||
$smarty->assign('error', 'The class ' . $className . ' is not a sub class of Framadate\\Migration\\Migration.');
|
|
||||||
$smarty->display('error.tpl');
|
|
||||||
exit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the Migration is already executed
|
public function addLine($message)
|
||||||
$selectStmt->execute([$className]);
|
{
|
||||||
$executed = $selectStmt->rowCount();
|
$this->log .= $message . "\n";
|
||||||
$selectStmt->closeCursor();
|
}
|
||||||
|
|
||||||
if (!$executed && $migration->preCondition($pdo)) {
|
public function getLog()
|
||||||
$migration->execute($pdo);
|
{
|
||||||
if ($insertStmt->execute([$className])) {
|
return $this->log;
|
||||||
$countSucceeded++;
|
|
||||||
$success[] = $migration->description();
|
|
||||||
} else {
|
|
||||||
$countFailed++;
|
|
||||||
$fail[] = $migration->description();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$countSkipped++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$countTotal = $countSucceeded + $countFailed + $countSkipped;
|
$executing = false;
|
||||||
|
$migration = null;
|
||||||
|
$output = '';
|
||||||
|
|
||||||
$smarty->assign('success', $success);
|
if (isset($_POST['execute'])) {
|
||||||
$smarty->assign('fail', $fail);
|
$executing = true;
|
||||||
|
}
|
||||||
|
|
||||||
$smarty->assign('countSucceeded', $countSucceeded);
|
$migrationsDirectory = __DIR__ . '/../app/classes/Framadate/Migrations';
|
||||||
$smarty->assign('countFailed', $countFailed);
|
$log = new MigrationLogger();
|
||||||
$smarty->assign('countSkipped', $countSkipped);
|
|
||||||
$smarty->assign('countTotal', $countTotal);
|
|
||||||
$smarty->assign('time', $total_time = round((microtime(true)-$_SERVER['REQUEST_TIME_FLOAT']), 4));
|
|
||||||
|
|
||||||
|
$configuration = new Configuration($connect, new OutputWriter(function ($message) use ($log) {
|
||||||
|
$log->addLine($message);
|
||||||
|
}));
|
||||||
|
$configuration->setMigrationsTableName(Utils::table(MIGRATION_TABLE) . '_new');
|
||||||
|
$configuration->setMigrationsDirectory($migrationsDirectory);
|
||||||
|
$configuration->setMigrationsNamespace('DoctrineMigrations');
|
||||||
|
$configuration->registerMigrationsFromDirectory($migrationsDirectory);
|
||||||
|
|
||||||
|
if ($executing) {
|
||||||
|
$migration = new Migration($configuration);
|
||||||
|
$migration->migrate();
|
||||||
|
$output = trim(strip_tags($log->getLog()));
|
||||||
|
}
|
||||||
|
$infos = (new MigrationStatusInfosHelper($configuration))->getMigrationsInfos();
|
||||||
|
|
||||||
|
$smarty->assign('countTotal', $infos['Available Migrations']);
|
||||||
|
$smarty->assign('countExecuted', $infos['Executed Migrations']);
|
||||||
|
$smarty->assign('countWaiting', $infos['New Migrations']);
|
||||||
|
$smarty->assign('executing', $executing);
|
||||||
$smarty->assign('title', __('Admin', 'Migration'));
|
$smarty->assign('title', __('Admin', 'Migration'));
|
||||||
|
$smarty->assign('output', $output);
|
||||||
|
$smarty->assign('time', round((microtime(true)-$_SERVER['REQUEST_TIME_FLOAT']), 4));
|
||||||
$smarty->display('admin/migration.tpl');
|
$smarty->display('admin/migration.tpl');
|
||||||
|
@ -50,7 +50,7 @@ $logService = new LogService();
|
|||||||
$pollService = new PollService($connect, $logService);
|
$pollService = new PollService($connect, $logService);
|
||||||
$adminPollService = new AdminPollService($connect, $pollService, $logService);
|
$adminPollService = new AdminPollService($connect, $pollService, $logService);
|
||||||
$inputService = new InputService();
|
$inputService = new InputService();
|
||||||
$mailService = new MailService($config['use_smtp'], $config['smtp_options']);
|
$mailService = new MailService($config['use_smtp'], $config['smtp_options'], $config['use_sendmail']);
|
||||||
$notificationService = new NotificationService($mailService);
|
$notificationService = new NotificationService($mailService);
|
||||||
$sessionService = new SessionService();
|
$sessionService = new SessionService();
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ $messagePollCreated = $sessionService->get("Framadate", "messagePollCreated", FA
|
|||||||
|
|
||||||
if ($messagePollCreated) {
|
if ($messagePollCreated) {
|
||||||
$sessionService->remove("Framadate", "messagePollCreated");
|
$sessionService->remove("Framadate", "messagePollCreated");
|
||||||
|
|
||||||
$message = new Message('success', __('adminstuds', 'The poll is created.'));
|
$message = new Message('success', __('adminstuds', 'The poll is created.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,6 +219,11 @@ $selectedNewVotes = [];
|
|||||||
|
|
||||||
if (!empty($_POST['save'])) { // Save edition of an old vote
|
if (!empty($_POST['save'])) { // Save edition of an old vote
|
||||||
$name = $inputService->filterName($_POST['name']);
|
$name = $inputService->filterName($_POST['name']);
|
||||||
|
if(empty($_POST['mail']) || $inputService->filterMail($_POST['mail'])===false) {
|
||||||
|
$mail = null;
|
||||||
|
} else {
|
||||||
|
$mail = $inputService->filterMail($_POST['mail']);
|
||||||
|
}
|
||||||
$editedVote = filter_input(INPUT_POST, 'save', FILTER_VALIDATE_INT);
|
$editedVote = filter_input(INPUT_POST, 'save', FILTER_VALIDATE_INT);
|
||||||
$choices = $inputService->filterArray($_POST['choices'], FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => CHOICE_REGEX]]);
|
$choices = $inputService->filterArray($_POST['choices'], FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => CHOICE_REGEX]]);
|
||||||
$slots_hash = $inputService->filterMD5($_POST['control']);
|
$slots_hash = $inputService->filterMD5($_POST['control']);
|
||||||
@ -233,7 +238,7 @@ if (!empty($_POST['save'])) { // Save edition of an old vote
|
|||||||
if ($message === null) {
|
if ($message === null) {
|
||||||
// Update vote
|
// Update vote
|
||||||
try {
|
try {
|
||||||
$result = $pollService->updateVote($poll_id, $editedVote, $name, $choices, $slots_hash);
|
$result = $pollService->updateVote($poll_id, $editedVote, $name, $choices, $slots_hash, $mail);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$message = new Message('success', __('adminstuds', 'Vote updated'));
|
$message = new Message('success', __('adminstuds', 'Vote updated'));
|
||||||
} else {
|
} else {
|
||||||
@ -249,6 +254,11 @@ if (!empty($_POST['save'])) { // Save edition of an old vote
|
|||||||
}
|
}
|
||||||
} elseif (isset($_POST['save'])) { // Add a new vote
|
} elseif (isset($_POST['save'])) { // Add a new vote
|
||||||
$name = $inputService->filterName($_POST['name']);
|
$name = $inputService->filterName($_POST['name']);
|
||||||
|
if(empty($_POST['mail']) || $inputService->filterMail($_POST['mail'])===false) {
|
||||||
|
$mail = null;
|
||||||
|
} else {
|
||||||
|
$mail = $inputService->filterMail($_POST['mail']);
|
||||||
|
}
|
||||||
$choices = $inputService->filterArray($_POST['choices'], FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => CHOICE_REGEX]]);
|
$choices = $inputService->filterArray($_POST['choices'], FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => CHOICE_REGEX]]);
|
||||||
$slots_hash = $inputService->filterMD5($_POST['control']);
|
$slots_hash = $inputService->filterMD5($_POST['control']);
|
||||||
|
|
||||||
@ -262,7 +272,7 @@ if (!empty($_POST['save'])) { // Save edition of an old vote
|
|||||||
if ($message === null) {
|
if ($message === null) {
|
||||||
// Add vote
|
// Add vote
|
||||||
try {
|
try {
|
||||||
$result = $pollService->addVote($poll_id, $name, $choices, $slots_hash);
|
$result = $pollService->addVote($poll_id, $name, $choices, $slots_hash, $mail);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$message = new Message('success', __('adminstuds', 'Vote added'));
|
$message = new Message('success', __('adminstuds', 'Vote added'));
|
||||||
} else {
|
} else {
|
||||||
@ -398,6 +408,37 @@ if (isset($_GET['delete_column'])) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------
|
||||||
|
// Collect the mails of a column
|
||||||
|
// -------------------------------
|
||||||
|
|
||||||
|
if (isset($_GET['collect_mail'])) {
|
||||||
|
$column_str = strval(filter_input(INPUT_GET, 'collect_mail', FILTER_DEFAULT));
|
||||||
|
$column_str = strval(Utils::base64url_decode($column_str));
|
||||||
|
$column = intval($column_str);
|
||||||
|
$votes = $pollService->splitVotes($pollService->allVotesByPollId($poll_id));
|
||||||
|
$mails_yes = $mails_ifneedbe = $mails_no = [];
|
||||||
|
foreach ($votes as $vote) {
|
||||||
|
if (intval($vote->choices[$column]) === 2 && $vote->mail !== NULL) {
|
||||||
|
$mails_yes[] = $vote->mail;
|
||||||
|
} elseif (intval($vote->choices[$column]) === 1 && $vote->mail !== NULL) {
|
||||||
|
$mails_ifneedbe[] = $vote->mail;
|
||||||
|
} elseif($vote->mail !== NULL) {
|
||||||
|
$mails_no[] = $vote->mail;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$smarty->assign('poll_id', $poll_id);
|
||||||
|
$smarty->assign('admin_poll_id', $admin_poll_id);
|
||||||
|
$smarty->assign('admin', true);
|
||||||
|
$smarty->assign('title', __('Generic', 'Poll') . ' - ' . $poll->title . ' - ' . __('adminstuds', 'Collect the emails of the polled users for the choice'));
|
||||||
|
$smarty->assign('mails_yes', $mails_yes);
|
||||||
|
$smarty->assign('mails_ifneedbe', $mails_ifneedbe);
|
||||||
|
$smarty->assign('mails_no', $mails_no);
|
||||||
|
$smarty->display('display_mails.tpl');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------
|
// -------------------------------
|
||||||
// Add a slot
|
// Add a slot
|
||||||
// -------------------------------
|
// -------------------------------
|
||||||
|
54
app/classes/Framadate/AbstractMigration.php
Normal file
54
app/classes/Framadate/AbstractMigration.php
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace Framadate;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Migrations\AbstractMigration as DoctrineAbstractMigration;
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
|
||||||
|
abstract class AbstractMigration extends DoctrineAbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @param $class
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function legacyCheck(Schema $schema, $class)
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* If there's no legacy table, we can go on
|
||||||
|
*/
|
||||||
|
if (!$schema->hasTable(Utils::table(MIGRATION_TABLE))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$migration_table = $schema->getTable(Utils::table(MIGRATION_TABLE));
|
||||||
|
/**
|
||||||
|
* We check the migration table
|
||||||
|
*/
|
||||||
|
if ($migration_table->hasColumn('name')) {
|
||||||
|
/** @var $stmt \Doctrine\DBAL\Driver\Statement */
|
||||||
|
$stmt = $this->connection->prepare('SELECT * FROM ' . Utils::table(MIGRATION_TABLE) . ' WHERE name = ?');
|
||||||
|
$stmt->execute([$class]);
|
||||||
|
return $stmt->rowCount() > 0;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
35
app/classes/Framadate/CollectMail.php
Normal file
35
app/classes/Framadate/CollectMail.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Framadate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class CollectMail
|
||||||
|
*
|
||||||
|
* Is used to specify the poll's edition permissions.
|
||||||
|
* @TODO : wait to use the SplEnum
|
||||||
|
*
|
||||||
|
* @package Framadate
|
||||||
|
*/
|
||||||
|
class CollectMail { // extends SplEnum
|
||||||
|
const NO_COLLECT = 0;
|
||||||
|
const COLLECT = 1;
|
||||||
|
const COLLECT_REQUIRED = 2;
|
||||||
|
const COLLECT_REQUIRED_VERIFIED = 3;
|
||||||
|
}
|
@ -82,13 +82,21 @@ class Form
|
|||||||
*/
|
*/
|
||||||
public $results_publicly_visible;
|
public $results_publicly_visible;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tells if voters email addresses are collected or not.
|
||||||
|
* @var \Framadate\CollectMail
|
||||||
|
*/
|
||||||
|
public $collect_users_mail;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of available choices
|
* List of available choices
|
||||||
*/
|
*/
|
||||||
private $choices;
|
private $choices;
|
||||||
|
|
||||||
public function __construct(){
|
public function __construct()
|
||||||
|
{
|
||||||
$this->editable = Editable::EDITABLE_BY_ALL;
|
$this->editable = Editable::EDITABLE_BY_ALL;
|
||||||
|
$this->collect_users_mail = CollectMail::NO_COLLECT;
|
||||||
$this->clearChoices();
|
$this->clearChoices();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,85 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* This software is governed by the CeCILL-B license. If a copy of this license
|
|
||||||
* is not distributed with this file, you can obtain one at
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
|
||||||
*
|
|
||||||
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
|
||||||
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
|
||||||
*
|
|
||||||
* =============================
|
|
||||||
*
|
|
||||||
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
|
||||||
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
|
||||||
*
|
|
||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
|
||||||
*/
|
|
||||||
namespace Framadate;
|
|
||||||
|
|
||||||
use PDO;
|
|
||||||
|
|
||||||
class FramaDB {
|
|
||||||
/**
|
|
||||||
* PDO Object, connection to database.
|
|
||||||
*/
|
|
||||||
private $pdo = null;
|
|
||||||
|
|
||||||
function __construct($connection_string, $user, $password) {
|
|
||||||
$this->pdo = new \PDO($connection_string, $user, $password);
|
|
||||||
$this->pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_OBJ);
|
|
||||||
$this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return \PDO Connection to database
|
|
||||||
*/
|
|
||||||
function getPDO() {
|
|
||||||
return $this->pdo;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Find all tables in database.
|
|
||||||
*
|
|
||||||
* @return array The array of table names
|
|
||||||
*/
|
|
||||||
function allTables() {
|
|
||||||
$result = $this->pdo->query('SHOW TABLES');
|
|
||||||
$schemas = $result->fetchAll(\PDO::FETCH_COLUMN);
|
|
||||||
|
|
||||||
return $schemas;
|
|
||||||
}
|
|
||||||
|
|
||||||
function prepare($sql) {
|
|
||||||
return $this->pdo->prepare($sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
function beginTransaction() {
|
|
||||||
$this->pdo->beginTransaction();
|
|
||||||
}
|
|
||||||
|
|
||||||
function commit() {
|
|
||||||
$this->pdo->commit();
|
|
||||||
}
|
|
||||||
|
|
||||||
function rollback() {
|
|
||||||
$this->pdo->rollback();
|
|
||||||
}
|
|
||||||
|
|
||||||
function errorCode() {
|
|
||||||
return $this->pdo->errorCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
function errorInfo() {
|
|
||||||
return $this->pdo->errorInfo();
|
|
||||||
}
|
|
||||||
|
|
||||||
function query($sql) {
|
|
||||||
return $this->pdo->query($sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function lastInsertId() {
|
|
||||||
return $this->pdo->lastInsertId();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,75 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* This software is governed by the CeCILL-B license. If a copy of this license
|
|
||||||
* is not distributed with this file, you can obtain one at
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
|
||||||
*
|
|
||||||
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
|
||||||
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
|
||||||
*
|
|
||||||
* =============================
|
|
||||||
*
|
|
||||||
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
|
||||||
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
|
||||||
*
|
|
||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
|
||||||
*/
|
|
||||||
namespace Framadate\Migration;
|
|
||||||
|
|
||||||
use Framadate\Utils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This migration adds the field hidden on the poll table.
|
|
||||||
*
|
|
||||||
* @package Framadate\Migration
|
|
||||||
* @version 0.9
|
|
||||||
*/
|
|
||||||
class AddColumn_hidden_In_poll_For_0_9 implements Migration {
|
|
||||||
function __construct() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method should describe in english what is the purpose of the migration class.
|
|
||||||
*
|
|
||||||
* @return string The description of the migration class
|
|
||||||
*/
|
|
||||||
function description() {
|
|
||||||
return 'Add column "hidden" in table "vote" for version 0.9';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method could check if the execute method should be called.
|
|
||||||
* It is called before the execute method.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the Migration should be executed.
|
|
||||||
*/
|
|
||||||
function preCondition(\PDO $pdo) {
|
|
||||||
$stmt = $pdo->query('SHOW TABLES');
|
|
||||||
$tables = $stmt->fetchAll(\PDO::FETCH_COLUMN);
|
|
||||||
|
|
||||||
// Check if tables of v0.9 are presents
|
|
||||||
$diff = array_diff([Utils::table('poll'), Utils::table('slot'), Utils::table('vote'), Utils::table('comment')], $tables);
|
|
||||||
return count($diff) === 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is called only one time in the migration page.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the execution succeeded
|
|
||||||
*/
|
|
||||||
function execute(\PDO $pdo) {
|
|
||||||
$this->alterPollTable($pdo);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function alterPollTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
ALTER TABLE `' . Utils::table('poll') . '`
|
|
||||||
ADD `hidden` TINYINT( 1 ) NOT NULL DEFAULT "0"');
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,76 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* This software is governed by the CeCILL-B license. If a copy of this license
|
|
||||||
* is not distributed with this file, you can obtain one at
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
|
||||||
*
|
|
||||||
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
|
||||||
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
|
||||||
*
|
|
||||||
* =============================
|
|
||||||
*
|
|
||||||
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
|
||||||
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
|
||||||
*
|
|
||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
|
||||||
*/
|
|
||||||
namespace Framadate\Migration;
|
|
||||||
|
|
||||||
use Framadate\Utils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This migration adds the field receiveNewComments on the poll table.
|
|
||||||
*
|
|
||||||
* @package Framadate\Migration
|
|
||||||
* @version 0.9
|
|
||||||
*/
|
|
||||||
class AddColumn_receiveNewComments_For_0_9 implements Migration {
|
|
||||||
function __construct() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method should describe in english what is the purpose of the migration class.
|
|
||||||
*
|
|
||||||
* @return string The description of the migration class
|
|
||||||
*/
|
|
||||||
function description() {
|
|
||||||
return 'Add column "receiveNewComments" for version 0.9';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method could check if the execute method should be called.
|
|
||||||
* It is called before the execute method.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the Migration should be executed.
|
|
||||||
*/
|
|
||||||
function preCondition(\PDO $pdo) {
|
|
||||||
$stmt = $pdo->query('SHOW TABLES');
|
|
||||||
$tables = $stmt->fetchAll(\PDO::FETCH_COLUMN);
|
|
||||||
|
|
||||||
// Check if tables of v0.9 are presents
|
|
||||||
$diff = array_diff([Utils::table('poll'), Utils::table('slot'), Utils::table('vote'), Utils::table('comment')], $tables);
|
|
||||||
return count($diff) === 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is called only one time in the migration page.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the execution succeeded
|
|
||||||
*/
|
|
||||||
function execute(\PDO $pdo) {
|
|
||||||
$this->alterPollTable($pdo);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function alterPollTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
ALTER TABLE `' . Utils::table('poll') . '`
|
|
||||||
ADD `receiveNewComments` TINYINT(1) DEFAULT \'0\'
|
|
||||||
AFTER `receiveNewVotes`');
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,77 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* This software is governed by the CeCILL-B license. If a copy of this license
|
|
||||||
* is not distributed with this file, you can obtain one at
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
|
||||||
*
|
|
||||||
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
|
||||||
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
|
||||||
*
|
|
||||||
* =============================
|
|
||||||
*
|
|
||||||
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
|
||||||
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
|
||||||
*
|
|
||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
|
||||||
*/
|
|
||||||
namespace Framadate\Migration;
|
|
||||||
|
|
||||||
use Framadate\Utils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This migration adds the field uniqId on the vote table.
|
|
||||||
*
|
|
||||||
* @package Framadate\Migration
|
|
||||||
* @version 0.9
|
|
||||||
*/
|
|
||||||
class AddColumn_uniqId_In_vote_For_0_9 implements Migration {
|
|
||||||
function __construct() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method should describe in english what is the purpose of the migration class.
|
|
||||||
*
|
|
||||||
* @return string The description of the migration class
|
|
||||||
*/
|
|
||||||
function description() {
|
|
||||||
return 'Add column "uniqId" in table "vote" for version 0.9';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method could check if the execute method should be called.
|
|
||||||
* It is called before the execute method.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the Migration should be executed.
|
|
||||||
*/
|
|
||||||
function preCondition(\PDO $pdo) {
|
|
||||||
$stmt = $pdo->query('SHOW TABLES');
|
|
||||||
$tables = $stmt->fetchAll(\PDO::FETCH_COLUMN);
|
|
||||||
|
|
||||||
// Check if tables of v0.9 are presents
|
|
||||||
$diff = array_diff([Utils::table('poll'), Utils::table('slot'), Utils::table('vote'), Utils::table('comment')], $tables);
|
|
||||||
return count($diff) === 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is called only one time in the migration page.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the execution succeeded
|
|
||||||
*/
|
|
||||||
function execute(\PDO $pdo) {
|
|
||||||
$this->alterPollTable($pdo);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function alterPollTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
ALTER TABLE `' . Utils::table('vote') . '`
|
|
||||||
ADD `uniqId` CHAR(16) NOT NULL
|
|
||||||
AFTER `id`,
|
|
||||||
ADD INDEX (`uniqId`) ;');
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,76 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* This software is governed by the CeCILL-B license. If a copy of this license
|
|
||||||
* is not distributed with this file, you can obtain one at
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
|
||||||
*
|
|
||||||
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
|
||||||
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
|
||||||
*
|
|
||||||
* =============================
|
|
||||||
*
|
|
||||||
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
|
||||||
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
|
||||||
*
|
|
||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
|
||||||
*/
|
|
||||||
namespace Framadate\Migration;
|
|
||||||
|
|
||||||
use Framadate\Utils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This migration adds the fields password_hash and results_publicly_visible on the poll table.
|
|
||||||
*
|
|
||||||
* @package Framadate\Migration
|
|
||||||
* @version 0.9
|
|
||||||
*/
|
|
||||||
class AddColumns_password_hash_And_results_publicly_visible_In_poll_For_0_9 implements Migration {
|
|
||||||
function __construct() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method should describe in english what is the purpose of the migration class.
|
|
||||||
*
|
|
||||||
* @return string The description of the migration class
|
|
||||||
*/
|
|
||||||
function description() {
|
|
||||||
return 'Add columns "password_hash" and "results_publicly_visible" in table "vote" for version 0.9';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method could check if the execute method should be called.
|
|
||||||
* It is called before the execute method.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the Migration should be executed.
|
|
||||||
*/
|
|
||||||
function preCondition(\PDO $pdo) {
|
|
||||||
$stmt = $pdo->query('SHOW TABLES');
|
|
||||||
$tables = $stmt->fetchAll(\PDO::FETCH_COLUMN);
|
|
||||||
|
|
||||||
// Check if tables of v0.9 are presents
|
|
||||||
$diff = array_diff([Utils::table('poll'), Utils::table('slot'), Utils::table('vote'), Utils::table('comment')], $tables);
|
|
||||||
return count($diff) === 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is called only one time in the migration page.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the execution succeeded
|
|
||||||
*/
|
|
||||||
function execute(\PDO $pdo) {
|
|
||||||
$this->alterPollTable($pdo);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function alterPollTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
ALTER TABLE `' . Utils::table('poll') . '`
|
|
||||||
ADD `password_hash` VARCHAR(255) NULL DEFAULT NULL ,
|
|
||||||
ADD `results_publicly_visible` TINYINT(1) NULL DEFAULT NULL');
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,70 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* This software is governed by the CeCILL-B license. If a copy of this license
|
|
||||||
* is not distributed with this file, you can obtain one at
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
|
||||||
*
|
|
||||||
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
|
||||||
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
|
||||||
*
|
|
||||||
* =============================
|
|
||||||
*
|
|
||||||
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
|
||||||
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
|
||||||
*
|
|
||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
|
||||||
*/
|
|
||||||
namespace Framadate\Migration;
|
|
||||||
|
|
||||||
use Framadate\Utils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This migration sets Poll.end_date to NULL by default
|
|
||||||
*
|
|
||||||
* @package Framadate\Migration
|
|
||||||
* @version 1.1
|
|
||||||
*/
|
|
||||||
class Fix_MySQL_No_Zero_Date implements Migration {
|
|
||||||
function __construct() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method should describe in english what is the purpose of the migration class.
|
|
||||||
*
|
|
||||||
* @return string The description of the migration class
|
|
||||||
*/
|
|
||||||
function description() {
|
|
||||||
return 'Sets Poll end_date to NULL by default (work around MySQL NO_ZERO_DATE)';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method could check if the execute method should be called.
|
|
||||||
* It is called before the execute method.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true if the Migration should be executed.
|
|
||||||
*/
|
|
||||||
function preCondition(\PDO $pdo) {
|
|
||||||
$stmt = $pdo->prepare("SELECT Column_Default from Information_Schema.Columns where Table_Name = ? AND Column_Name = ?;");
|
|
||||||
$stmt->bindValue(1, Utils::table('poll'));
|
|
||||||
$stmt->bindValue(2, 'end_date');
|
|
||||||
$stmt->execute();
|
|
||||||
$default = $stmt->fetch(\PDO::FETCH_COLUMN);
|
|
||||||
|
|
||||||
$driver_name = $pdo->getAttribute(\PDO::ATTR_DRIVER_NAME);
|
|
||||||
|
|
||||||
return $default !== null && $driver_name === 'mysql';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is called only one time in the migration page.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool|void if the execution succeeded
|
|
||||||
*/
|
|
||||||
function execute(\PDO $pdo) {
|
|
||||||
$pdo->exec('ALTER TABLE ' . Utils::table('poll') . ' MODIFY end_date TIMESTAMP NULL DEFAULT NULL;');
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,108 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* This software is governed by the CeCILL-B license. If a copy of this license
|
|
||||||
* is not distributed with this file, you can obtain one at
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
|
||||||
*
|
|
||||||
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
|
||||||
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
|
||||||
*
|
|
||||||
* =============================
|
|
||||||
*
|
|
||||||
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
|
||||||
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
|
||||||
*
|
|
||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
|
||||||
*/
|
|
||||||
namespace Framadate\Migration;
|
|
||||||
|
|
||||||
use Framadate\Utils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class From_0_0_to_0_8_Migration
|
|
||||||
*
|
|
||||||
* @package Framadate\Migration
|
|
||||||
* @version 0.8
|
|
||||||
*/
|
|
||||||
class From_0_0_to_0_8_Migration implements Migration {
|
|
||||||
function __construct() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method should describe in english what is the purpose of the migration class.
|
|
||||||
*
|
|
||||||
* @return string The description of the migration class
|
|
||||||
*/
|
|
||||||
function description() {
|
|
||||||
return 'First installation of the Framadate application (v0.8)';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method could check if the execute method should be called.
|
|
||||||
* It is called before the execute method.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the Migration should be executed.
|
|
||||||
*/
|
|
||||||
function preCondition(\PDO $pdo) {
|
|
||||||
$stmt = $pdo->query('SHOW TABLES like \'' . TABLENAME_PREFIX . '%\''); //issue187 : pouvoir installer framadate dans une base contenant d'autres tables.
|
|
||||||
$tables = $stmt->fetchAll(\PDO::FETCH_COLUMN);
|
|
||||||
|
|
||||||
// Check if there is no tables but the MIGRATION_TABLE one
|
|
||||||
$diff = array_diff($tables, [Utils::table(MIGRATION_TABLE)]);
|
|
||||||
return count($diff) === 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is called only one time in the migration page.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the execution succeeded
|
|
||||||
*/
|
|
||||||
function execute(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
CREATE TABLE IF NOT EXISTS `sondage` (
|
|
||||||
`id_sondage` char(16) NOT NULL,
|
|
||||||
`commentaires` text,
|
|
||||||
`mail_admin` varchar(128) DEFAULT NULL,
|
|
||||||
`nom_admin` varchar(64) DEFAULT NULL,
|
|
||||||
`titre` text,
|
|
||||||
`id_sondage_admin` char(24) DEFAULT NULL,
|
|
||||||
`date_creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
`date_fin` timestamp NULL DEFAULT NULL,
|
|
||||||
`format` varchar(2) DEFAULT NULL,
|
|
||||||
`mailsonde` tinyint(1) DEFAULT \'0\',
|
|
||||||
`statut` int(11) NOT NULL DEFAULT \'1\' COMMENT \'1 = actif ; 0 = inactif ; \',
|
|
||||||
UNIQUE KEY `id_sondage` (`id_sondage`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
|
|
||||||
|
|
||||||
$pdo->exec('
|
|
||||||
CREATE TABLE IF NOT EXISTS `sujet_studs` (
|
|
||||||
`id_sondage` char(16) NOT NULL,
|
|
||||||
`sujet` text,
|
|
||||||
KEY `id_sondage` (`id_sondage`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
|
|
||||||
|
|
||||||
$pdo->exec('
|
|
||||||
CREATE TABLE IF NOT EXISTS `comments` (
|
|
||||||
`id_comment` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
|
||||||
`id_sondage` char(16) NOT NULL,
|
|
||||||
`comment` text NOT NULL,
|
|
||||||
`usercomment` text,
|
|
||||||
PRIMARY KEY (`id_comment`),
|
|
||||||
KEY `id_sondage` (`id_sondage`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;');
|
|
||||||
|
|
||||||
$pdo->exec('
|
|
||||||
CREATE TABLE IF NOT EXISTS `user_studs` (
|
|
||||||
`id_users` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
|
||||||
`nom` varchar(64) NOT NULL,
|
|
||||||
`id_sondage` char(16) NOT NULL,
|
|
||||||
`reponses` text NOT NULL,
|
|
||||||
PRIMARY KEY (`id_users`),
|
|
||||||
KEY `id_sondage` (`id_sondage`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;');
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,292 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* This software is governed by the CeCILL-B license. If a copy of this license
|
|
||||||
* is not distributed with this file, you can obtain one at
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
|
||||||
*
|
|
||||||
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
|
||||||
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
|
||||||
*
|
|
||||||
* =============================
|
|
||||||
*
|
|
||||||
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
|
||||||
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
|
||||||
*
|
|
||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
|
||||||
*/
|
|
||||||
namespace Framadate\Migration;
|
|
||||||
|
|
||||||
use Framadate\Utils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class executes the aciton in database to migrate data from version 0.8 to 0.9.
|
|
||||||
*
|
|
||||||
* @package Framadate\Migration
|
|
||||||
* @version 0.9
|
|
||||||
*/
|
|
||||||
class From_0_8_to_0_9_Migration implements Migration {
|
|
||||||
function __construct() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method should describe in english what is the purpose of the migration class.
|
|
||||||
*
|
|
||||||
* @return string The description of the migration class
|
|
||||||
*/
|
|
||||||
function description() {
|
|
||||||
return 'From 0.8 to 0.9';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method could check if the execute method should be called.
|
|
||||||
* It is called before the execute method.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the Migration should be executed.
|
|
||||||
*/
|
|
||||||
function preCondition(\PDO $pdo) {
|
|
||||||
$stmt = $pdo->query('SHOW TABLES');
|
|
||||||
$tables = $stmt->fetchAll(\PDO::FETCH_COLUMN);
|
|
||||||
|
|
||||||
// Check if tables of v0.8 are presents
|
|
||||||
$diff = array_diff(['sondage', 'sujet_studs', 'comments', 'user_studs'], $tables);
|
|
||||||
return count($diff) === 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is called only one time in the migration page.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the execution succeeded
|
|
||||||
*/
|
|
||||||
function execute(\PDO $pdo) {
|
|
||||||
$this->createPollTable($pdo);
|
|
||||||
$this->createCommentTable($pdo);
|
|
||||||
$this->createSlotTable($pdo);
|
|
||||||
$this->createVoteTable($pdo);
|
|
||||||
|
|
||||||
$pdo->beginTransaction();
|
|
||||||
$this->migrateFromSondageToPoll($pdo);
|
|
||||||
$this->migrateFromCommentsToComment($pdo);
|
|
||||||
$this->migrateFromSujetStudsToSlot($pdo);
|
|
||||||
$this->migrateFromUserStudsToVote($pdo);
|
|
||||||
$pdo->commit();
|
|
||||||
|
|
||||||
$this->dropOldTables($pdo);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function createPollTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
CREATE TABLE IF NOT EXISTS `' . Utils::table('poll') . '` (
|
|
||||||
`id` CHAR(16) NOT NULL,
|
|
||||||
`admin_id` CHAR(24) NOT NULL,
|
|
||||||
`title` TEXT NOT NULL,
|
|
||||||
`description` TEXT,
|
|
||||||
`admin_name` VARCHAR(64) DEFAULT NULL,
|
|
||||||
`admin_mail` VARCHAR(128) DEFAULT NULL,
|
|
||||||
`creation_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
`end_date` TIMESTAMP NULL DEFAULT NULL,
|
|
||||||
`format` VARCHAR(1) DEFAULT NULL,
|
|
||||||
`editable` TINYINT(1) DEFAULT \'0\',
|
|
||||||
`receiveNewVotes` TINYINT(1) DEFAULT \'0\',
|
|
||||||
`active` TINYINT(1) DEFAULT \'1\',
|
|
||||||
PRIMARY KEY (`id`)
|
|
||||||
)
|
|
||||||
ENGINE = InnoDB
|
|
||||||
DEFAULT CHARSET = utf8');
|
|
||||||
}
|
|
||||||
|
|
||||||
private function migrateFromSondageToPoll(\PDO $pdo) {
|
|
||||||
$select = $pdo->query('
|
|
||||||
SELECT
|
|
||||||
`id_sondage`,
|
|
||||||
`id_sondage_admin`,
|
|
||||||
`titre`,
|
|
||||||
`commentaires`,
|
|
||||||
`nom_admin`,
|
|
||||||
`mail_admin`,
|
|
||||||
`date_creation`,
|
|
||||||
`date_fin`,
|
|
||||||
SUBSTR(`format`, 1, 1) AS `format`,
|
|
||||||
CASE SUBSTR(`format`, 2, 1)
|
|
||||||
WHEN \'+\' THEN 1
|
|
||||||
ELSE 0 END AS `editable`,
|
|
||||||
`mailsonde`,
|
|
||||||
CASE SUBSTR(`format`, 2, 1)
|
|
||||||
WHEN \'-\' THEN 0
|
|
||||||
ELSE 1 END AS `active`
|
|
||||||
FROM sondage');
|
|
||||||
|
|
||||||
$insert = $pdo->prepare('
|
|
||||||
INSERT INTO `' . Utils::table('poll') . '`
|
|
||||||
(`id`, `admin_id`, `title`, `description`, `admin_name`, `admin_mail`, `creation_date`, `end_date`, `format`, `editable`, `receiveNewVotes`, `active`)
|
|
||||||
VALUE (?,?,?,?,?,?,?,?,?,?,?,?)');
|
|
||||||
|
|
||||||
while ($row = $select->fetch(\PDO::FETCH_OBJ)) {
|
|
||||||
$insert->execute([
|
|
||||||
$row->id_sondage,
|
|
||||||
$row->id_sondage_admin,
|
|
||||||
$this->unescape($row->titre),
|
|
||||||
$this->unescape($row->commentaires),
|
|
||||||
$this->unescape($row->nom_admin),
|
|
||||||
$this->unescape($row->mail_admin),
|
|
||||||
$row->date_creation,
|
|
||||||
$row->date_fin,
|
|
||||||
$row->format,
|
|
||||||
$row->editable,
|
|
||||||
$row->mailsonde,
|
|
||||||
$row->active
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function createSlotTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
CREATE TABLE IF NOT EXISTS `' . Utils::table('slot') . '` (
|
|
||||||
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
||||||
`poll_id` CHAR(16) NOT NULL,
|
|
||||||
`title` TEXT,
|
|
||||||
`moments` TEXT,
|
|
||||||
PRIMARY KEY (`id`),
|
|
||||||
KEY `poll_id` (`poll_id`)
|
|
||||||
)
|
|
||||||
ENGINE = InnoDB
|
|
||||||
DEFAULT CHARSET = utf8');
|
|
||||||
}
|
|
||||||
|
|
||||||
private function migrateFromSujetStudsToSlot(\PDO $pdo) {
|
|
||||||
$stmt = $pdo->query('SELECT * FROM sujet_studs');
|
|
||||||
$sujets = $stmt->fetchAll();
|
|
||||||
$slots = [];
|
|
||||||
|
|
||||||
foreach ($sujets as $sujet) {
|
|
||||||
$newSlots = $this->transformSujetToSlot($sujet);
|
|
||||||
foreach ($newSlots as $newSlot) {
|
|
||||||
$slots[] = $newSlot;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$prepared = $pdo->prepare('INSERT INTO ' . Utils::table('slot') . ' (`poll_id`, `title`, `moments`) VALUE (?,?,?)');
|
|
||||||
foreach ($slots as $slot) {
|
|
||||||
$prepared->execute([
|
|
||||||
$slot->poll_id,
|
|
||||||
$this->unescape($slot->title),
|
|
||||||
!empty($slot->moments) ? $this->unescape($slot->moments) : null
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function createCommentTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
CREATE TABLE IF NOT EXISTS `' . Utils::table('comment') . '` (
|
|
||||||
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
||||||
`poll_id` CHAR(16) NOT NULL,
|
|
||||||
`name` TEXT,
|
|
||||||
`comment` TEXT NOT NULL,
|
|
||||||
PRIMARY KEY (`id`),
|
|
||||||
KEY `poll_id` (`poll_id`)
|
|
||||||
)
|
|
||||||
ENGINE = InnoDB
|
|
||||||
DEFAULT CHARSET = utf8');
|
|
||||||
}
|
|
||||||
|
|
||||||
private function migrateFromCommentsToComment(\PDO $pdo) {
|
|
||||||
$select = $pdo->query('
|
|
||||||
SELECT
|
|
||||||
`id_sondage`,
|
|
||||||
`usercomment`,
|
|
||||||
`comment`
|
|
||||||
FROM `comments`');
|
|
||||||
|
|
||||||
$insert = $pdo->prepare('
|
|
||||||
INSERT INTO `' . Utils::table('comment') . '` (`poll_id`, `name`, `comment`)
|
|
||||||
VALUE (?,?,?)');
|
|
||||||
|
|
||||||
while ($row = $select->fetch(\PDO::FETCH_OBJ)) {
|
|
||||||
$insert->execute([
|
|
||||||
$row->id_sondage,
|
|
||||||
$this->unescape($row->usercomment),
|
|
||||||
$this->unescape($row->comment)
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function createVoteTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
CREATE TABLE IF NOT EXISTS `' . Utils::table('vote') . '` (
|
|
||||||
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
||||||
`poll_id` CHAR(16) NOT NULL,
|
|
||||||
`name` VARCHAR(64) NOT NULL,
|
|
||||||
`choices` TEXT NOT NULL,
|
|
||||||
PRIMARY KEY (`id`),
|
|
||||||
KEY `poll_id` (`poll_id`)
|
|
||||||
)
|
|
||||||
ENGINE = InnoDB
|
|
||||||
DEFAULT CHARSET = utf8');
|
|
||||||
}
|
|
||||||
|
|
||||||
private function migrateFromUserStudsToVote(\PDO $pdo) {
|
|
||||||
$select = $pdo->query('
|
|
||||||
SELECT
|
|
||||||
`id_sondage`,
|
|
||||||
`nom`,
|
|
||||||
REPLACE(REPLACE(REPLACE(`reponses`, 1, \'X\'), 2, 1), \'X\', 2) reponses
|
|
||||||
FROM `user_studs`');
|
|
||||||
|
|
||||||
$insert = $pdo->prepare('
|
|
||||||
INSERT INTO `' . Utils::table('vote') . '` (`poll_id`, `name`, `choices`)
|
|
||||||
VALUE (?,?,?)');
|
|
||||||
|
|
||||||
while ($row = $select->fetch(\PDO::FETCH_OBJ)) {
|
|
||||||
$insert->execute([
|
|
||||||
$row->id_sondage,
|
|
||||||
$this->unescape($row->nom),
|
|
||||||
$row->reponses
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function transformSujetToSlot($sujet) {
|
|
||||||
$slots = [];
|
|
||||||
$ex = explode(',', $sujet->sujet);
|
|
||||||
$isDatePoll = strpos($sujet->sujet, '@');
|
|
||||||
$lastSlot = null;
|
|
||||||
|
|
||||||
foreach ($ex as $atomicSlot) {
|
|
||||||
if ($isDatePoll === false) { // Classic poll
|
|
||||||
$slot = new \stdClass();
|
|
||||||
$slot->poll_id = $sujet->id_sondage;
|
|
||||||
$slot->title = $atomicSlot;
|
|
||||||
$slots[] = $slot;
|
|
||||||
} else { // Date poll
|
|
||||||
$values = explode('@', $atomicSlot);
|
|
||||||
if ($lastSlot === null || $lastSlot->title !== $values[0]) {
|
|
||||||
$lastSlot = new \stdClass();
|
|
||||||
$lastSlot->poll_id = $sujet->id_sondage;
|
|
||||||
$lastSlot->title = $values[0];
|
|
||||||
$lastSlot->moments = count($values) === 2 ? $values[1] : '-';
|
|
||||||
$slots[] = $lastSlot;
|
|
||||||
} else {
|
|
||||||
$lastSlot->moments .= ',' . (count($values) === 2 ? $values[1] : '-');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $slots;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function dropOldTables(\PDO $pdo) {
|
|
||||||
$pdo->exec('DROP TABLE `comments`');
|
|
||||||
$pdo->exec('DROP TABLE `sujet_studs`');
|
|
||||||
$pdo->exec('DROP TABLE `user_studs`');
|
|
||||||
$pdo->exec('DROP TABLE `sondage`');
|
|
||||||
}
|
|
||||||
|
|
||||||
private function unescape($value) {
|
|
||||||
return stripslashes(html_entity_decode($value, ENT_QUOTES));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,80 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* This software is governed by the CeCILL-B license. If a copy of this license
|
|
||||||
* is not distributed with this file, you can obtain one at
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
|
||||||
*
|
|
||||||
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
|
||||||
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
|
||||||
*
|
|
||||||
* =============================
|
|
||||||
*
|
|
||||||
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
|
||||||
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
|
||||||
*
|
|
||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
|
||||||
*/
|
|
||||||
namespace Framadate\Migration;
|
|
||||||
|
|
||||||
use Framadate\Security\Token;
|
|
||||||
use Framadate\Utils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This migration generate uniqId for all legacy votes.
|
|
||||||
*
|
|
||||||
* @package Framadate\Migration
|
|
||||||
* @version 0.9
|
|
||||||
*/
|
|
||||||
class Generate_uniqId_for_old_votes implements Migration {
|
|
||||||
function __construct() {
|
|
||||||
}
|
|
||||||
|
|
||||||
function description() {
|
|
||||||
return 'Generate "uniqId" in "vote" table for all legacy votes';
|
|
||||||
}
|
|
||||||
|
|
||||||
function preCondition(\PDO $pdo) {
|
|
||||||
$stmt = $pdo->query('SHOW TABLES');
|
|
||||||
$tables = $stmt->fetchAll(\PDO::FETCH_COLUMN);
|
|
||||||
|
|
||||||
// Check if tables of v0.9 are presents
|
|
||||||
$diff = array_diff([Utils::table('poll'), Utils::table('slot'), Utils::table('vote'), Utils::table('comment')], $tables);
|
|
||||||
return count($diff) === 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This methode is called only one time in the migration page.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the execution succeeded
|
|
||||||
*/
|
|
||||||
function execute(\PDO $pdo) {
|
|
||||||
$pdo->beginTransaction();
|
|
||||||
$this->generateUniqIdsForEmptyOnes($pdo);
|
|
||||||
$pdo->commit();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function generateUniqIdsForEmptyOnes($pdo) {
|
|
||||||
$select = $pdo->query('
|
|
||||||
SELECT `id`
|
|
||||||
FROM `' . Utils::table('vote') . '`
|
|
||||||
WHERE `uniqid` = \'\'');
|
|
||||||
|
|
||||||
$update = $pdo->prepare('
|
|
||||||
UPDATE `' . Utils::table('vote') . '`
|
|
||||||
SET `uniqid` = :uniqid
|
|
||||||
WHERE `id` = :id');
|
|
||||||
|
|
||||||
while ($row = $select->fetch(\PDO::FETCH_OBJ)) {
|
|
||||||
$token = Token::getToken(16);
|
|
||||||
$update->execute([
|
|
||||||
'uniqid' => $token,
|
|
||||||
'id' => $row->id
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace Framadate\Migration;
|
|
||||||
|
|
||||||
use Framadate\Utils;
|
|
||||||
|
|
||||||
class Increase_pollId_size implements Migration {
|
|
||||||
function __construct() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method should describe in english what is the purpose of the migration class.
|
|
||||||
*
|
|
||||||
* @return string The description of the migration class
|
|
||||||
*/
|
|
||||||
function description() {
|
|
||||||
return 'Increase the size of id column in poll table';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method could check if the execute method should be called.
|
|
||||||
* It is called before the execute method.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true if the Migration should be executed
|
|
||||||
*/
|
|
||||||
function preCondition(\PDO $pdo) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This methode is called only one time in the migration page.
|
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true if the execution succeeded
|
|
||||||
*/
|
|
||||||
function execute(\PDO $pdo) {
|
|
||||||
$this->alterCommentTable($pdo);
|
|
||||||
$this->alterPollTable($pdo);
|
|
||||||
$this->alterSlotTable($pdo);
|
|
||||||
$this->alterVoteTable($pdo);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function alterCommentTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
ALTER TABLE `' . Utils::table('comment') . '`
|
|
||||||
CHANGE `poll_id` `poll_id` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;');
|
|
||||||
}
|
|
||||||
|
|
||||||
private function alterPollTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
ALTER TABLE `' . Utils::table('poll') . '`
|
|
||||||
CHANGE `id` `id` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;');
|
|
||||||
}
|
|
||||||
|
|
||||||
private function alterSlotTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
ALTER TABLE `' . Utils::table('slot') . '`
|
|
||||||
CHANGE `poll_id` `poll_id` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;');
|
|
||||||
}
|
|
||||||
|
|
||||||
private function alterVoteTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
ALTER TABLE `' . Utils::table('vote') . '`
|
|
||||||
CHANGE `poll_id` `poll_id` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;');
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* This software is governed by the CeCILL-B license. If a copy of this license
|
|
||||||
* is not distributed with this file, you can obtain one at
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
|
||||||
*
|
|
||||||
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
|
||||||
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
|
||||||
*
|
|
||||||
* =============================
|
|
||||||
*
|
|
||||||
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
|
||||||
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
|
||||||
*
|
|
||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
|
||||||
*/
|
|
||||||
namespace Framadate\Migration;
|
|
||||||
|
|
||||||
use Framadate\Utils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This migration RPad votes from version 0.8.
|
|
||||||
* Because some votes does not have enough values for their poll.
|
|
||||||
*
|
|
||||||
* @package Framadate\Migration
|
|
||||||
* @version 0.9
|
|
||||||
*/
|
|
||||||
class RPadVotes_from_0_8 implements Migration {
|
|
||||||
function description() {
|
|
||||||
return 'RPad votes from version 0.8.';
|
|
||||||
}
|
|
||||||
|
|
||||||
function preCondition(\PDO $pdo) {
|
|
||||||
$stmt = $pdo->query('SHOW TABLES');
|
|
||||||
$tables = $stmt->fetchAll(\PDO::FETCH_COLUMN);
|
|
||||||
|
|
||||||
// Check if tables of v0.9 are presents
|
|
||||||
$diff = array_diff([Utils::table('poll'), Utils::table('slot'), Utils::table('vote'), Utils::table('comment')], $tables);
|
|
||||||
return count($diff) === 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
function execute(\PDO $pdo) {
|
|
||||||
$pdo->beginTransaction();
|
|
||||||
$this->rpadVotes($pdo);
|
|
||||||
$pdo->commit();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function rpadVotes($pdo) {
|
|
||||||
$pdo->exec('UPDATE ' . Utils::table('vote') . ' fv
|
|
||||||
INNER JOIN (
|
|
||||||
SELECT v.id, RPAD(v.choices, inn.slots_count, \'0\') new_choices
|
|
||||||
FROM ' . Utils::table('vote') . ' v
|
|
||||||
INNER JOIN
|
|
||||||
(SELECT s.poll_id, SUM(IFNULL(LENGTH(s.moments) - LENGTH(REPLACE(s.moments, \',\', \'\')) + 1, 1)) slots_count
|
|
||||||
FROM ' . Utils::table('slot') . ' s
|
|
||||||
GROUP BY s.poll_id
|
|
||||||
ORDER BY s.poll_id) inn ON inn.poll_id = v.poll_id
|
|
||||||
WHERE LENGTH(v.choices) != inn.slots_count
|
|
||||||
) computed ON fv.id = computed.id
|
|
||||||
SET fv.choices = computed.new_choices');
|
|
||||||
}
|
|
||||||
}
|
|
99
app/classes/Framadate/Migrations/Version20150101000000.php
Normal file
99
app/classes/Framadate/Migrations/Version20150101000000.php
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class From_0_0_to_0_8_Migration
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 0.8
|
||||||
|
*/
|
||||||
|
class Version20150101000000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'First installation of the Framadate application (v0.8)';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called only one time in the migration page.
|
||||||
|
*
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
* @return void true is the execution succeeded
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema,'Framadate\Migration\From_0_0_to_0_8_Migration'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
$sondage = $schema->createTable('sondage');
|
||||||
|
$sondage->addColumn('id_sondage', 'string');
|
||||||
|
$sondage->addColumn('commentaires', 'text');
|
||||||
|
$sondage->addColumn('mail_admin', 'string', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('nom_admin', 'string', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('titre', 'text');
|
||||||
|
$sondage->addColumn('id_sondage_admin', 'string', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('date_creation', 'datetime', ['default' => (new \DateTime())->format('Y-m-d H:i:s')]);
|
||||||
|
$sondage->addColumn('date_fin', 'datetime', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('format', 'string', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('mailsonde', 'boolean', ['default' => false]);
|
||||||
|
$sondage->addColumn('statut', 'integer', ['default' => '1']);
|
||||||
|
$sondage->addUniqueIndex(['id_sondage'], 'sondage_index_id_sondage');
|
||||||
|
|
||||||
|
$sujetStuds = $schema->createTable('sujet_studs');
|
||||||
|
$sujetStuds->addColumn('id_sondage', 'string');
|
||||||
|
$sujetStuds->addColumn('sujet', 'text');
|
||||||
|
$sujetStuds->addIndex(['id_sondage'], 'sujet_studs_index_id_sondage');
|
||||||
|
|
||||||
|
$comments = $schema->createTable('comments');
|
||||||
|
$schema->createSequence('comments_seq');
|
||||||
|
$comments->addColumn('id_comment', 'integer', ['autoincrement' => true]);
|
||||||
|
$comments->addColumn('id_sondage', 'string');
|
||||||
|
$comments->addColumn('comment', 'text');
|
||||||
|
$comments->addColumn('usercomment', 'text', ['notnull' => false]);
|
||||||
|
$comments->addUniqueIndex(['id_comment'], 'comments_index_id_comment');
|
||||||
|
$comments->addIndex(['id_sondage'], 'comments_index_id_sondage');
|
||||||
|
|
||||||
|
$userStuds = $schema->createTable('user_studs');
|
||||||
|
$schema->createSequence('user_studs_seq');
|
||||||
|
$userStuds->addColumn('id_users', 'integer', ['autoincrement' => true]);
|
||||||
|
$userStuds->addColumn('nom', 'string');
|
||||||
|
$userStuds->addColumn('id_sondage', 'string');
|
||||||
|
$userStuds->addColumn('reponses', 'text');
|
||||||
|
$userStuds->addUniqueIndex(['id_users'], 'user_studs_index_id_users');
|
||||||
|
$userStuds->addIndex(['id_sondage'], 'user_studs_index_id_sondage');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->addSql('DROP TABLE sondage');
|
||||||
|
$this->addSql('DROP TABLE sujet_studs');
|
||||||
|
$this->addSql('DROP TABLE comments');
|
||||||
|
$this->addSql('DROP TABLE user_studs');
|
||||||
|
}
|
||||||
|
}
|
160
app/classes/Framadate/Migrations/Version20150102000000.php
Normal file
160
app/classes/Framadate/Migrations/Version20150102000000.php
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class executes the aciton in database to migrate data from version 0.8 to 0.9.
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 0.9
|
||||||
|
*/
|
||||||
|
class Version20150102000000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'From 0.8 to 0.9 first part';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema,'Framadate\Migration\From_0_8_to_0_9_Migration'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
foreach (['sondage', 'sujet_studs', 'comments', 'user_studs'] as $table) {
|
||||||
|
$this->skipIf(!$schema->hasTable($table), 'Missing table ' . $table);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->createPollTable($schema);
|
||||||
|
$this->createCommentTable($schema);
|
||||||
|
$this->createSlotTable($schema);
|
||||||
|
$this->createVoteTable($schema);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$sondage = $schema->createTable('sondage');
|
||||||
|
$sondage->addColumn('id_sondage', 'string');
|
||||||
|
$sondage->addColumn('commentaires', 'text');
|
||||||
|
$sondage->addColumn('mail_admin', 'string', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('nom_admin', 'string', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('titre', 'text');
|
||||||
|
$sondage->addColumn('id_sondage_admin', 'string', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('date_creation', 'datetime', ['default' => (new \DateTime())->format('Y-m-d H:i:s')]);
|
||||||
|
$sondage->addColumn('date_fin', 'datetime', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('format', 'string', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('mailsonde', 'boolean', ['default' => false]);
|
||||||
|
$sondage->addColumn('statut', 'integer', ['default' => '1']);
|
||||||
|
$sondage->addUniqueIndex(['id_sondage'], 'sondage_index_id_sondage');
|
||||||
|
|
||||||
|
$sujetStuds = $schema->createTable('sujet_studs');
|
||||||
|
$sujetStuds->addColumn('id_sondage', 'string');
|
||||||
|
$sujetStuds->addColumn('sujet', 'text');
|
||||||
|
$sujetStuds->addIndex(['id_sondage'], 'sujet_studs_index_id_sondage');
|
||||||
|
|
||||||
|
$comments = $schema->createTable('comments');
|
||||||
|
$schema->createSequence('comments_seq');
|
||||||
|
$comments->addColumn('id_comment', 'integer', ['autoincrement' => true]);
|
||||||
|
$comments->addColumn('id_sondage', 'string');
|
||||||
|
$comments->addColumn('comment', 'text');
|
||||||
|
$comments->addColumn('usercomment', 'text', ['notnull' => false]);
|
||||||
|
$comments->addUniqueIndex(['id_comment'], 'comments_index_id_comment');
|
||||||
|
$comments->addIndex(['id_sondage'], 'comments_index_id_sondage');
|
||||||
|
|
||||||
|
$userStuds = $schema->createTable('user_studs');
|
||||||
|
$schema->createSequence('user_studs_seq');
|
||||||
|
$userStuds->addColumn('id_users', 'integer', ['autoincrement' => true]);
|
||||||
|
$userStuds->addColumn('nom', 'string');
|
||||||
|
$userStuds->addColumn('id_sondage', 'string');
|
||||||
|
$userStuds->addColumn('reponses', 'text');
|
||||||
|
$userStuds->addUniqueIndex(['id_users'], 'user_studs_index_id_users');
|
||||||
|
$userStuds->addIndex(['id_sondage'], 'user_studs_index_id_sondage');
|
||||||
|
|
||||||
|
$schema->dropTable(Utils::table('poll'));
|
||||||
|
$schema->dropTable(Utils::table('comment'));
|
||||||
|
$schema->dropTable(Utils::table('vote'));
|
||||||
|
$schema->dropTable(Utils::table('slot'));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function createPollTable(Schema $schema)
|
||||||
|
{
|
||||||
|
$poll = $schema->createTable(Utils::table('poll'));
|
||||||
|
$poll->addColumn('id', 'string');
|
||||||
|
$poll->addColumn('admin_id', 'string');
|
||||||
|
$poll->addColumn('title', 'text');
|
||||||
|
$poll->addColumn('description', 'text', ['notnull' => false]);
|
||||||
|
$poll->addColumn('admin_name', 'string');
|
||||||
|
$poll->addColumn('admin_mail', 'string', ['notnull' => false]);
|
||||||
|
$poll->addColumn('creation_date', 'datetime', ['default' => (new \DateTime())->format('Y-m-d H:i:s')]);
|
||||||
|
$poll->addColumn('end_date', 'datetime', ['notnull' => false]);
|
||||||
|
$poll->addColumn('format', 'string', ['default' => null, 'notnull' => false]);
|
||||||
|
$poll->addColumn('editable', 'integer', ['default' => 0]);
|
||||||
|
$poll->addColumn('receiveNewVotes', 'boolean', ['default' => false]);
|
||||||
|
$poll->addColumn('active', 'boolean', ['default' => true]);
|
||||||
|
$poll->addUniqueIndex(['id'], 'poll_index_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function createSlotTable(Schema $schema)
|
||||||
|
{
|
||||||
|
$slot = $schema->createTable(Utils::table('slot'));
|
||||||
|
$schema->createSequence('slot_seq');
|
||||||
|
$slot->addColumn('id', 'integer', ['autoincrement' => true]);
|
||||||
|
$slot->addColumn('poll_id', 'string');
|
||||||
|
$slot->addColumn('title', 'text');
|
||||||
|
$slot->addColumn('moments', 'text', ['notnull' => false]);
|
||||||
|
$slot->addUniqueIndex(['id'], 'slot_index_id');
|
||||||
|
$slot->addIndex(['poll_id'], 'slot_index_poll_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function createCommentTable(Schema $schema)
|
||||||
|
{
|
||||||
|
$comment = $schema->createTable(Utils::table('comment'));
|
||||||
|
$schema->createSequence('comment_seq');
|
||||||
|
$comment->addColumn('id', 'integer', ['autoincrement' => true]);
|
||||||
|
$comment->addColumn('poll_id', 'string');
|
||||||
|
$comment->addColumn('name', 'text', ['notnull' => false]);
|
||||||
|
$comment->addColumn('comment', 'text');
|
||||||
|
$comment->addUniqueIndex(['id'], 'comment_index_id');
|
||||||
|
$comment->addIndex(['poll_id'], 'comment_index_poll_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function createVoteTable(Schema $schema)
|
||||||
|
{
|
||||||
|
$vote = $schema->createTable(Utils::table('vote'));
|
||||||
|
$schema->createSequence('vote_seq');
|
||||||
|
$vote->addColumn('id', 'integer', ['autoincrement' => true]);
|
||||||
|
$vote->addColumn('poll_id', 'string');
|
||||||
|
$vote->addColumn('name', 'string');
|
||||||
|
$vote->addColumn('choices', 'string');
|
||||||
|
$vote->addUniqueIndex(['id'], 'vote_index_id');
|
||||||
|
$vote->addIndex(['poll_id'], 'vote_index_poll_id');
|
||||||
|
}
|
||||||
|
}
|
263
app/classes/Framadate/Migrations/Version20150102100000.php
Normal file
263
app/classes/Framadate/Migrations/Version20150102100000.php
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class executes the aciton in database to migrate data from version 0.8 to 0.9.
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 0.9
|
||||||
|
*/
|
||||||
|
class Version20150102100000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'From 0.8 to 0.9 second part';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema,'Framadate\Migration\From_0_8_to_0_9_Migration'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
foreach ([Utils::table('poll'), Utils::table('comment'), Utils::table('slot'), Utils::table('vote')] as $table) {
|
||||||
|
$this->skipIf(!$schema->hasTable($table), 'Missing table ' . $table);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->migrateFromSondageToPoll();
|
||||||
|
$this->migrateFromCommentsToComment();
|
||||||
|
$this->migrateFromSujetStudsToSlot();
|
||||||
|
//$this->migrateFromUserStudsToVote();
|
||||||
|
|
||||||
|
$this->dropOldTables($schema);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$sondage = $schema->createTable('sondage');
|
||||||
|
$sondage->addColumn('id_sondage', 'string');
|
||||||
|
$sondage->addColumn('commentaires', 'text');
|
||||||
|
$sondage->addColumn('mail_admin', 'string', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('nom_admin', 'string', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('titre', 'text');
|
||||||
|
$sondage->addColumn('id_sondage_admin', 'string', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('date_creation', 'datetime', ['default' => (new \DateTime())->format('Y-m-d H:i:s')]);
|
||||||
|
$sondage->addColumn('date_fin', 'datetime', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('format', 'string', ['notnull' => false]);
|
||||||
|
$sondage->addColumn('mailsonde', 'boolean', ['default' => false]);
|
||||||
|
$sondage->addColumn('statut', 'integer', ['default' => '1']);
|
||||||
|
$sondage->addUniqueIndex(['id_sondage'], 'sondage_index_id_sondage');
|
||||||
|
|
||||||
|
$sujetStuds = $schema->createTable('sujet_studs');
|
||||||
|
$sujetStuds->addColumn('id_sondage', 'string');
|
||||||
|
$sujetStuds->addColumn('sujet', 'text');
|
||||||
|
$sujetStuds->addIndex(['id_sondage'], 'sujet_studs_index_id_sondage');
|
||||||
|
|
||||||
|
$comments = $schema->createTable('comments');
|
||||||
|
$schema->createSequence('comments_seq');
|
||||||
|
$comments->addColumn('id_comment', 'integer', ['autoincrement' => true]);
|
||||||
|
$comments->addColumn('id_sondage', 'string');
|
||||||
|
$comments->addColumn('comment', 'text');
|
||||||
|
$comments->addColumn('usercomment', 'text', ['notnull' => false]);
|
||||||
|
$comments->addUniqueIndex(['id_comment'], 'comments_index_id_comment');
|
||||||
|
$comments->addIndex(['id_sondage'], 'comments_index_id_sondage');
|
||||||
|
|
||||||
|
$userStuds = $schema->createTable('user_studs');
|
||||||
|
$schema->createSequence('user_studs_seq');
|
||||||
|
$userStuds->addColumn('id_users', 'integer', ['autoincrement' => true]);
|
||||||
|
$userStuds->addColumn('nom', 'string');
|
||||||
|
$userStuds->addColumn('id_sondage', 'string');
|
||||||
|
$userStuds->addColumn('reponses', 'text');
|
||||||
|
$userStuds->addUniqueIndex(['id_users'], 'user_studs_index_id_users');
|
||||||
|
$userStuds->addIndex(['id_sondage'], 'user_studs_index_id_sondage');
|
||||||
|
|
||||||
|
$schema->dropTable(Utils::table('poll'));
|
||||||
|
$schema->dropTable(Utils::table('comment'));
|
||||||
|
$schema->dropTable(Utils::table('vote'));
|
||||||
|
$schema->dropTable(Utils::table('slot'));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function migrateFromSondageToPoll()
|
||||||
|
{
|
||||||
|
$select = $this->connection->query('
|
||||||
|
SELECT
|
||||||
|
id_sondage,
|
||||||
|
id_sondage_admin,
|
||||||
|
titre,
|
||||||
|
commentaires,
|
||||||
|
nom_admin,
|
||||||
|
mail_admin,
|
||||||
|
date_creation,
|
||||||
|
date_fin,
|
||||||
|
SUBSTR(format, 1, 1) AS format,
|
||||||
|
CASE SUBSTR(format, 2, 1)
|
||||||
|
WHEN \'+\' THEN 1
|
||||||
|
ELSE 0 END AS editable,
|
||||||
|
mailsonde,
|
||||||
|
CASE SUBSTR(format, 2, 1)
|
||||||
|
WHEN \'-\' THEN 0
|
||||||
|
ELSE 1 END AS active
|
||||||
|
FROM sondage');
|
||||||
|
|
||||||
|
$insert = $this->connection->prepare('
|
||||||
|
INSERT INTO ' . Utils::table('poll') . '
|
||||||
|
(id, admin_id, title, description, admin_name, admin_mail, creation_date, end_date, format, editable, receiveNewVotes, active)
|
||||||
|
VALUES (?,?,?,?,?,?,?,?,?,?,?,?)');
|
||||||
|
|
||||||
|
while ($row = $select->fetch(\PDO::FETCH_OBJ)) {
|
||||||
|
$insert->execute([
|
||||||
|
$row->id_sondage,
|
||||||
|
$row->id_sondage_admin,
|
||||||
|
$this->unescape($row->titre),
|
||||||
|
$this->unescape($row->commentaires),
|
||||||
|
$this->unescape($row->nom_admin),
|
||||||
|
$this->unescape($row->mail_admin),
|
||||||
|
$row->date_creation,
|
||||||
|
$row->date_fin,
|
||||||
|
$row->format,
|
||||||
|
$row->editable,
|
||||||
|
$row->mailsonde,
|
||||||
|
$row->active
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function migrateFromSujetStudsToSlot()
|
||||||
|
{
|
||||||
|
$stmt = $this->connection->query('SELECT * FROM sujet_studs');
|
||||||
|
$sujets = $stmt->fetchAll();
|
||||||
|
$slots = [];
|
||||||
|
|
||||||
|
foreach ($sujets as $sujet) {
|
||||||
|
$newSlots = $this->transformSujetToSlot($sujet);
|
||||||
|
foreach ($newSlots as $newSlot) {
|
||||||
|
$slots[] = $newSlot;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$prepared = $this->connection->prepare('INSERT INTO ' . Utils::table('slot') . ' (poll_id, title, moments) VALUES (?,?,?)');
|
||||||
|
foreach ($slots as $slot) {
|
||||||
|
$prepared->execute([
|
||||||
|
$slot->poll_id,
|
||||||
|
$this->unescape($slot->title),
|
||||||
|
!empty($slot->moments) ? $this->unescape($slot->moments) : null
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function migrateFromCommentsToComment()
|
||||||
|
{
|
||||||
|
$select = $this->connection->query('
|
||||||
|
SELECT
|
||||||
|
id_sondage,
|
||||||
|
usercomment,
|
||||||
|
comment
|
||||||
|
FROM comments');
|
||||||
|
|
||||||
|
$insert = $this->connection->prepare('
|
||||||
|
INSERT INTO ' . Utils::table('comment') . ' (poll_id, name, comment)
|
||||||
|
VALUES (?,?,?)');
|
||||||
|
|
||||||
|
while ($row = $select->fetch(\PDO::FETCH_OBJ)) {
|
||||||
|
$insert->execute([
|
||||||
|
$row->id_sondage,
|
||||||
|
$this->unescape($row->usercomment),
|
||||||
|
$this->unescape($row->comment)
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function migrateFromUserStudsToVote()
|
||||||
|
{
|
||||||
|
$select = $this->connection->query('
|
||||||
|
SELECT
|
||||||
|
id_sondage,
|
||||||
|
nom,
|
||||||
|
REPLACE(REPLACE(REPLACE(reponses, 1, \'X\'), 2, 1), \'X\', 2) reponses
|
||||||
|
FROM user_studs');
|
||||||
|
|
||||||
|
$insert = $this->connection->prepare('
|
||||||
|
INSERT INTO ' . Utils::table('vote') . ' (poll_id, name, choices)
|
||||||
|
VALUES (?,?,?)');
|
||||||
|
|
||||||
|
while ($row = $select->fetch(\PDO::FETCH_OBJ)) {
|
||||||
|
$insert->execute([
|
||||||
|
$row->id_sondage,
|
||||||
|
$this->unescape($row->nom),
|
||||||
|
$row->reponses
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function transformSujetToSlot($sujet)
|
||||||
|
{
|
||||||
|
$slots = [];
|
||||||
|
$ex = explode(',', $sujet->sujet);
|
||||||
|
$isDatePoll = strpos($sujet->sujet, '@');
|
||||||
|
$lastSlot = null;
|
||||||
|
|
||||||
|
foreach ($ex as $atomicSlot) {
|
||||||
|
if ($isDatePoll === false) { // Classic poll
|
||||||
|
$slot = new \stdClass();
|
||||||
|
$slot->poll_id = $sujet->id_sondage;
|
||||||
|
$slot->title = $atomicSlot;
|
||||||
|
$slots[] = $slot;
|
||||||
|
} else { // Date poll
|
||||||
|
$values = explode('@', $atomicSlot);
|
||||||
|
if ($lastSlot === null || $lastSlot->title !== $values[0]) {
|
||||||
|
$lastSlot = new \stdClass();
|
||||||
|
$lastSlot->poll_id = $sujet->id_sondage;
|
||||||
|
$lastSlot->title = $values[0];
|
||||||
|
$lastSlot->moments = count($values) === 2 ? $values[1] : '-';
|
||||||
|
$slots[] = $lastSlot;
|
||||||
|
} else {
|
||||||
|
$lastSlot->moments .= ',' . (count($values) === 2 ? $values[1] : '-');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $slots;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function dropOldTables(Schema $schema)
|
||||||
|
{
|
||||||
|
$schema->dropTable('comments');
|
||||||
|
$schema->dropTable('sujet_studs');
|
||||||
|
$schema->dropTable('user_studs');
|
||||||
|
$schema->dropTable('sondage');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function unescape($value)
|
||||||
|
{
|
||||||
|
return stripslashes(html_entity_decode($value, ENT_QUOTES));
|
||||||
|
}
|
||||||
|
}
|
70
app/classes/Framadate/Migrations/Version20150117000000.php
Normal file
70
app/classes/Framadate/Migrations/Version20150117000000.php
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This migration adds the field receiveNewComments on the poll table.
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 0.9
|
||||||
|
*/
|
||||||
|
class Version20150117000000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'Add column "receiveNewComments" for version 0.9';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema,'Framadate\Migration\AddColumn_receiveNewComments_For_0_9'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
foreach ([Utils::table('poll'), Utils::table('slot'), Utils::table('vote'), Utils::table('comment')] as $table) {
|
||||||
|
$this->skipIf(!$schema->hasTable($table), 'Missing table ' . $table);
|
||||||
|
}
|
||||||
|
$pollTable = $schema->getTable(Utils::table('poll'));
|
||||||
|
$this->skipIf($pollTable->hasColumn('receiveNewComments'), 'Column receiveNewComments already exists');
|
||||||
|
|
||||||
|
$pollTable->addColumn('receiveNewComments', 'boolean', ['default' => false]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$pollTable = $schema->getTable(Utils::table('poll'));
|
||||||
|
$pollTable->dropColumn('receiveNewComments');
|
||||||
|
}
|
||||||
|
}
|
76
app/classes/Framadate/Migrations/Version20150402000000.php
Normal file
76
app/classes/Framadate/Migrations/Version20150402000000.php
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This migration adds the field uniqId on the vote table.
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 0.9
|
||||||
|
*/
|
||||||
|
class Version20150402000000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
private $indexUniqIdName = 'IDX_vote_uniqId';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'Add column "uniqId" in table "vote" for version 0.9';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema, 'Framadate\Migration\AddColumn_uniqId_In_vote_For_0_9'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
foreach ([Utils::table('poll'), Utils::table('slot'), Utils::table('vote'), Utils::table('comment')] as $table) {
|
||||||
|
$this->skipIf(!$schema->hasTable($table), 'Missing table ' . $table);
|
||||||
|
}
|
||||||
|
$voteTable = $schema->getTable(Utils::table('vote'));
|
||||||
|
|
||||||
|
$this->skipIf($voteTable->hasColumn('uniqId'), 'Column uniqId already existing');
|
||||||
|
|
||||||
|
$voteTable->addColumn('uniqId', 'string', ['length' => 16]);
|
||||||
|
$voteTable->addIndex(['uniqId'], $this->indexUniqIdName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$voteTable = $schema->getTable(Utils::table('vote'));
|
||||||
|
|
||||||
|
$voteTable->dropIndex($this->indexUniqIdName);
|
||||||
|
$voteTable->dropColumn('uniqId');
|
||||||
|
}
|
||||||
|
}
|
72
app/classes/Framadate/Migrations/Version20150405000000.php
Normal file
72
app/classes/Framadate/Migrations/Version20150405000000.php
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This migration adds the field hidden on the poll table.
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 0.9
|
||||||
|
*/
|
||||||
|
class Version20150405000000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'Add column "hidden" in table "vote" for version 0.9';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema, 'Framadate\Migration\AddColumn_hidden_In_poll_For_0_9'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
foreach ([Utils::table('poll'), Utils::table('slot'), Utils::table('vote'), Utils::table('comment')] as $table) {
|
||||||
|
$this->skipIf(!$schema->hasTable($table), 'Missing table ' . $table);
|
||||||
|
}
|
||||||
|
$pollTable = $schema->getTable(Utils::table('poll'));
|
||||||
|
|
||||||
|
$this->skipIf($pollTable->hasColumn('hidden'), 'Column hidden already existing in table poll');
|
||||||
|
|
||||||
|
$pollTable->addColumn('hidden', 'boolean', ['default' => false, 'notnull' => true]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$pollTable = $schema->getTable(Utils::table('poll'));
|
||||||
|
|
||||||
|
$pollTable->dropColumn('hidden');
|
||||||
|
}
|
||||||
|
}
|
78
app/classes/Framadate/Migrations/Version20150624000000.php
Normal file
78
app/classes/Framadate/Migrations/Version20150624000000.php
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Security\Token;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This migration generate uniqId for all legacy votes.
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 0.9
|
||||||
|
*/
|
||||||
|
class Version20150624000000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'Generate "uniqId" in "vote" table for all legacy votes';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema, 'Framadate\Migration\Generate_uniqId_for_old_votes'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
foreach ([Utils::table('poll'), Utils::table('slot'), Utils::table('vote'), Utils::table('comment')] as $table) {
|
||||||
|
$this->skipIf(!$schema->hasTable($table), 'Missing table ' . $table);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->connection->beginTransaction();
|
||||||
|
|
||||||
|
$select = $this->connection->query('
|
||||||
|
SELECT id
|
||||||
|
FROM ' . Utils::table('vote') . '
|
||||||
|
WHERE uniqid = \'\'');
|
||||||
|
|
||||||
|
$update = $this->connection->prepare('
|
||||||
|
UPDATE ' . Utils::table('vote') . '
|
||||||
|
SET uniqid = :uniqid
|
||||||
|
WHERE id = :id');
|
||||||
|
|
||||||
|
while ($row = $select->fetch(\PDO::FETCH_OBJ)) {
|
||||||
|
$token = Token::getToken(16);
|
||||||
|
$update->execute([
|
||||||
|
'uniqid' => $token,
|
||||||
|
'id' => $row->id
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->connection->commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
// TODO: Implement down() method.
|
||||||
|
}
|
||||||
|
}
|
102
app/classes/Framadate/Migrations/Version20150918000000.php
Normal file
102
app/classes/Framadate/Migrations/Version20150918000000.php
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Rapha<EFBFBD>l DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est r<EFBFBD>gi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Rapha<EFBFBD>l DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This migration RPad votes from version 0.8.
|
||||||
|
* Because some votes does not have enough values for their poll.
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 0.9
|
||||||
|
*/
|
||||||
|
class Version20150918000000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'RPad votes from version 0.8.';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf(
|
||||||
|
$this->legacyCheck($schema, 'Framadate\Migration\RPadVotes_from_0_8'),
|
||||||
|
'Migration has been executed in an earlier database migration system'
|
||||||
|
);
|
||||||
|
foreach ([Utils::table('poll'), Utils::table('slot'), Utils::table('vote'), Utils::table(
|
||||||
|
'comment'
|
||||||
|
)] as $table) {
|
||||||
|
$this->skipIf(!$schema->hasTable($table), 'Missing table ' . $table);
|
||||||
|
}
|
||||||
|
|
||||||
|
$driver_name = $this->connection->getDatabasePlatform()->getName();
|
||||||
|
switch ($driver_name) {
|
||||||
|
case 'mysql':
|
||||||
|
$this->addSql(
|
||||||
|
'UPDATE ' . Utils::table('vote') . ' fv
|
||||||
|
INNER JOIN (
|
||||||
|
SELECT v.id, RPAD(v.choices, inn.slots_count, \'0\') new_choices
|
||||||
|
FROM ' . Utils::table('vote') . ' v
|
||||||
|
INNER JOIN
|
||||||
|
(SELECT s.poll_id, SUM(IFNULL(LENGTH(s.moments) - LENGTH(REPLACE(s.moments, \',\', \'\')) + 1, 1)) slots_count
|
||||||
|
FROM ' . Utils::table('slot') . ' s
|
||||||
|
GROUP BY s.poll_id
|
||||||
|
ORDER BY s.poll_id) inn ON inn.poll_id = v.poll_id
|
||||||
|
WHERE LENGTH(v.choices) != inn.slots_count
|
||||||
|
) computed ON fv.id = computed.id
|
||||||
|
SET fv.choices = computed.new_choices'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case 'postgresql':
|
||||||
|
$this->addSql(
|
||||||
|
"UPDATE " . Utils::table('vote') . " fv
|
||||||
|
SET choices = computed.new_choices
|
||||||
|
FROM (
|
||||||
|
SELECT v.id, RPAD(v.choices::text, inn.slots_count::int, '0') new_choices
|
||||||
|
FROM " . Utils::table('vote') . " v
|
||||||
|
INNER JOIN
|
||||||
|
(SELECT s.poll_id, SUM(coalesce(LENGTH(s.moments) - LENGTH(REPLACE(s.moments, ',', '')) + 1, 1)) slots_count
|
||||||
|
FROM " . Utils::table('slot') . " s
|
||||||
|
GROUP BY s.poll_id
|
||||||
|
ORDER BY s.poll_id) inn ON inn.poll_id = v.poll_id
|
||||||
|
WHERE LENGTH(v.choices) != inn.slots_count
|
||||||
|
) computed WHERE fv.id = computed.id"
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$this->skipIf(true, "Not on MySQL or PostgreSQL");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
// TODO: Implement down() method.
|
||||||
|
}
|
||||||
|
}
|
@ -16,8 +16,11 @@
|
|||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
*/
|
*/
|
||||||
namespace Framadate\Migration;
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\DBAL\Types\Type;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
use Framadate\Utils;
|
use Framadate\Utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,45 +29,43 @@ use Framadate\Utils;
|
|||||||
* @package Framadate\Migration
|
* @package Framadate\Migration
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
class Alter_Comment_table_for_name_length implements Migration {
|
class Version20151012075900 extends AbstractMigration
|
||||||
function __construct() {
|
{
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method should describe in english what is the purpose of the migration class.
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
*
|
*
|
||||||
* @return string The description of the migration class
|
* @return string The description of the migration class
|
||||||
*/
|
*/
|
||||||
function description() {
|
public function description()
|
||||||
|
{
|
||||||
return 'Alter the comment table to set a length to the name column.';
|
return 'Alter the comment table to set a length to the name column.';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method could check if the execute method should be called.
|
* @param Schema $schema
|
||||||
* It is called before the execute method.
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
*
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @param \PDO $pdo The connection to database
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
* @return bool true is the Migration should be executed.
|
|
||||||
*/
|
*/
|
||||||
function preCondition(\PDO $pdo) {
|
public function up(Schema $schema)
|
||||||
return true;
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema, 'Framadate\Migration\Alter_Comment_table_for_name_length'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
$commentTable = $schema->getTable(Utils::table('comment'));
|
||||||
|
|
||||||
|
$commentTable->changeColumn('name', ['default' => null, 'notnull' => false]);
|
||||||
|
|
||||||
|
$commentTable->changeColumn('name', ['type' => Type::getType('string'), 'length' => 64, 'notnull' => true]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This methode is called only one time in the migration page.
|
* @param Schema $schema
|
||||||
*
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
* @param \PDO $pdo The connection to database
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @return bool true is the execution succeeded
|
|
||||||
*/
|
*/
|
||||||
function execute(\PDO $pdo) {
|
public function down(Schema $schema)
|
||||||
$this->alterCommentTable($pdo);
|
{
|
||||||
|
$commentTable = $schema->getTable(Utils::table('comment'));
|
||||||
|
|
||||||
return true;
|
$commentTable->changeColumn('name', ['type' => Type::getType('string')]);
|
||||||
}
|
|
||||||
|
|
||||||
private function alterCommentTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
ALTER TABLE `' . Utils::table('comment') . '`
|
|
||||||
CHANGE `name` `name` VARCHAR( 64 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -16,8 +16,10 @@
|
|||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
*/
|
*/
|
||||||
namespace Framadate\Migration;
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
use Framadate\Utils;
|
use Framadate\Utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,45 +28,42 @@ use Framadate\Utils;
|
|||||||
* @package Framadate\Migration
|
* @package Framadate\Migration
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
class Alter_Comment_table_adding_date implements Migration {
|
class Version20151012082600 extends AbstractMigration
|
||||||
function __construct() {
|
{
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method should describe in english what is the purpose of the migration class.
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
*
|
*
|
||||||
* @return string The description of the migration class
|
* @return string The description of the migration class
|
||||||
*/
|
*/
|
||||||
function description() {
|
public function description()
|
||||||
|
{
|
||||||
return 'Alter the comment table to add a date column.';
|
return 'Alter the comment table to add a date column.';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method could check if the execute method should be called.
|
* @param Schema $schema
|
||||||
* It is called before the execute method.
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
*
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
* @param \PDO $pdo The connection to database
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @return bool true is the Migration should be executed.
|
|
||||||
*/
|
*/
|
||||||
function preCondition(\PDO $pdo) {
|
public function up(Schema $schema)
|
||||||
return true;
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema, 'Framadate\Migration\Alter_Comment_table_adding_date'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
$commentTable = $schema->getTable(Utils::table('comment'));
|
||||||
|
|
||||||
|
$this->skipIf($commentTable->hasColumn('date'), 'Column date in comment table already exists');
|
||||||
|
|
||||||
|
$commentTable->addColumn('date', 'datetime', ['default' => 0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This methode is called only one time in the migration page.
|
* @param Schema $schema
|
||||||
*
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the execution succeeded
|
|
||||||
*/
|
*/
|
||||||
function execute(\PDO $pdo) {
|
public function down(Schema $schema)
|
||||||
$this->alterCommentTable($pdo);
|
{
|
||||||
|
$commentTable = $schema->getTable(Utils::table('comment'));
|
||||||
|
|
||||||
return true;
|
$commentTable->dropColumn('comment');
|
||||||
}
|
|
||||||
|
|
||||||
private function alterCommentTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
ALTER TABLE `' . Utils::table('comment') . '`
|
|
||||||
ADD `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
72
app/classes/Framadate/Migrations/Version20151028000000.php
Normal file
72
app/classes/Framadate/Migrations/Version20151028000000.php
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This migration adds the fields password_hash and results_publicly_visible on the poll table.
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 0.9
|
||||||
|
*/
|
||||||
|
class Version20151028000000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'Add columns "password_hash" and "results_publicly_visible" in table "vote" for version 0.9';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema, 'Framadate\Migration\AddColumns_password_hash_And_results_publicly_visible_In_poll_For_0_9'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
$pollTable = $schema->getTable(Utils::table('poll'));
|
||||||
|
|
||||||
|
$this->skipIf($pollTable->hasColumn('password_hash'), 'Column password_hash in table poll already exists');
|
||||||
|
$this->skipIf($pollTable->hasColumn('results_publicly_visible'), 'Column results_publicly_visible in table poll already exists');
|
||||||
|
|
||||||
|
$pollTable->addColumn('password_hash', 'string', ['notnull' => false]);
|
||||||
|
$pollTable->addColumn('results_publicly_visible', 'boolean', ['notnull' => false]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$pollTable = $schema->getTable(Utils::table('poll'));
|
||||||
|
|
||||||
|
$pollTable->dropColumn('password_hash');
|
||||||
|
$pollTable->dropColumn('results_publicly_visible');
|
||||||
|
}
|
||||||
|
}
|
51
app/classes/Framadate/Migrations/Version20151205000000.php
Normal file
51
app/classes/Framadate/Migrations/Version20151205000000.php
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\DBAL\Types\Type;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
class Version20151205000000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'Increase the size of id column in poll table';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema, 'Framadate\Migration\Increase_pollId_size'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
$commentTable = $schema->getTable(Utils::table('comment'));
|
||||||
|
|
||||||
|
$commentTable->changeColumn('poll_id', ['type' => Type::getType('string'), 'length' => 64, 'notnull' => true]);
|
||||||
|
|
||||||
|
$pollTable = $schema->getTable(Utils::table('poll'));
|
||||||
|
|
||||||
|
$pollTable->changeColumn('id', ['type' => Type::getType('string'), 'length' => 64, 'notnull' => true]);
|
||||||
|
|
||||||
|
$slotTable = $schema->getTable(Utils::table('slot'));
|
||||||
|
|
||||||
|
$slotTable->changeColumn('poll_id', ['type' => Type::getType('string'), 'length' => 64, 'notnull' => true]);
|
||||||
|
|
||||||
|
$voteTable = $schema->getTable(Utils::table('vote'));
|
||||||
|
|
||||||
|
$voteTable->changeColumn('poll_id', ['type' => Type::getType('string'), 'length' => 64, 'notnull' => true]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
// TODO: Implement down() method.
|
||||||
|
}
|
||||||
|
}
|
@ -16,8 +16,10 @@
|
|||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
*/
|
*/
|
||||||
namespace Framadate\Migration;
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
use Framadate\Utils;
|
use Framadate\Utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,45 +28,38 @@ use Framadate\Utils;
|
|||||||
* @package Framadate\Migration
|
* @package Framadate\Migration
|
||||||
* @version 0.9
|
* @version 0.9
|
||||||
*/
|
*/
|
||||||
class AddColumn_ValueMax_In_poll_For_1_1 implements Migration {
|
class Version20180220000000 extends AbstractMigration
|
||||||
function __construct() {
|
{
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method should describe in english what is the purpose of the migration class.
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
*
|
*
|
||||||
* @return string The description of the migration class
|
* @return string The description of the migration class
|
||||||
*/
|
*/
|
||||||
function description() {
|
public function description()
|
||||||
|
{
|
||||||
return 'Add column "ValueMax" in table "vote" for version 0.9';
|
return 'Add column "ValueMax" in table "vote" for version 0.9';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method could check if the execute method should be called.
|
* @param Schema $schema
|
||||||
* It is called before the execute method.
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
*
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
* @param \PDO $pdo The connection to database
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @return bool true is the Migration should be executed.
|
|
||||||
*/
|
*/
|
||||||
function preCondition(\PDO $pdo) {
|
public function up(Schema $schema)
|
||||||
return true;
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema, 'Framadate\Migration\AddColumn_ValueMax_In_poll_For_1_1'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
$pollTable = $schema->getTable(Utils::table('poll'));
|
||||||
|
$pollTable->addColumn('ValueMax', 'smallint', ['default' => null, 'notnull' => false]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called only one time in the migration page.
|
* @param Schema $schema
|
||||||
*
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true is the execution succeeded
|
|
||||||
*/
|
*/
|
||||||
function execute(\PDO $pdo) {
|
public function down(Schema $schema)
|
||||||
$this->alterPollTable($pdo);
|
{
|
||||||
|
$pollTable = $schema->getTable(Utils::table('poll'));
|
||||||
return true;
|
$pollTable->dropColumn('ValueMax');
|
||||||
}
|
|
||||||
|
|
||||||
private function alterPollTable(\PDO $pdo) {
|
|
||||||
$pdo->exec('
|
|
||||||
ALTER TABLE `' . Utils::table('poll') . '`
|
|
||||||
ADD `ValueMax` TINYINT NULL;');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
88
app/classes/Framadate/Migrations/Version20180411000000.php
Normal file
88
app/classes/Framadate/Migrations/Version20180411000000.php
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Connection;
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This migration sets Poll.end_date to NULL by default
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 1.1
|
||||||
|
*/
|
||||||
|
class Version20180411000000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'Sets Poll end_date to NULL by default (work around MySQL NO_ZERO_DATE)';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method could check if the execute method should be called.
|
||||||
|
* It is called before the execute method.
|
||||||
|
*
|
||||||
|
* @param Connection|\PDO $connection The connection to database
|
||||||
|
* @return bool true if the Migration should be executed.
|
||||||
|
*/
|
||||||
|
public function preCondition(Connection $connection)
|
||||||
|
{
|
||||||
|
$driver_name = $connection->getWrappedConnection()->getAttribute(\PDO::ATTR_DRIVER_NAME);
|
||||||
|
|
||||||
|
if ($driver_name === 'mysql') {
|
||||||
|
$stmt = $connection->prepare(
|
||||||
|
"SELECT Column_Default from Information_Schema.Columns where Table_Name = ? AND Column_Name = ?;"
|
||||||
|
);
|
||||||
|
$stmt->bindValue(1, Utils::table('poll'));
|
||||||
|
$stmt->bindValue(2, 'end_date');
|
||||||
|
$stmt->execute();
|
||||||
|
$default = $stmt->fetch(\PDO::FETCH_COLUMN);
|
||||||
|
|
||||||
|
return $default === null;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
// We don't disable this migration even if legacy because it wasn't working correctly before
|
||||||
|
// $this->skipIf($this->legacyCheck($schema, 'Framadate\Migration\Fix_MySQL_No_Zero_Date'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
$this->skipIf($this->preCondition($this->connection), "Database server isn't MySQL or poll end_date default value was already NULL");
|
||||||
|
$poll = $schema->getTable(Utils::table('poll'));
|
||||||
|
$poll->changeColumn('end_date', ['default' => null, 'notnull' => false]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
// nothing
|
||||||
|
}
|
||||||
|
}
|
65
app/classes/Framadate/Migrations/Version20180419170000.php
Normal file
65
app/classes/Framadate/Migrations/Version20180419170000.php
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This migration adds the column collect_users_mail in the poll table
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 1.2
|
||||||
|
*/
|
||||||
|
class Version20180419170000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'Add column collect_users_mail in table poll';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema, 'Framadate\Migration\AddColumn_collect_mail_In_poll'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
$poll = $schema->getTable(Utils::table('poll'));
|
||||||
|
$poll->addColumn('collect_users_mail', 'boolean', ['default' => false]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$poll = $schema->getTable(Utils::table('poll'));
|
||||||
|
$poll->dropColumn('collect_users_mail');
|
||||||
|
}
|
||||||
|
}
|
65
app/classes/Framadate/Migrations/Version20180419180000.php
Normal file
65
app/classes/Framadate/Migrations/Version20180419180000.php
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This migration adds the column mail in the vote table
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 1.2
|
||||||
|
*/
|
||||||
|
class Version20180419180000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'Add column mail in table vote';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($this->legacyCheck($schema, 'Framadate\Migration\AddColumn_collect_mail_In_poll'), 'Migration has been executed in an earlier database migration system');
|
||||||
|
$vote = $schema->getTable(Utils::table('vote'));
|
||||||
|
$vote->addColumn('mail', 'string', ['default' => null, 'notnull' => false]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$vote = $schema->getTable(Utils::table('vote'));
|
||||||
|
$vote->dropColumn('mail');
|
||||||
|
}
|
||||||
|
}
|
@ -16,31 +16,45 @@
|
|||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
*/
|
*/
|
||||||
namespace Framadate\Migration;
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
interface Migration {
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This migration adds the column mail in the vote table
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 1.2
|
||||||
|
*/
|
||||||
|
class Version20180419190000 extends AbstractMigration
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* This method should describe in english what is the purpose of the migration class.
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
*
|
*
|
||||||
* @return string The description of the migration class
|
* @return string The description of the migration class
|
||||||
*/
|
*/
|
||||||
function description();
|
public function description()
|
||||||
|
{
|
||||||
|
return 'Remove the old migration table';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method could check if the execute method should be called.
|
* @param Schema $schema
|
||||||
* It is called before the execute method.
|
* @throws \Doctrine\DBAL\Migrations\SkipMigrationException
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true if the Migration should be executed
|
|
||||||
*/
|
*/
|
||||||
function preCondition(\PDO $pdo);
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf(!$schema->hasTable(Utils::table(MIGRATION_TABLE)), "The old migration table wasn't created, no need to delete it.");
|
||||||
|
$schema->dropTable(Utils::table(MIGRATION_TABLE));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This methode is called only one time in the migration page.
|
* @param Schema $schema
|
||||||
*
|
|
||||||
* @param \PDO $pdo The connection to database
|
|
||||||
* @return bool true if the execution succeeded
|
|
||||||
*/
|
*/
|
||||||
function execute(\PDO $pdo);
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
// No need to recreate legacy migration table
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
100
app/classes/Framadate/Migrations/Version20180525110000.php
Normal file
100
app/classes/Framadate/Migrations/Version20180525110000.php
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Framadate\AbstractMigration;
|
||||||
|
use Framadate\Utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This migration adds the column collect_users_mail in the poll table
|
||||||
|
*
|
||||||
|
* @package Framadate\Migration
|
||||||
|
* @version 1.2
|
||||||
|
*/
|
||||||
|
class Version20180525110000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This method should describe in english what is the purpose of the migration class.
|
||||||
|
*
|
||||||
|
* @return string The description of the migration class
|
||||||
|
*/
|
||||||
|
public function description()
|
||||||
|
{
|
||||||
|
return 'Change column collect_users_mail in table poll from boolean to smallint';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$poll = $schema->getTable(Utils::table('poll'));
|
||||||
|
$poll->addColumn('collect_users_mail_integer', 'smallint', ['default' => 0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function postUp(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->addSql('UPDATE ' . Utils::table('poll') . ' SET collect_users_mail_integer = collect_users_mail');
|
||||||
|
$this->addSql('ALTER TABLE ' . Utils::table('poll') . ' DROP COLUMN collect_users_mail');
|
||||||
|
if ($this->connection->getDatabasePlatform()->getName() === 'mysql') {
|
||||||
|
$this->addSql(
|
||||||
|
'ALTER TABLE ' . Utils::table('poll') . ' CHANGE collect_users_mail_integer collect_users_mail SMALLINT'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->addSql(
|
||||||
|
'ALTER TABLE ' . Utils::table('poll') . ' RENAME COLUMN collect_users_mail_integer to collect_users_mail'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
* @throws \Doctrine\DBAL\Schema\SchemaException
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$poll = $schema->getTable(Utils::table('poll'));
|
||||||
|
$poll->addColumn('collect_users_mail_boolean', 'boolean', ['default' => false]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function postDown(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->addSql('UPDATE ' . Utils::table('poll') . ' SET collect_users_mail_boolean = collect_users_mail > 0');
|
||||||
|
$this->addSql('ALTER TABLE ' . Utils::table('poll') . ' DROP COLUMN collect_users_mail');
|
||||||
|
|
||||||
|
if ($this->connection->getDatabasePlatform()->getName() === 'mysql') {
|
||||||
|
$this->addSql(
|
||||||
|
'ALTER TABLE ' . Utils::table('poll') . ' CHANGE collect_users_mail_boolean collect_users_mail SMALLINT'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->addSql(
|
||||||
|
'ALTER TABLE ' . Utils::table('poll') . ' RENAME COLUMN collect_users_mail_boolean to collect_users_mail'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,43 +1,69 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Framadate\Repositories;
|
namespace Framadate\Repositories;
|
||||||
|
|
||||||
use Framadate\FramaDB;
|
use Doctrine\DBAL\Connection;
|
||||||
|
|
||||||
abstract class AbstractRepository {
|
abstract class AbstractRepository {
|
||||||
/**
|
/**
|
||||||
* @var FramaDB
|
* @var Connection
|
||||||
*/
|
*/
|
||||||
private $connect;
|
protected $connect;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PollRepository constructor.
|
* PollRepository constructor.
|
||||||
* @param FramaDB $connect
|
* @param Connection $connect
|
||||||
*/
|
*/
|
||||||
function __construct(FramaDB $connect) {
|
public function __construct(Connection $connect) {
|
||||||
$this->connect = $connect;
|
$this->connect = $connect;
|
||||||
|
$this->connect->setFetchMode(\PDO::FETCH_OBJ);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function beginTransaction() {
|
public function beginTransaction()
|
||||||
|
{
|
||||||
$this->connect->beginTransaction();
|
$this->connect->beginTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function commit() {
|
/**
|
||||||
|
* @throws \Doctrine\DBAL\ConnectionException
|
||||||
|
*/
|
||||||
|
public function commit()
|
||||||
|
{
|
||||||
$this->connect->commit();
|
$this->connect->commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
function rollback() {
|
/**
|
||||||
|
* @throws \Doctrine\DBAL\ConnectionException
|
||||||
|
*/
|
||||||
|
public function rollback()
|
||||||
|
{
|
||||||
$this->connect->rollback();
|
$this->connect->rollback();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function prepare($sql) {
|
/**
|
||||||
|
* @param string $sql
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @return bool|\Doctrine\DBAL\Driver\Statement|\PDOStatement
|
||||||
|
*/
|
||||||
|
public function prepare($sql)
|
||||||
|
{
|
||||||
return $this->connect->prepare($sql);
|
return $this->connect->prepare($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
function query($sql) {
|
/**
|
||||||
|
* @param string $sql
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @return bool|\Doctrine\DBAL\Driver\Statement|\PDOStatement
|
||||||
|
*/
|
||||||
|
public function query($sql)
|
||||||
|
{
|
||||||
return $this->connect->query($sql);
|
return $this->connect->query($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
function lastInsertId() {
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function lastInsertId()
|
||||||
|
{
|
||||||
return $this->connect->lastInsertId();
|
return $this->connect->lastInsertId();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Framadate\Repositories;
|
namespace Framadate\Repositories;
|
||||||
|
|
||||||
use Framadate\FramaDB;
|
|
||||||
use Framadate\Utils;
|
use Framadate\Utils;
|
||||||
|
|
||||||
class CommentRepository extends AbstractRepository {
|
class CommentRepository extends AbstractRepository {
|
||||||
function __construct(FramaDB $connect) {
|
/**
|
||||||
parent::__construct($connect);
|
* @param $poll_id
|
||||||
}
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @return array
|
||||||
function findAllByPollId($poll_id) {
|
*/
|
||||||
$prepared = $this->prepare('SELECT * FROM `' . Utils::table('comment') . '` WHERE poll_id = ? ORDER BY id');
|
public function findAllByPollId($poll_id) {
|
||||||
|
$prepared = $this->prepare('SELECT * FROM ' . Utils::table('comment') . ' WHERE poll_id = ? ORDER BY id');
|
||||||
$prepared->execute([$poll_id]);
|
$prepared->execute([$poll_id]);
|
||||||
|
|
||||||
return $prepared->fetchAll();
|
return $prepared->fetchAll();
|
||||||
@ -24,32 +24,44 @@ class CommentRepository extends AbstractRepository {
|
|||||||
* @param $comment
|
* @param $comment
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function insert($poll_id, $name, $comment) {
|
function insert($poll_id, $name, $comment)
|
||||||
$prepared = $this->prepare('INSERT INTO `' . Utils::table('comment') . '` (poll_id, name, comment) VALUES (?,?,?)');
|
{
|
||||||
|
return $this->connect->insert(Utils::table('comment'), ['poll_id' => $poll_id, 'name' => $name, 'comment' => $comment]) > 0;
|
||||||
return $prepared->execute([$poll_id, $name, $comment]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteById($poll_id, $comment_id) {
|
/**
|
||||||
$prepared = $this->prepare('DELETE FROM `' . Utils::table('comment') . '` WHERE poll_id = ? AND id = ?');
|
* @param $poll_id
|
||||||
|
* @param $comment_id
|
||||||
return $prepared->execute([$poll_id, $comment_id]);
|
* @throws \Doctrine\DBAL\Exception\InvalidArgumentException
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
function deleteById($poll_id, $comment_id)
|
||||||
|
{
|
||||||
|
return $this->connect->delete(Utils::table('comment'), ['poll_id' => $poll_id, 'id' => $comment_id]) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete all comments of a given poll.
|
* Delete all comments of a given poll.
|
||||||
*
|
*
|
||||||
* @param $poll_id int The ID of the given poll.
|
* @param $poll_id int The ID of the given poll.
|
||||||
* @return bool|null true if action succeeded.
|
* @throws \Doctrine\DBAL\Exception\InvalidArgumentException
|
||||||
|
* @return bool true if action succeeded.
|
||||||
*/
|
*/
|
||||||
function deleteByPollId($poll_id) {
|
function deleteByPollId($poll_id)
|
||||||
$prepared = $this->prepare('DELETE FROM `' . Utils::table('comment') . '` WHERE poll_id = ?');
|
{
|
||||||
|
return $this->connect->delete(Utils::table('comment'), ['poll_id' => $poll_id]) > 0;
|
||||||
return $prepared->execute([$poll_id]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function exists($poll_id, $name, $comment) {
|
/**
|
||||||
$prepared = $this->prepare('SELECT 1 FROM `' . Utils::table('comment') . '` WHERE poll_id = ? AND name = ? AND comment = ?');
|
* @param $poll_id
|
||||||
|
* @param $name
|
||||||
|
* @param $comment
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function exists($poll_id, $name, $comment)
|
||||||
|
{
|
||||||
|
$prepared = $this->prepare('SELECT 1 FROM ' . Utils::table('comment') . ' WHERE poll_id = ? AND name = ? AND comment = ?');
|
||||||
$prepared->execute([$poll_id, $name, $comment]);
|
$prepared->execute([$poll_id, $name, $comment]);
|
||||||
|
|
||||||
return $prepared->rowCount() > 0;
|
return $prepared->rowCount() > 0;
|
||||||
|
@ -1,79 +1,133 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Framadate\Repositories;
|
namespace Framadate\Repositories;
|
||||||
|
|
||||||
use Framadate\FramaDB;
|
|
||||||
use Framadate\Utils;
|
use Framadate\Utils;
|
||||||
use PDO;
|
use PDO;
|
||||||
|
|
||||||
class PollRepository extends AbstractRepository {
|
class PollRepository extends AbstractRepository {
|
||||||
function __construct(FramaDB $connect) {
|
/**
|
||||||
parent::__construct($connect);
|
* @param $poll_id
|
||||||
|
* @param $admin_poll_id
|
||||||
|
* @param $form
|
||||||
|
*/
|
||||||
|
public function insertPoll($poll_id, $admin_poll_id, $form)
|
||||||
|
{
|
||||||
|
$this->connect->insert(Utils::table('poll'), [
|
||||||
|
'id' => $poll_id,
|
||||||
|
'admin_id' => $admin_poll_id,
|
||||||
|
'title' => $form->title,
|
||||||
|
'description' => $form->description,
|
||||||
|
'admin_name' => $form->admin_name,
|
||||||
|
'admin_mail' => $form->admin_mail,
|
||||||
|
'end_date' => (new \DateTime)->setTimestamp($form->end_date)->format('Y-m-d H:i:s'),
|
||||||
|
'format' => $form->format,
|
||||||
|
'editable' => ($form->editable>=0 && $form->editable<=2) ? $form->editable : 0,
|
||||||
|
'receiveNewVotes' => $form->receiveNewVotes ? 1 : 0,
|
||||||
|
'receiveNewComments' => $form->receiveNewComments ? 1 : 0,
|
||||||
|
'hidden' => $form->hidden ? 1 : 0,
|
||||||
|
'password_hash' => $form->password_hash,
|
||||||
|
'results_publicly_visible' => $form->results_publicly_visible ? 1 : 0,
|
||||||
|
'ValueMax' => $form->ValueMax,
|
||||||
|
'collect_users_mail' => ($form->collect_users_mail >= 0 && $form->collect_users_mail <= 3) ? $form->collect_users_mail : 0,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function insertPoll($poll_id, $admin_poll_id, $form) {
|
/**
|
||||||
$sql = 'INSERT INTO `' . Utils::table('poll') . '`
|
* @param $poll_id
|
||||||
(id, admin_id, title, description, admin_name, admin_mail, end_date, format, editable, receiveNewVotes, receiveNewComments, hidden, password_hash, results_publicly_visible,ValueMax)
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
VALUES (?,?,?,?,?,?,FROM_UNIXTIME(?),?,?,?,?,?,?,?,?)';
|
* @return mixed
|
||||||
$prepared = $this->prepare($sql);
|
*/
|
||||||
$prepared->execute([$poll_id, $admin_poll_id, $form->title, $form->description, $form->admin_name, $form->admin_mail, $form->end_date, $form->format, ($form->editable>=0 && $form->editable<=2) ? $form->editable : 0, $form->receiveNewVotes ? 1 : 0, $form->receiveNewComments ? 1 : 0, $form->hidden ? 1 : 0, $form->password_hash, $form->results_publicly_visible ? 1 : 0,$form->ValueMax]);
|
public function findById($poll_id)
|
||||||
}
|
{
|
||||||
|
$prepared = $this->connect->executeQuery('SELECT * FROM ' . Utils::table('poll') . ' WHERE id = ?', [$poll_id]);
|
||||||
|
|
||||||
function findById($poll_id) {
|
|
||||||
$prepared = $this->prepare('SELECT * FROM `' . Utils::table('poll') . '` WHERE id = ?');
|
|
||||||
|
|
||||||
$prepared->execute([$poll_id]);
|
|
||||||
$poll = $prepared->fetch();
|
$poll = $prepared->fetch();
|
||||||
$prepared->closeCursor();
|
$prepared->closeCursor();
|
||||||
|
|
||||||
return $poll;
|
return $poll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $admin_poll_id
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
public function findByAdminId($admin_poll_id) {
|
public function findByAdminId($admin_poll_id) {
|
||||||
$prepared = $this->prepare('SELECT * FROM `' . Utils::table('poll') . '` WHERE admin_id = ?');
|
$prepared = $this->connect->executeQuery('SELECT * FROM ' . Utils::table('poll') . ' WHERE admin_id = ?', [$admin_poll_id]);
|
||||||
|
|
||||||
$prepared->execute([$admin_poll_id]);
|
|
||||||
$poll = $prepared->fetch();
|
$poll = $prepared->fetch();
|
||||||
$prepared->closeCursor();
|
$prepared->closeCursor();
|
||||||
|
|
||||||
return $poll;
|
return $poll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $poll_id
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
public function existsById($poll_id) {
|
public function existsById($poll_id) {
|
||||||
$prepared = $this->prepare('SELECT 1 FROM `' . Utils::table('poll') . '` WHERE id = ?');
|
$prepared = $this->prepare('SELECT 1 FROM ' . Utils::table('poll') . ' WHERE id = ?');
|
||||||
|
|
||||||
$prepared->execute([$poll_id]);
|
$prepared->execute([$poll_id]);
|
||||||
|
|
||||||
return $prepared->rowCount() > 0;
|
return $prepared->rowCount() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $admin_poll_id
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
public function existsByAdminId($admin_poll_id) {
|
public function existsByAdminId($admin_poll_id) {
|
||||||
$prepared = $this->prepare('SELECT 1 FROM `' . Utils::table('poll') . '` WHERE admin_id = ?');
|
$prepared = $this->prepare('SELECT 1 FROM ' . Utils::table('poll') . ' WHERE admin_id = ?');
|
||||||
|
|
||||||
$prepared->execute([$admin_poll_id]);
|
$prepared->execute([$admin_poll_id]);
|
||||||
|
|
||||||
return $prepared->rowCount() > 0;
|
return $prepared->rowCount() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function update($poll) {
|
/**
|
||||||
$prepared = $this->prepare('UPDATE `' . Utils::table('poll') . '` SET title=?, admin_name=?, admin_mail=?, description=?, end_date=?, active=?, editable=?, hidden=?, password_hash=?, results_publicly_visible=? WHERE id = ?');
|
* @param $poll
|
||||||
|
* @return bool
|
||||||
return $prepared->execute([$poll->title, $poll->admin_name, $poll->admin_mail, $poll->description, $poll->end_date, $poll->active, ($poll->editable>=0 && $poll->editable<=2) ? $poll->editable : 0, $poll->hidden ? 1 : 0, $poll->password_hash, $poll->results_publicly_visible ? 1 : 0, $poll->id]);
|
*/
|
||||||
|
public function update($poll)
|
||||||
|
{
|
||||||
|
return $this->connect->update(Utils::table('poll'), [
|
||||||
|
'title' => $poll->title,
|
||||||
|
'admin_name' => $poll->admin_name,
|
||||||
|
'admin_mail' => $poll->admin_mail,
|
||||||
|
'description' => $poll->description,
|
||||||
|
'end_date' => $poll->end_date, # TODO : Harmonize dates between here and insert
|
||||||
|
'active' => $poll->active,
|
||||||
|
'editable' => $poll->editable >= 0 && $poll->editable <= 2 ? $poll->editable : 0,
|
||||||
|
'hidden' => $poll->hidden ? 1 : 0,
|
||||||
|
'password_hash' => $poll->password_hash,
|
||||||
|
'results_publicly_visible' => $poll->results_publicly_visible ? 1 : 0
|
||||||
|
], [
|
||||||
|
'id' => $poll->id
|
||||||
|
]) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteById($poll_id) {
|
/**
|
||||||
$prepared = $this->prepare('DELETE FROM `' . Utils::table('poll') . '` WHERE id = ?');
|
* @param $poll_id
|
||||||
|
* @throws \Doctrine\DBAL\Exception\InvalidArgumentException
|
||||||
return $prepared->execute([$poll_id]);
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function deleteById($poll_id)
|
||||||
|
{
|
||||||
|
return $this->connect->delete(Utils::table('poll'), ['id' => $poll_id]) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find old polls. Limit: 20.
|
* Find old polls. Limit: 20.
|
||||||
*
|
*
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @return array Array of old polls
|
* @return array Array of old polls
|
||||||
*/
|
*/
|
||||||
public function findOldPolls() {
|
public function findOldPolls()
|
||||||
$prepared = $this->prepare('SELECT * FROM `' . Utils::table('poll') . '` WHERE DATE_ADD(`end_date`, INTERVAL ' . PURGE_DELAY . ' DAY) < NOW() AND `end_date` != 0 LIMIT 20');
|
{
|
||||||
$prepared->execute([]);
|
$prepared = $this->connect->executeQuery('SELECT * FROM ' . Utils::table('poll') . ' WHERE DATE_ADD(end_date, INTERVAL ? DAY) < NOW() AND end_date != 0 LIMIT 20', [PURGE_DELAY]);
|
||||||
|
|
||||||
return $prepared->fetchAll();
|
return $prepared->fetchAll();
|
||||||
}
|
}
|
||||||
@ -84,52 +138,53 @@ class PollRepository extends AbstractRepository {
|
|||||||
* @param array $search Array of search : ['id'=>..., 'title'=>..., 'name'=>..., 'mail'=>...]
|
* @param array $search Array of search : ['id'=>..., 'title'=>..., 'name'=>..., 'mail'=>...]
|
||||||
* @param int $start The number of first entry to select
|
* @param int $start The number of first entry to select
|
||||||
* @param int $limit The number of entries to find
|
* @param int $limit The number of entries to find
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @return array The found polls
|
* @return array The found polls
|
||||||
*/
|
*/
|
||||||
public function findAll($search, $start, $limit) {
|
public function findAll($search, $start, $limit) {
|
||||||
// Polls
|
// Polls
|
||||||
|
|
||||||
$request = "";
|
$request = "";
|
||||||
$request .= "SELECT p.*,";
|
$request .= "SELECT p.*,";
|
||||||
$request .= " (SELECT count(1) FROM `" . Utils::table('vote') . "` v WHERE p.id=v.poll_id) votes";
|
$request .= " (SELECT count(1) FROM " . Utils::table('vote') . " v WHERE p.id=v.poll_id) votes";
|
||||||
$request .= " FROM `" . Utils::table('poll') . "` p";
|
$request .= " FROM " . Utils::table('poll') . " p";
|
||||||
$request .= " WHERE 1";
|
$request .= " WHERE 1";
|
||||||
|
|
||||||
$values = [];
|
$values = [];
|
||||||
|
|
||||||
if (!empty($search["poll"])) {
|
if (!empty($search["poll"])) {
|
||||||
$request .= " AND p.id LIKE :poll";
|
$request .= " AND p.id LIKE :poll";
|
||||||
$values["poll"] = "{$search["poll"]}%";
|
$values["poll"] = "{$search["poll"]}%";
|
||||||
}
|
}
|
||||||
|
|
||||||
$fields = [
|
$fields = [
|
||||||
// key of $search => column name
|
// key of $search => column name
|
||||||
"title" => "title",
|
"title" => "title",
|
||||||
"name" => "admin_name",
|
"name" => "admin_name",
|
||||||
"mail" => "admin_mail",
|
"mail" => "admin_mail",
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($fields as $searchKey => $columnName) {
|
foreach ($fields as $searchKey => $columnName) {
|
||||||
if (empty($search[$searchKey])) {
|
if (empty($search[$searchKey])) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$request .= " AND p.$columnName LIKE :$searchKey";
|
$request .= " AND p.$columnName LIKE :$searchKey";
|
||||||
$values[$searchKey] = "%{$search[$searchKey]}%";
|
$values[$searchKey] = "%{$search[$searchKey]}%";
|
||||||
}
|
}
|
||||||
|
|
||||||
$request .= " ORDER BY p.title ASC";
|
$request .= " ORDER BY p.title ASC";
|
||||||
$request .= " LIMIT :start, :limit";
|
$request .= " LIMIT :start, :limit";
|
||||||
|
|
||||||
$prepared = $this->prepare($request);
|
$prepared = $this->prepare($request);
|
||||||
|
|
||||||
foreach ($values as $searchKey => $value) {
|
foreach ($values as $searchKey => $value) {
|
||||||
$prepared->bindParam(":$searchKey", $value, PDO::PARAM_STR);
|
$prepared->bindParam(":$searchKey", $value, PDO::PARAM_STR);
|
||||||
}
|
}
|
||||||
|
|
||||||
$prepared->bindParam(':start', $start, PDO::PARAM_INT);
|
$prepared->bindParam(':start', $start, PDO::PARAM_INT);
|
||||||
$prepared->bindParam(':limit', $limit, PDO::PARAM_INT);
|
$prepared->bindParam(':limit', $limit, PDO::PARAM_INT);
|
||||||
|
|
||||||
$prepared->execute();
|
$prepared->execute();
|
||||||
|
|
||||||
return $prepared->fetchAll();
|
return $prepared->fetchAll();
|
||||||
@ -139,26 +194,28 @@ class PollRepository extends AbstractRepository {
|
|||||||
* Find all polls that are created with the given admin mail.
|
* Find all polls that are created with the given admin mail.
|
||||||
*
|
*
|
||||||
* @param string $mail Email address of the poll admin
|
* @param string $mail Email address of the poll admin
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @return array The list of matching polls
|
* @return array The list of matching polls
|
||||||
*/
|
*/
|
||||||
public function findAllByAdminMail($mail) {
|
public function findAllByAdminMail($mail) {
|
||||||
$prepared = $this->prepare('SELECT * FROM `' . Utils::table('poll') . '` WHERE admin_mail = :admin_mail');
|
$prepared = $this->prepare('SELECT * FROM ' . Utils::table('poll') . ' WHERE admin_mail = :admin_mail');
|
||||||
$prepared->execute(['admin_mail' => $mail]);
|
$prepared->execute(['admin_mail' => $mail]);
|
||||||
|
|
||||||
return $prepared->fetchAll();
|
return $prepared->fetchAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the total number of polls in databse.
|
* Get the total number of polls in database.
|
||||||
*
|
*
|
||||||
* @param array $search Array of search : ['id'=>..., 'title'=>..., 'name'=>...]
|
* @param array $search Array of search : ['id'=>..., 'title'=>..., 'name'=>...]
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @return int The number of polls
|
* @return int The number of polls
|
||||||
*/
|
*/
|
||||||
public function count($search = null) {
|
public function count($search = null) {
|
||||||
// Total count
|
// Total count
|
||||||
$prepared = $this->prepare('
|
$prepared = $this->prepare('
|
||||||
SELECT count(1) nb
|
SELECT count(1) nb
|
||||||
FROM `' . Utils::table('poll') . '` p
|
FROM ' . Utils::table('poll') . ' p
|
||||||
WHERE (:id = "" OR p.id LIKE :id)
|
WHERE (:id = "" OR p.id LIKE :id)
|
||||||
AND (:title = "" OR p.title LIKE :title)
|
AND (:title = "" OR p.title LIKE :title)
|
||||||
AND (:name = "" OR p.admin_name LIKE :name)
|
AND (:name = "" OR p.admin_name LIKE :name)
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
namespace Framadate\Repositories;
|
namespace Framadate\Repositories;
|
||||||
|
|
||||||
use Framadate\FramaDB;
|
use Doctrine\DBAL\Connection;
|
||||||
|
|
||||||
class RepositoryFactory {
|
class RepositoryFactory {
|
||||||
private static $connect;
|
private static $connect;
|
||||||
@ -29,9 +29,9 @@ class RepositoryFactory {
|
|||||||
private static $commentRepository;
|
private static $commentRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param FramaDB $connect
|
* @param Connection $connect
|
||||||
*/
|
*/
|
||||||
static function init(FramaDB $connect) {
|
static function init(Connection $connect) {
|
||||||
self::$connect = $connect;
|
self::$connect = $connect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,28 +4,24 @@
|
|||||||
* is not distributed with this file, you can obtain one at
|
* is not distributed with this file, you can obtain one at
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
*
|
*
|
||||||
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Rapha<EFBFBD>l DROZ
|
||||||
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
*
|
*
|
||||||
* =============================
|
* =============================
|
||||||
*
|
*
|
||||||
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
* Ce logiciel est r<EFBFBD>gi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
*
|
*
|
||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Rapha<EFBFBD>l DROZ
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
*/
|
*/
|
||||||
namespace Framadate\Repositories;
|
namespace Framadate\Repositories;
|
||||||
|
|
||||||
use Framadate\FramaDB;
|
use Framadate\Choice;
|
||||||
use Framadate\Utils;
|
use Framadate\Utils;
|
||||||
|
|
||||||
class SlotRepository extends AbstractRepository {
|
class SlotRepository extends AbstractRepository {
|
||||||
function __construct(FramaDB $connect) {
|
|
||||||
parent::__construct($connect);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Insert a bulk of slots.
|
* Insert a bulk of slots.
|
||||||
*
|
*
|
||||||
@ -33,11 +29,10 @@ class SlotRepository extends AbstractRepository {
|
|||||||
* @param array $choices
|
* @param array $choices
|
||||||
*/
|
*/
|
||||||
public function insertSlots($poll_id, $choices) {
|
public function insertSlots($poll_id, $choices) {
|
||||||
$prepared = $this->prepare('INSERT INTO `' . Utils::table('slot') . '` (poll_id, title, moments) VALUES (?, ?, ?)');
|
|
||||||
|
|
||||||
foreach ($choices as $choice) {
|
foreach ($choices as $choice) {
|
||||||
|
/** @var Choice $choice */
|
||||||
// We prepared the slots (joined by comas)
|
// We prepared the slots (joined by comas)
|
||||||
$joinedSlots = '';
|
$joinedSlots = null;
|
||||||
$first = true;
|
$first = true;
|
||||||
foreach ($choice->getSlots() as $slot) {
|
foreach ($choice->getSlots() as $slot) {
|
||||||
if ($first) {
|
if ($first) {
|
||||||
@ -49,16 +44,22 @@ class SlotRepository extends AbstractRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We execute the insertion
|
// We execute the insertion
|
||||||
if (empty($joinedSlots)) {
|
$this->connect->insert(Utils::table('slot'), [
|
||||||
$prepared->execute([$poll_id, $choice->getName(), null]);
|
'poll_id' => $poll_id,
|
||||||
} else {
|
'title' => $choice->getName(),
|
||||||
$prepared->execute([$poll_id, $choice->getName(), $joinedSlots]);
|
'moments' => $joinedSlots
|
||||||
}
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function listByPollId($poll_id) {
|
/**
|
||||||
$prepared = $this->prepare('SELECT * FROM `' . Utils::table('slot') . '` WHERE poll_id = ? ORDER BY id');
|
* @param $poll_id
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function listByPollId($poll_id)
|
||||||
|
{
|
||||||
|
$prepared = $this->prepare('SELECT * FROM ' . Utils::table('slot') . ' WHERE poll_id = ? ORDER BY id');
|
||||||
$prepared->execute([$poll_id]);
|
$prepared->execute([$poll_id]);
|
||||||
|
|
||||||
return $prepared->fetchAll();
|
return $prepared->fetchAll();
|
||||||
@ -69,10 +70,11 @@ class SlotRepository extends AbstractRepository {
|
|||||||
*
|
*
|
||||||
* @param $poll_id int The ID of the poll
|
* @param $poll_id int The ID of the poll
|
||||||
* @param $datetime int The datetime of the slot
|
* @param $datetime int The datetime of the slot
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @return mixed Object The slot found, or null
|
* @return mixed Object The slot found, or null
|
||||||
*/
|
*/
|
||||||
function findByPollIdAndDatetime($poll_id, $datetime) {
|
function findByPollIdAndDatetime($poll_id, $datetime) {
|
||||||
$prepared = $this->prepare('SELECT * FROM `' . Utils::table('slot') . '` WHERE poll_id = ? AND SUBSTRING_INDEX(title, \'@\', 1) = ?');
|
$prepared = $this->prepare('SELECT * FROM ' . Utils::table('slot') . ' WHERE poll_id = ? AND SUBSTRING_INDEX(title, \'@\', 1) = ?');
|
||||||
|
|
||||||
$prepared->execute([$poll_id, $datetime]);
|
$prepared->execute([$poll_id, $datetime]);
|
||||||
$slot = $prepared->fetch();
|
$slot = $prepared->fetch();
|
||||||
@ -89,10 +91,9 @@ class SlotRepository extends AbstractRepository {
|
|||||||
* @param $moments mixed|null The moments joined with ","
|
* @param $moments mixed|null The moments joined with ","
|
||||||
* @return bool true if action succeeded
|
* @return bool true if action succeeded
|
||||||
*/
|
*/
|
||||||
function insert($poll_id, $title, $moments) {
|
function insert($poll_id, $title, $moments)
|
||||||
$prepared = $this->prepare('INSERT INTO `' . Utils::table('slot') . '` (poll_id, title, moments) VALUES (?,?,?)');
|
{
|
||||||
|
return $this->connect->insert(Utils::table('slot'), ['poll_id' => $poll_id, 'title' => $title, 'moments' => $moments]) > 0;
|
||||||
return $prepared->execute([$poll_id, $title, $moments]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -103,10 +104,9 @@ class SlotRepository extends AbstractRepository {
|
|||||||
* @param $newMoments mixed The new moments
|
* @param $newMoments mixed The new moments
|
||||||
* @return bool|null true if action succeeded.
|
* @return bool|null true if action succeeded.
|
||||||
*/
|
*/
|
||||||
function update($poll_id, $datetime, $newMoments) {
|
function update($poll_id, $datetime, $newMoments)
|
||||||
$prepared = $this->prepare('UPDATE `' . Utils::table('slot') . '` SET moments = ? WHERE poll_id = ? AND title = ?');
|
{
|
||||||
|
return $this->connect->update(Utils::table('slot'), ['moments' => $newMoments], ['poll_id' => $poll_id, 'title' => $datetime]) > 0;
|
||||||
return $prepared->execute([$newMoments, $poll_id, $datetime]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -114,15 +114,21 @@ class SlotRepository extends AbstractRepository {
|
|||||||
*
|
*
|
||||||
* @param $poll_id int The ID of the poll
|
* @param $poll_id int The ID of the poll
|
||||||
* @param $datetime mixed The datetime of the slot
|
* @param $datetime mixed The datetime of the slot
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function deleteByDateTime($poll_id, $datetime) {
|
public function deleteByDateTime($poll_id, $datetime)
|
||||||
$prepared = $this->prepare('DELETE FROM `' . Utils::table('slot') . '` WHERE poll_id = ? AND title = ?');
|
{
|
||||||
$prepared->execute([$poll_id, $datetime]);
|
return $this->connect->delete(Utils::table('slot'), ['poll_id' => $poll_id, 'title' => $datetime]) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteByPollId($poll_id) {
|
/**
|
||||||
$prepared = $this->prepare('DELETE FROM `' . Utils::table('slot') . '` WHERE poll_id = ?');
|
* @param $poll_id
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
return $prepared->execute([$poll_id]);
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function deleteByPollId($poll_id)
|
||||||
|
{
|
||||||
|
return $this->connect->delete(Utils::table('slot'), ['poll_id' => $poll_id]) > 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,30 +1,38 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Framadate\Repositories;
|
namespace Framadate\Repositories;
|
||||||
|
|
||||||
use Framadate\FramaDB;
|
|
||||||
use Framadate\Utils;
|
use Framadate\Utils;
|
||||||
|
|
||||||
class VoteRepository extends AbstractRepository {
|
class VoteRepository extends AbstractRepository {
|
||||||
function __construct(FramaDB $connect) {
|
/**
|
||||||
parent::__construct($connect);
|
* @param $poll_id
|
||||||
}
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @return array
|
||||||
function allUserVotesByPollId($poll_id) {
|
*/
|
||||||
$prepared = $this->prepare('SELECT * FROM `' . Utils::table('vote') . '` WHERE poll_id = ? ORDER BY id');
|
public function allUserVotesByPollId($poll_id)
|
||||||
|
{
|
||||||
|
$prepared = $this->prepare('SELECT * FROM ' . Utils::table('vote') . ' WHERE poll_id = ? ORDER BY id');
|
||||||
$prepared->execute([$poll_id]);
|
$prepared->execute([$poll_id]);
|
||||||
|
|
||||||
return $prepared->fetchAll();
|
return $prepared->fetchAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
function insertDefault($poll_id, $insert_position) {
|
/**
|
||||||
$prepared = $this->prepare('UPDATE `' . Utils::table('vote') . '` SET choices = CONCAT(SUBSTRING(choices, 1, ?), " ", SUBSTRING(choices, ?)) WHERE poll_id = ?'); //#51 : default value for unselected vote
|
* @param $poll_id
|
||||||
|
* @param $insert_position
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function insertDefault($poll_id, $insert_position)
|
||||||
|
{
|
||||||
|
# TODO : Handle this on PHP's side
|
||||||
|
$prepared = $this->prepare('UPDATE ' . Utils::table('vote') . ' SET choices = CONCAT(SUBSTRING(choices, 1, ?), " ", SUBSTRING(choices, ?)) WHERE poll_id = ?'); //#51 : default value for unselected vote
|
||||||
|
|
||||||
return $prepared->execute([$insert_position, $insert_position + 1, $poll_id]);
|
return $prepared->execute([$insert_position, $insert_position + 1, $poll_id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function insert($poll_id, $name, $choices, $token) {
|
function insert($poll_id, $name, $choices, $token, $mail) {
|
||||||
$prepared = $this->prepare('INSERT INTO `' . Utils::table('vote') . '` (poll_id, name, choices, uniqId) VALUES (?,?,?,?)');
|
$this->connect->insert(Utils::table('vote'), ['poll_id' => $poll_id, 'name' => $name, 'choices' => $choices, 'uniqId' => $token, 'mail' => $mail]);
|
||||||
$prepared->execute([$poll_id, $name, $choices, $token]);
|
|
||||||
|
|
||||||
$newVote = new \stdClass();
|
$newVote = new \stdClass();
|
||||||
$newVote->poll_id = $poll_id;
|
$newVote->poll_id = $poll_id;
|
||||||
@ -32,26 +40,38 @@ class VoteRepository extends AbstractRepository {
|
|||||||
$newVote->name = $name;
|
$newVote->name = $name;
|
||||||
$newVote->choices = $choices;
|
$newVote->choices = $choices;
|
||||||
$newVote->uniqId = $token;
|
$newVote->uniqId = $token;
|
||||||
|
$newVote->mail=$mail;
|
||||||
|
|
||||||
return $newVote;
|
return $newVote;
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteById($poll_id, $vote_id) {
|
/**
|
||||||
$prepared = $this->prepare('DELETE FROM `' . Utils::table('vote') . '` WHERE poll_id = ? AND id = ?');
|
* @param $poll_id
|
||||||
|
* @param $vote_id
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function deleteById($poll_id, $vote_id)
|
||||||
|
{
|
||||||
|
return $this->connect->delete(Utils::table('vote'), ['poll_id' => $poll_id, 'id' => $vote_id]) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
return $prepared->execute([$poll_id, $vote_id]);
|
public function deleteOldVotesByPollId($poll_id, $votesToDelete) {
|
||||||
|
$prepared = $this->prepare('DELETE FROM `' . Utils::table('vote') . '` WHERE poll_id = ? ORDER BY `poll_id` ASC LIMIT ' . $votesToDelete);
|
||||||
|
|
||||||
|
return $prepared->execute([$poll_id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete all votes of a given poll.
|
* Delete all votes of a given poll.
|
||||||
*
|
*
|
||||||
* @param $poll_id int The ID of the given poll.
|
* @param $poll_id int The ID of the given poll.
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @return bool|null true if action succeeded.
|
* @return bool|null true if action succeeded.
|
||||||
*/
|
*/
|
||||||
function deleteByPollId($poll_id) {
|
public function deleteByPollId($poll_id)
|
||||||
$prepared = $this->prepare('DELETE FROM `' . Utils::table('vote') . '` WHERE poll_id = ?');
|
{
|
||||||
|
return $this->connect->delete(Utils::table('vote'), ['poll_id' => $poll_id]) > 0;
|
||||||
return $prepared->execute([$poll_id]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,18 +79,33 @@ class VoteRepository extends AbstractRepository {
|
|||||||
*
|
*
|
||||||
* @param $poll_id int The ID of the poll
|
* @param $poll_id int The ID of the poll
|
||||||
* @param $index int The index of the vote into the poll
|
* @param $index int The index of the vote into the poll
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @return bool|null true if action succeeded.
|
* @return bool|null true if action succeeded.
|
||||||
*/
|
*/
|
||||||
function deleteByIndex($poll_id, $index) {
|
public function deleteByIndex($poll_id, $index)
|
||||||
$prepared = $this->prepare('UPDATE `' . Utils::table('vote') . '` SET choices = CONCAT(SUBSTR(choices, 1, ?), SUBSTR(choices, ?)) WHERE poll_id = ?');
|
{
|
||||||
|
$prepared = $this->prepare('UPDATE ' . Utils::table('vote') . ' SET choices = CONCAT(SUBSTR(choices, 1, ?), SUBSTR(choices, ?)) WHERE poll_id = ?');
|
||||||
|
|
||||||
return $prepared->execute([$index, $index + 2, $poll_id]);
|
return $prepared->execute([$index, $index + 2, $poll_id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function update($poll_id, $vote_id, $name, $choices) {
|
/**
|
||||||
$prepared = $this->prepare('UPDATE `' . Utils::table('vote') . '` SET choices = ?, name = ? WHERE poll_id = ? AND id = ?');
|
* @param $poll_id
|
||||||
|
* @param $vote_id
|
||||||
return $prepared->execute([$choices, $name, $poll_id, $vote_id]);
|
* @param $name
|
||||||
|
* @param $choices
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function update($poll_id, $vote_id, $name, $choices, $mail)
|
||||||
|
{
|
||||||
|
return $this->connect->update(Utils::table('vote'), [
|
||||||
|
'choices' => $choices,
|
||||||
|
'name' => $name,
|
||||||
|
'mail' => $mail,
|
||||||
|
], [
|
||||||
|
'poll_id' => $poll_id,
|
||||||
|
'id' => $vote_id,
|
||||||
|
]) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -78,24 +113,26 @@ class VoteRepository extends AbstractRepository {
|
|||||||
*
|
*
|
||||||
* @param int $poll_id ID of the poll
|
* @param int $poll_id ID of the poll
|
||||||
* @param string $name Name of the vote
|
* @param string $name Name of the vote
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @return bool true if vote already exists
|
* @return bool true if vote already exists
|
||||||
*/
|
*/
|
||||||
public function existsByPollIdAndName($poll_id, $name) {
|
public function existsByPollIdAndName($poll_id, $name) {
|
||||||
$prepared = $this->prepare('SELECT 1 FROM `' . Utils::table('vote') . '` WHERE poll_id = ? AND name = ?');
|
$prepared = $this->prepare('SELECT 1 FROM ' . Utils::table('vote') . ' WHERE poll_id = ? AND name = ?');
|
||||||
$prepared->execute([$poll_id, $name]);
|
$prepared->execute([$poll_id, $name]);
|
||||||
return $prepared->rowCount() > 0;
|
return $prepared->rowCount() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if name is already used for the given poll and another vote.
|
* Check if name is already used for the given poll and another vote.
|
||||||
*
|
*
|
||||||
* @param int $poll_id ID of the poll
|
* @param int $poll_id ID of the poll
|
||||||
* @param string $name Name of the vote
|
* @param string $name Name of the vote
|
||||||
* @param int $vote_id ID of the current vote
|
* @param int $vote_id ID of the current vote
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
* @return bool true if vote already exists
|
* @return bool true if vote already exists
|
||||||
*/
|
*/
|
||||||
public function existsByPollIdAndNameAndVoteId($poll_id, $name, $vote_id) {
|
public function existsByPollIdAndNameAndVoteId($poll_id, $name, $vote_id) {
|
||||||
$prepared = $this->prepare('SELECT 1 FROM `' . Utils::table('vote') . '` WHERE poll_id = ? AND name = ? AND id != ?');
|
$prepared = $this->prepare('SELECT 1 FROM ' . Utils::table('vote') . ' WHERE poll_id = ? AND name = ? AND id != ?');
|
||||||
$prepared->execute([$poll_id, $name, $vote_id]);
|
$prepared->execute([$poll_id, $name, $vote_id]);
|
||||||
return $prepared->rowCount() > 0;
|
return $prepared->rowCount() > 0;
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Framadate\Services;
|
namespace Framadate\Services;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Connection;
|
||||||
|
use Doctrine\DBAL\DBALException;
|
||||||
use Framadate\Exception\MomentAlreadyExistsException;
|
use Framadate\Exception\MomentAlreadyExistsException;
|
||||||
use Framadate\FramaDB;
|
|
||||||
use Framadate\Repositories\RepositoryFactory;
|
use Framadate\Repositories\RepositoryFactory;
|
||||||
use Framadate\Utils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class AdminPollService
|
* Class AdminPollService
|
||||||
@ -21,7 +21,7 @@ class AdminPollService {
|
|||||||
private $voteRepository;
|
private $voteRepository;
|
||||||
private $commentRepository;
|
private $commentRepository;
|
||||||
|
|
||||||
function __construct(FramaDB $connect, PollService $pollService, LogService $logService) {
|
function __construct(Connection $connect, PollService $pollService, LogService $logService) {
|
||||||
$this->connect = $connect;
|
$this->connect = $connect;
|
||||||
$this->pollService = $pollService;
|
$this->pollService = $pollService;
|
||||||
$this->logService = $logService;
|
$this->logService = $logService;
|
||||||
@ -35,7 +35,7 @@ class AdminPollService {
|
|||||||
global $config;
|
global $config;
|
||||||
if ($poll->end_date > $poll->creation_date) {
|
if ($poll->end_date > $poll->creation_date) {
|
||||||
return $this->pollRepository->update($poll);
|
return $this->pollRepository->update($poll);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -197,36 +197,46 @@ class AdminPollService {
|
|||||||
* @param $datetime int The datetime
|
* @param $datetime int The datetime
|
||||||
* @param $new_moment string The moment's name
|
* @param $new_moment string The moment's name
|
||||||
* @throws MomentAlreadyExistsException When the moment to add already exists in database
|
* @throws MomentAlreadyExistsException When the moment to add already exists in database
|
||||||
|
* @throws \Doctrine\DBAL\ConnectionException
|
||||||
*/
|
*/
|
||||||
public function addDateSlot($poll_id, $datetime, $new_moment) {
|
public function addDateSlot($poll_id, $datetime, $new_moment) {
|
||||||
$this->logService->log('ADD_COLUMN', 'id:' . $poll_id . ', datetime:' . $datetime . ', moment:' . $new_moment);
|
$this->logService->log('ADD_COLUMN', 'id:' . $poll_id . ', datetime:' . $datetime . ', moment:' . $new_moment);
|
||||||
|
|
||||||
$slots = $this->slotRepository->listByPollId($poll_id);
|
try {
|
||||||
$result = $this->findInsertPosition($slots, $datetime);
|
$slots = $this->slotRepository->listByPollId($poll_id);
|
||||||
|
$result = $this->findInsertPosition($slots, $datetime);
|
||||||
// Begin transaction
|
} catch (DBALException $e) {
|
||||||
$this->connect->beginTransaction();
|
$this->logService->log('ERROR', "Database error, couldn't find slot insert position" . $e->getMessage());
|
||||||
|
return;
|
||||||
if ($result->slot !== null) {
|
|
||||||
$slot = $result->slot;
|
|
||||||
$moments = explode(',', $slot->moments);
|
|
||||||
|
|
||||||
// Check if moment already exists (maybe not necessary)
|
|
||||||
if (in_array($new_moment, $moments, true)) {
|
|
||||||
throw new MomentAlreadyExistsException();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update found slot
|
|
||||||
$moments[] = $new_moment;
|
|
||||||
$this->slotRepository->update($poll_id, $datetime, implode(',', $moments));
|
|
||||||
} else {
|
|
||||||
$this->slotRepository->insert($poll_id, $datetime, $new_moment);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->voteRepository->insertDefault($poll_id, $result->insert);
|
try {
|
||||||
|
// Begin transaction
|
||||||
|
$this->connect->beginTransaction();
|
||||||
|
|
||||||
// Commit transaction
|
if ($result->slot !== null) {
|
||||||
$this->connect->commit();
|
$slot = $result->slot;
|
||||||
|
$moments = explode(',', $slot->moments);
|
||||||
|
|
||||||
|
// Check if moment already exists (maybe not necessary)
|
||||||
|
if (in_array($new_moment, $moments, true)) {
|
||||||
|
throw new MomentAlreadyExistsException();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update found slot
|
||||||
|
$moments[] = $new_moment;
|
||||||
|
$this->slotRepository->update($poll_id, $datetime, implode(',', $moments));
|
||||||
|
} else {
|
||||||
|
$this->slotRepository->insert($poll_id, $datetime, $new_moment);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->voteRepository->insertDefault($poll_id, $result->insert);
|
||||||
|
|
||||||
|
// Commit transaction
|
||||||
|
$this->connect->commit();
|
||||||
|
} catch (DBALException $e) {
|
||||||
|
$this->connect->rollBack();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -238,6 +248,8 @@ class AdminPollService {
|
|||||||
* @param $poll_id int The ID of the poll
|
* @param $poll_id int The ID of the poll
|
||||||
* @param $title int The title
|
* @param $title int The title
|
||||||
* @throws MomentAlreadyExistsException When the moment to add already exists in database
|
* @throws MomentAlreadyExistsException When the moment to add already exists in database
|
||||||
|
* @throws \Doctrine\DBAL\ConnectionException
|
||||||
|
* @throws \Doctrine\DBAL\DBALException
|
||||||
*/
|
*/
|
||||||
public function addClassicSlot($poll_id, $title) {
|
public function addClassicSlot($poll_id, $title) {
|
||||||
$this->logService->log('ADD_COLUMN', 'id:' . $poll_id . ', title:' . $title);
|
$this->logService->log('ADD_COLUMN', 'id:' . $poll_id . ', title:' . $title);
|
||||||
@ -295,11 +307,10 @@ class AdminPollService {
|
|||||||
} elseif ($datetime < $rowDatetime) {
|
} elseif ($datetime < $rowDatetime) {
|
||||||
// We have to insert before this slot
|
// We have to insert before this slot
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$result->insert += count($moments);
|
$result->insert += count($moments);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -115,6 +115,10 @@ class InputService {
|
|||||||
return filter_var($editable, FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => EDITABLE_CHOICE_REGEX]]);
|
return filter_var($editable, FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => EDITABLE_CHOICE_REGEX]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function filterCollectMail($collectMail) {
|
||||||
|
return filter_var($collectMail, FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => COLLECT_MAIL_CHOICE_REGEX]]);
|
||||||
|
}
|
||||||
|
|
||||||
public function filterComment($comment) {
|
public function filterComment($comment) {
|
||||||
$comment = str_replace("\r\n", "\n", $comment);
|
$comment = str_replace("\r\n", "\n", $comment);
|
||||||
return $this->returnIfNotBlank($comment);
|
return $this->returnIfNotBlank($comment);
|
||||||
|
@ -17,6 +17,9 @@
|
|||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
*/
|
*/
|
||||||
namespace Framadate\Services;
|
namespace Framadate\Services;
|
||||||
|
use Doctrine\DBAL\Configuration;
|
||||||
|
use Doctrine\DBAL\DBALException;
|
||||||
|
use Doctrine\DBAL\DriverManager;
|
||||||
use Framadate\Utils;
|
use Framadate\Utils;
|
||||||
use Smarty;
|
use Smarty;
|
||||||
|
|
||||||
@ -33,7 +36,9 @@ class InstallService {
|
|||||||
'cleanUrl' => true,
|
'cleanUrl' => true,
|
||||||
|
|
||||||
// Database configuration
|
// Database configuration
|
||||||
'dbConnectionString' => 'mysql:host=<HOST>;dbname=<SCHEMA>;port=3306',
|
'dbName' => 'framadate',
|
||||||
|
'dbPort' => 3306,
|
||||||
|
'dbHost' => 'localhost',
|
||||||
'dbUser' => 'root',
|
'dbUser' => 'root',
|
||||||
'dbPassword' => '',
|
'dbPassword' => '',
|
||||||
'dbPrefix' => 'fd_',
|
'dbPrefix' => 'fd_',
|
||||||
@ -50,12 +55,12 @@ class InstallService {
|
|||||||
|
|
||||||
public function install(Smarty &$smarty) {
|
public function install(Smarty &$smarty) {
|
||||||
// Check values are present
|
// Check values are present
|
||||||
if (empty($this->fields['appName']) || empty($this->fields['appMail']) || empty($this->fields['defaultLanguage']) || empty($this->fields['dbConnectionString']) || empty($this->fields['dbUser'])) {
|
if (empty($this->fields['appName']) || empty($this->fields['appMail']) || empty($this->fields['defaultLanguage']) || empty($this->fields['dbName']) || empty($this->fields['dbHost']) || empty($this->fields['dbPort']) || empty($this->fields['dbUser'])) {
|
||||||
return $this->error('MISSING_VALUES');
|
return $this->error('MISSING_VALUES');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Connect to database
|
// Connect to database
|
||||||
$connect = $this->connectTo($this->fields['dbConnectionString'], $this->fields['dbUser'], $this->fields['dbPassword']);
|
$connect = $this->connectTo($this->fields);
|
||||||
if (!$connect) {
|
if (!$connect) {
|
||||||
return $this->error('CANT_CONNECT_TO_DATABASE');
|
return $this->error('CANT_CONNECT_TO_DATABASE');
|
||||||
}
|
}
|
||||||
@ -68,13 +73,25 @@ class InstallService {
|
|||||||
return $this->ok();
|
return $this->ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
function connectTo($connectionString, $user, $password) {
|
/**
|
||||||
|
* @param $fields
|
||||||
|
* @return \Doctrine\DBAL\Connection|null
|
||||||
|
*/
|
||||||
|
function connectTo($fields) {
|
||||||
|
$doctrineConfig = new Configuration();
|
||||||
|
$connectionParams = [
|
||||||
|
'dbname' => $fields['dbName'],
|
||||||
|
'user' => $fields['dbUser'],
|
||||||
|
'password' => $fields['dbPassword'],
|
||||||
|
'host' => $fields['dbHost'],
|
||||||
|
'driver' => $fields['dbDriver'],
|
||||||
|
'charset' => $fields['dbDriver'] === 'pdo_mysql' ? 'utf8mb4' : 'utf8',
|
||||||
|
];
|
||||||
try {
|
try {
|
||||||
$pdo = @new \PDO($connectionString, $user, $password);
|
return DriverManager::getConnection($connectionParams, $doctrineConfig);
|
||||||
$pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_OBJ);
|
} catch (DBALException $e) {
|
||||||
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
|
$logger = new LogService();
|
||||||
return $pdo;
|
$logger->log('ERROR', $e->getMessage());
|
||||||
} catch(\Exception $e) {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -91,6 +108,7 @@ class InstallService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $content
|
* @param $content
|
||||||
|
* @return bool|int
|
||||||
*/
|
*/
|
||||||
function writeToFile($content) {
|
function writeToFile($content) {
|
||||||
return @file_put_contents(CONF_FILENAME, $content);
|
return @file_put_contents(CONF_FILENAME, $content);
|
||||||
|
@ -8,18 +8,39 @@ class MailService {
|
|||||||
|
|
||||||
const MAILSERVICE_KEY = 'mailservice';
|
const MAILSERVICE_KEY = 'mailservice';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
private $smtp_allowed;
|
private $smtp_allowed;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
private $smtp_options = [];
|
private $smtp_options = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
private $use_sendmail;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var LogService
|
||||||
|
*/
|
||||||
private $logService;
|
private $logService;
|
||||||
|
|
||||||
function __construct($smtp_allowed, $smtp_options = []) {
|
/**
|
||||||
|
* MailService constructor.
|
||||||
|
* @param $smtp_allowed
|
||||||
|
* @param array $smtp_options
|
||||||
|
* @param bool $use_sendmail
|
||||||
|
*/
|
||||||
|
public function __construct($smtp_allowed, $smtp_options = [], $use_sendmail = false) {
|
||||||
$this->logService = new LogService();
|
$this->logService = new LogService();
|
||||||
$this->smtp_allowed = $smtp_allowed;
|
$this->smtp_allowed = $smtp_allowed;
|
||||||
if (true === is_array($smtp_options)) {
|
if (true === is_array($smtp_options)) {
|
||||||
$this->smtp_options = $smtp_options;
|
$this->smtp_options = $smtp_options;
|
||||||
}
|
}
|
||||||
|
$this->use_sendmail = $use_sendmail;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isValidEmail($email) {
|
public function isValidEmail($email) {
|
||||||
@ -82,7 +103,11 @@ class MailService {
|
|||||||
* @param PHPMailer $mailer
|
* @param PHPMailer $mailer
|
||||||
*/
|
*/
|
||||||
private function configureMailer(PHPMailer $mailer) {
|
private function configureMailer(PHPMailer $mailer) {
|
||||||
$mailer->isSMTP();
|
if ($this->use_sendmail) {
|
||||||
|
$mailer->isSendmail();
|
||||||
|
} else {
|
||||||
|
$mailer->isSMTP();
|
||||||
|
}
|
||||||
|
|
||||||
$available_options = [
|
$available_options = [
|
||||||
'host' => 'Host',
|
'host' => 'Host',
|
||||||
|
@ -18,11 +18,13 @@
|
|||||||
*/
|
*/
|
||||||
namespace Framadate\Services;
|
namespace Framadate\Services;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Connection;
|
||||||
|
use Doctrine\DBAL\ConnectionException;
|
||||||
|
use Doctrine\DBAL\DBALException;
|
||||||
use Framadate\Exception\AlreadyExistsException;
|
use Framadate\Exception\AlreadyExistsException;
|
||||||
use Framadate\Exception\ConcurrentEditionException;
|
use Framadate\Exception\ConcurrentEditionException;
|
||||||
use Framadate\Exception\ConcurrentVoteException;
|
use Framadate\Exception\ConcurrentVoteException;
|
||||||
use Framadate\Form;
|
use Framadate\Form;
|
||||||
use Framadate\FramaDB;
|
|
||||||
use Framadate\Repositories\RepositoryFactory;
|
use Framadate\Repositories\RepositoryFactory;
|
||||||
use Framadate\Security\Token;
|
use Framadate\Security\Token;
|
||||||
|
|
||||||
@ -35,7 +37,7 @@ class PollService {
|
|||||||
private $voteRepository;
|
private $voteRepository;
|
||||||
private $commentRepository;
|
private $commentRepository;
|
||||||
|
|
||||||
function __construct(FramaDB $connect, LogService $logService) {
|
function __construct(Connection $connect, LogService $logService) {
|
||||||
$this->connect = $connect;
|
$this->connect = $connect;
|
||||||
$this->logService = $logService;
|
$this->logService = $logService;
|
||||||
$this->pollRepository = RepositoryFactory::pollRepository();
|
$this->pollRepository = RepositoryFactory::pollRepository();
|
||||||
@ -51,23 +53,45 @@ class PollService {
|
|||||||
* @return \stdClass|null The found poll, or null
|
* @return \stdClass|null The found poll, or null
|
||||||
*/
|
*/
|
||||||
function findById($poll_id) {
|
function findById($poll_id) {
|
||||||
if (preg_match(POLL_REGEX, $poll_id)) {
|
try {
|
||||||
return $this->pollRepository->findById($poll_id);
|
if (preg_match(POLL_REGEX, $poll_id)) {
|
||||||
|
return $this->pollRepository->findById($poll_id);
|
||||||
|
}
|
||||||
|
} catch (DBALException $e) {
|
||||||
|
$this->logService->log('ERROR', 'Database error : ' . $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $admin_poll_id
|
||||||
|
* @return mixed|null
|
||||||
|
*/
|
||||||
public function findByAdminId($admin_poll_id) {
|
public function findByAdminId($admin_poll_id) {
|
||||||
if (preg_match(ADMIN_POLL_REGEX, $admin_poll_id)) {
|
try {
|
||||||
return $this->pollRepository->findByAdminId($admin_poll_id);
|
if (preg_match(ADMIN_POLL_REGEX, $admin_poll_id)) {
|
||||||
|
return $this->pollRepository->findByAdminId($admin_poll_id);
|
||||||
|
}
|
||||||
|
} catch (DBALException $e) {
|
||||||
|
$this->logService->log('ERROR', 'Database error : ' . $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function allCommentsByPollId($poll_id) {
|
/**
|
||||||
return $this->commentRepository->findAllByPollId($poll_id);
|
* @param $poll_id
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function allCommentsByPollId($poll_id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return $this->commentRepository->findAllByPollId($poll_id);
|
||||||
|
} catch (DBALException $e) {
|
||||||
|
$this->logService->log('error', $e->getMessage());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function allVotesByPollId($poll_id) {
|
function allVotesByPollId($poll_id) {
|
||||||
@ -88,43 +112,45 @@ class PollService {
|
|||||||
* @param $name
|
* @param $name
|
||||||
* @param $choices
|
* @param $choices
|
||||||
* @param $slots_hash
|
* @param $slots_hash
|
||||||
|
* @param string $mail
|
||||||
* @throws AlreadyExistsException
|
* @throws AlreadyExistsException
|
||||||
* @throws ConcurrentEditionException
|
* @throws ConcurrentEditionException
|
||||||
* @throws ConcurrentVoteException
|
* @throws ConcurrentVoteException
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function updateVote($poll_id, $vote_id, $name, $choices, $slots_hash) {
|
public function updateVote($poll_id, $vote_id, $name, $choices, $slots_hash, $mail) {
|
||||||
$this->checkVoteConstraints($choices, $poll_id, $slots_hash, $name, $vote_id);
|
$this->checkVoteConstraints($choices, $poll_id, $slots_hash, $name, $vote_id);
|
||||||
|
|
||||||
// Update vote
|
// Update vote
|
||||||
$choices = implode($choices);
|
$choices = implode($choices);
|
||||||
return $this->voteRepository->update($poll_id, $vote_id, $name, $choices);
|
return $this->voteRepository->update($poll_id, $vote_id, $name, $choices, $mail);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $poll_id
|
* @param $poll_id
|
||||||
* @param $name
|
* @param $name
|
||||||
* @param $choices
|
* @param $choices
|
||||||
* @param $slots_hash
|
* @param $slots_hash
|
||||||
|
* @param string $mail
|
||||||
* @throws AlreadyExistsException
|
* @throws AlreadyExistsException
|
||||||
* @throws ConcurrentEditionException
|
* @throws ConcurrentEditionException
|
||||||
* @throws ConcurrentVoteException
|
* @throws ConcurrentVoteException
|
||||||
* @return \stdClass
|
* @return \stdClass
|
||||||
*/
|
*/
|
||||||
function addVote($poll_id, $name, $choices, $slots_hash) {
|
function addVote($poll_id, $name, $choices, $slots_hash, $mail) {
|
||||||
$this->checkVoteConstraints($choices, $poll_id, $slots_hash, $name);
|
$this->checkVoteConstraints($choices, $poll_id, $slots_hash, $name);
|
||||||
|
|
||||||
// Insert new vote
|
// Insert new vote
|
||||||
$choices = implode($choices);
|
$choices = implode($choices);
|
||||||
$token = $this->random(16);
|
$token = $this->random(16);
|
||||||
return $this->voteRepository->insert($poll_id, $name, $choices, $token);
|
return $this->voteRepository->insert($poll_id, $name, $choices, $token, $mail);
|
||||||
}
|
}
|
||||||
|
|
||||||
function addComment($poll_id, $name, $comment) {
|
function addComment($poll_id, $name, $comment) {
|
||||||
if ($this->commentRepository->exists($poll_id, $name, $comment)) {
|
if ($this->commentRepository->exists($poll_id, $name, $comment)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->commentRepository->insert($poll_id, $name, $comment);
|
return $this->commentRepository->insert($poll_id, $name, $comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,27 +161,36 @@ class PollService {
|
|||||||
function createPoll(Form $form) {
|
function createPoll(Form $form) {
|
||||||
// Generate poll IDs, loop while poll ID already exists
|
// Generate poll IDs, loop while poll ID already exists
|
||||||
|
|
||||||
if (empty($form->id)) { // User want us to generate an id for him
|
|
||||||
do {
|
|
||||||
$poll_id = $this->random(16);
|
|
||||||
} while ($this->pollRepository->existsById($poll_id));
|
|
||||||
$admin_poll_id = $poll_id . $this->random(8);
|
|
||||||
} else { // User have choosen the poll id
|
|
||||||
$poll_id = $form->id;
|
|
||||||
do {
|
|
||||||
$admin_poll_id = $this->random(24);
|
|
||||||
} while ($this->pollRepository->existsByAdminId($admin_poll_id));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Insert poll + slots
|
|
||||||
$this->pollRepository->beginTransaction();
|
$this->pollRepository->beginTransaction();
|
||||||
$this->pollRepository->insertPoll($poll_id, $admin_poll_id, $form);
|
try {
|
||||||
$this->slotRepository->insertSlots($poll_id, $form->getChoices());
|
if (empty($form->id)) { // User want us to generate an id for him
|
||||||
$this->pollRepository->commit();
|
do {
|
||||||
|
$poll_id = $this->random(16);
|
||||||
|
} while ($this->pollRepository->existsById($poll_id));
|
||||||
|
$admin_poll_id = $poll_id . $this->random(8);
|
||||||
|
} else { // User have choosen the poll id
|
||||||
|
$poll_id = $form->id;
|
||||||
|
do {
|
||||||
|
$admin_poll_id = $this->random(24);
|
||||||
|
} while ($this->pollRepository->existsByAdminId($admin_poll_id));
|
||||||
|
}
|
||||||
|
|
||||||
$this->logService->log('CREATE_POLL', 'id:' . $poll_id . ', title: ' . $form->title . ', format:' . $form->format . ', admin:' . $form->admin_name . ', mail:' . $form->admin_mail);
|
// Insert poll + slots
|
||||||
|
$this->pollRepository->insertPoll($poll_id, $admin_poll_id, $form);
|
||||||
|
$this->slotRepository->insertSlots($poll_id, $form->getChoices());
|
||||||
|
$this->pollRepository->commit();
|
||||||
|
|
||||||
return [$poll_id, $admin_poll_id];
|
$this->logService->log(
|
||||||
|
'CREATE_POLL',
|
||||||
|
'id:' . $poll_id . ', title: ' . $form->title . ', format:' . $form->format . ', admin:' . $form->admin_name . ', mail:' . $form->admin_mail
|
||||||
|
);
|
||||||
|
|
||||||
|
return [$poll_id, $admin_poll_id];
|
||||||
|
} catch (DBALException $e) {
|
||||||
|
$this->pollRepository->rollback();
|
||||||
|
$this->logService->log('ERROR', "Poll couldn't be saved : " . $e->getMessage());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function findAllByAdminMail($mail) {
|
public function findAllByAdminMail($mail) {
|
||||||
@ -224,6 +259,7 @@ class PollService {
|
|||||||
$obj->name = $vote->name;
|
$obj->name = $vote->name;
|
||||||
$obj->uniqId = $vote->uniqId;
|
$obj->uniqId = $vote->uniqId;
|
||||||
$obj->choices = str_split($vote->choices);
|
$obj->choices = str_split($vote->choices);
|
||||||
|
$obj->mail = $vote->mail;
|
||||||
|
|
||||||
$splitted[] = $obj;
|
$splitted[] = $obj;
|
||||||
}
|
}
|
||||||
@ -292,7 +328,7 @@ class PollService {
|
|||||||
private function random($length) {
|
private function random($length) {
|
||||||
return Token::getToken($length);
|
return Token::getToken($length);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $choices
|
* @param $choices
|
||||||
* @param $poll_id
|
* @param $poll_id
|
||||||
@ -310,20 +346,20 @@ class PollService {
|
|||||||
} else {
|
} else {
|
||||||
$exists = $this->voteRepository->existsByPollIdAndNameAndVoteId($poll_id, $name, $vote_id);
|
$exists = $this->voteRepository->existsByPollIdAndNameAndVoteId($poll_id, $name, $vote_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($exists) {
|
if ($exists) {
|
||||||
throw new AlreadyExistsException();
|
throw new AlreadyExistsException();
|
||||||
}
|
}
|
||||||
|
|
||||||
$poll = $this->findById($poll_id);
|
$poll = $this->findById($poll_id);
|
||||||
|
|
||||||
// Check that no-one voted in the meantime and it conflicts the maximum votes constraint
|
// Check that no-one voted in the meantime and it conflicts the maximum votes constraint
|
||||||
$this->checkMaxVotes($choices, $poll, $poll_id);
|
$this->checkMaxVotes($choices, $poll, $poll_id);
|
||||||
|
|
||||||
// Check if slots are still the same
|
// Check if slots are still the same
|
||||||
$this->checkThatSlotsDidntChanged($poll, $slots_hash);
|
$this->checkThatSlotsDidntChanged($poll, $slots_hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method checks if the hash send by the user is the same as the computed hash.
|
* This method checks if the hash send by the user is the same as the computed hash.
|
||||||
*
|
*
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Framadate\Services;
|
namespace Framadate\Services;
|
||||||
use Framadate\FramaDB;
|
use Doctrine\DBAL\Connection;
|
||||||
|
use Doctrine\DBAL\DBALException;
|
||||||
use Framadate\Repositories\RepositoryFactory;
|
use Framadate\Repositories\RepositoryFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -15,7 +16,7 @@ class PurgeService {
|
|||||||
private $voteRepository;
|
private $voteRepository;
|
||||||
private $commentRepository;
|
private $commentRepository;
|
||||||
|
|
||||||
function __construct(FramaDB $connect, LogService $logService) {
|
function __construct(Connection $connect, LogService $logService) {
|
||||||
$this->logService = $logService;
|
$this->logService = $logService;
|
||||||
$this->pollRepository = RepositoryFactory::pollRepository();
|
$this->pollRepository = RepositoryFactory::pollRepository();
|
||||||
$this->slotRepository = RepositoryFactory::slotRepository();
|
$this->slotRepository = RepositoryFactory::slotRepository();
|
||||||
@ -23,52 +24,91 @@ class PurgeService {
|
|||||||
$this->commentRepository = RepositoryFactory::commentRepository();
|
$this->commentRepository = RepositoryFactory::commentRepository();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function repeatedCleanings() {
|
||||||
|
$this->purgeOldPolls();
|
||||||
|
|
||||||
|
if (0 === time() % 10) {
|
||||||
|
$this->cleanDemoPoll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This methode purges all old polls (the ones with end_date in past).
|
* This methode purges all old polls (the ones with end_date in past).
|
||||||
*
|
*
|
||||||
* @return bool true is action succeeded
|
* @return bool true is action succeeded
|
||||||
*/
|
*/
|
||||||
function purgeOldPolls() {
|
public function purgeOldPolls() {
|
||||||
$oldPolls = $this->pollRepository->findOldPolls();
|
try {
|
||||||
$count = count($oldPolls);
|
$oldPolls = $this->pollRepository->findOldPolls();
|
||||||
|
$count = count($oldPolls);
|
||||||
|
|
||||||
if ($count > 0) {
|
if ($count > 0) {
|
||||||
$this->logService->log('EXPIRATION', 'Going to purge ' . $count . ' poll(s)...');
|
$this->logService->log('EXPIRATION', 'Going to purge ' . $count . ' poll(s)...');
|
||||||
|
|
||||||
foreach ($oldPolls as $poll) {
|
foreach ($oldPolls as $poll) {
|
||||||
if ($this->purgePollById($poll->id)) {
|
if ($this->purgePollById($poll->id)) {
|
||||||
$this->logService->log('EXPIRATION_SUCCESS', 'id: ' . $poll->id . ', title:' . $poll->title . ', format: ' . $poll->format . ', admin: ' . $poll->admin_name);
|
$this->logService->log(
|
||||||
} else {
|
'EXPIRATION_SUCCESS',
|
||||||
$this->logService->log('EXPIRATION_FAILED', 'id: ' . $poll->id . ', title:' . $poll->title . ', format: ' . $poll->format . ', admin: ' . $poll->admin_name);
|
'id: ' . $poll->id . ', title:' . $poll->title . ', format: ' . $poll->format . ', admin: ' . $poll->admin_name
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->logService->log(
|
||||||
|
'EXPIRATION_FAILED',
|
||||||
|
'id: ' . $poll->id . ', title:' . $poll->title . ', format: ' . $poll->format . ', admin: ' . $poll->admin_name
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $count;
|
||||||
|
} catch (DBALException $e) {
|
||||||
|
$this->logService->log('ERROR', $e->getMessage());
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $count;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function cleanDemoPoll() {
|
||||||
|
if (!defined("DEMO_POLL_ID") || !defined("DEMO_POLL_NUMBER_VOTES")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->voteRepository->beginTransaction();
|
||||||
|
|
||||||
|
$demoVotes = $this->voteRepository->allUserVotesByPollId(DEMO_POLL_ID);
|
||||||
|
$votesToDelete = count($demoVotes) - DEMO_POLL_NUMBER_VOTES;
|
||||||
|
|
||||||
|
if ($votesToDelete > 0) {
|
||||||
|
$this->voteRepository->deleteOldVotesByPollId(DEMO_POLL_ID, $votesToDelete);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->voteRepository->commit();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This methode delete all data about a poll.
|
* This methode delete all data about a poll.
|
||||||
*
|
*
|
||||||
* @param $poll_id int The ID of the poll
|
* @param $poll_id int The ID of the poll
|
||||||
* @return bool true is action succeeded
|
* @return bool true is action succeeded
|
||||||
*/
|
*/
|
||||||
function purgePollById($poll_id) {
|
private function purgePollById($poll_id) {
|
||||||
$done = true;
|
$done = true;
|
||||||
|
|
||||||
$this->pollRepository->beginTransaction();
|
try {
|
||||||
$done &= $this->commentRepository->deleteByPollId($poll_id);
|
$this->pollRepository->beginTransaction();
|
||||||
$done &= $this->voteRepository->deleteByPollId($poll_id);
|
$done &= $this->commentRepository->deleteByPollId($poll_id);
|
||||||
$done &= $this->slotRepository->deleteByPollId($poll_id);
|
$done &= $this->voteRepository->deleteByPollId($poll_id);
|
||||||
$done &= $this->pollRepository->deleteById($poll_id);
|
$done &= $this->slotRepository->deleteByPollId($poll_id);
|
||||||
|
$done &= $this->pollRepository->deleteById($poll_id);
|
||||||
|
|
||||||
if ($done) {
|
if ($done) {
|
||||||
$this->pollRepository->commit();
|
$this->pollRepository->commit();
|
||||||
} else {
|
} else {
|
||||||
$this->pollRepository->rollback();
|
$this->pollRepository->rollback();
|
||||||
|
}
|
||||||
|
} catch (DBALException $e) {
|
||||||
|
$this->logService->log('ERROR', $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
return $done;
|
return $done;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -25,13 +25,16 @@ class Utils {
|
|||||||
* @return string Server name
|
* @return string Server name
|
||||||
*/
|
*/
|
||||||
public static function get_server_name() {
|
public static function get_server_name() {
|
||||||
|
$serverName = isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : '';
|
||||||
|
$serverPort = isset($_SERVER['SERVER_PORT']) ? $_SERVER['SERVER_PORT'] : '';
|
||||||
|
|
||||||
$scheme = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https')) ? 'https' : 'http';
|
$scheme = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https')) ? 'https' : 'http';
|
||||||
$port = in_array($_SERVER['SERVER_PORT'], ['80', '443'], true) ? '' : ':' . $_SERVER['SERVER_PORT'];
|
$port = in_array($serverPort, ['80', '443'], true) ? '' : ':' . $serverPort;
|
||||||
$dirname = dirname($_SERVER['SCRIPT_NAME']);
|
$dirname = dirname($_SERVER['SCRIPT_NAME']);
|
||||||
$dirname = $dirname === '\\' ? '/' : $dirname . '/';
|
$dirname = $dirname === '\\' ? '/' : $dirname . '/';
|
||||||
$dirname = str_replace('/admin', '', $dirname);
|
$dirname = str_replace('/admin', '', $dirname);
|
||||||
$dirname = str_replace('/action', '', $dirname);
|
$dirname = str_replace('/action', '', $dirname);
|
||||||
$server_name = (defined('APP_URL') ? APP_URL : $_SERVER['SERVER_NAME']) . $port . $dirname;
|
$server_name = (defined('APP_URL') ? APP_URL : $serverName) . $port . $dirname;
|
||||||
|
|
||||||
return $scheme . '://' . preg_replace('#//+#', '/', $server_name);
|
return $scheme . '://' . preg_replace('#//+#', '/', $server_name);
|
||||||
}
|
}
|
||||||
|
116
app/inc/config.test.php
Normal file
116
app/inc/config.test.php
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This software is governed by the CeCILL-B license. If a copy of this license
|
||||||
|
* is not distributed with this file, you can obtain one at
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
||||||
|
*
|
||||||
|
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Raphaël DROZ
|
||||||
|
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
||||||
|
*
|
||||||
|
* =============================
|
||||||
|
*
|
||||||
|
* Ce logiciel est régi par la licence CeCILL-B. Si une copie de cette licence
|
||||||
|
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
||||||
|
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
||||||
|
*
|
||||||
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Fully qualified domain name of your webserver.
|
||||||
|
// If this is unset or empty, the servername is determined automatically.
|
||||||
|
// You *have to set this* if you are running Framadate behind a reverse proxy.
|
||||||
|
// const APP_URL = '<www.mydomain.fr>';
|
||||||
|
|
||||||
|
// Application name
|
||||||
|
const NOMAPPLICATION = 'Framadate';
|
||||||
|
|
||||||
|
// Database administrator email
|
||||||
|
const ADRESSEMAILADMIN = 'admin@app.tld';
|
||||||
|
|
||||||
|
// Email for automatic responses (you should set it to "no-reply")
|
||||||
|
const ADRESSEMAILREPONSEAUTO = 'no@reply';
|
||||||
|
|
||||||
|
// Database driver
|
||||||
|
const DB_DRIVER = 'pdo_sqlite';
|
||||||
|
|
||||||
|
// Database name
|
||||||
|
const DB_NAME = 'framadate';
|
||||||
|
|
||||||
|
// Database host
|
||||||
|
const DB_HOST = '';
|
||||||
|
|
||||||
|
// Database port
|
||||||
|
const DB_PORT = '';
|
||||||
|
|
||||||
|
// Database user
|
||||||
|
const DB_USER = '';
|
||||||
|
|
||||||
|
// Database password
|
||||||
|
const DB_PASSWORD = '';
|
||||||
|
|
||||||
|
// Table name prefix
|
||||||
|
const TABLENAME_PREFIX = 'fd_';
|
||||||
|
|
||||||
|
// Name of the table that stores migration script already executed
|
||||||
|
const MIGRATION_TABLE = 'framadate_migration';
|
||||||
|
|
||||||
|
// Default Language
|
||||||
|
const DEFAULT_LANGUAGE = 'fr';
|
||||||
|
|
||||||
|
// List of supported languages, fake constant as arrays can be used as constants only in PHP >=5.6
|
||||||
|
$ALLOWED_LANGUAGES = [
|
||||||
|
'fr' => 'Français',
|
||||||
|
'en' => 'English',
|
||||||
|
'oc' => 'Occitan',
|
||||||
|
'es' => 'Español',
|
||||||
|
'de' => 'Deutsch',
|
||||||
|
'nl' => 'Dutch',
|
||||||
|
'it' => 'Italiano',
|
||||||
|
'br' => 'Brezhoneg',
|
||||||
|
];
|
||||||
|
|
||||||
|
// Path to image file with the title
|
||||||
|
const IMAGE_TITRE = 'images/logo-framadate.png';
|
||||||
|
|
||||||
|
// Clean URLs, boolean
|
||||||
|
const URL_PROPRE = false;
|
||||||
|
|
||||||
|
// Use REMOTE_USER data provided by web server
|
||||||
|
const USE_REMOTE_USER = true;
|
||||||
|
|
||||||
|
// Path to the log file
|
||||||
|
const LOG_FILE = 'admin/stdout.log';
|
||||||
|
|
||||||
|
// Days (after expiration date) before purging a poll
|
||||||
|
const PURGE_DELAY = 60;
|
||||||
|
|
||||||
|
// Max slots per poll
|
||||||
|
const MAX_SLOTS_PER_POLL = 366;
|
||||||
|
|
||||||
|
// Number of seconds before we allow to resend an "Remember Edit Link" email.
|
||||||
|
const TIME_EDIT_LINK_EMAIL = 60;
|
||||||
|
|
||||||
|
// Config
|
||||||
|
$config = [
|
||||||
|
/* general config */
|
||||||
|
'use_smtp' => false, // use email for polls creation/modification/responses notification
|
||||||
|
'smtp_options' => [
|
||||||
|
'host' => 'localhost', // SMTP server (you could add many servers (main and backup for example) : use ";" like separator
|
||||||
|
'auth' => false, // Enable SMTP authentication
|
||||||
|
'username' => '', // SMTP username
|
||||||
|
'password' => '', // SMTP password
|
||||||
|
'secure' => '', // Enable encryption (false, tls or ssl)
|
||||||
|
'port' => 25, // TCP port to connect to
|
||||||
|
],
|
||||||
|
/* home */
|
||||||
|
'show_what_is_that' => true, // display "how to use" section
|
||||||
|
'show_the_software' => true, // display technical information about the software
|
||||||
|
'show_cultivate_your_garden' => true, // display "development and administration" information
|
||||||
|
/* create_classic_poll.php / create_date_poll.php */
|
||||||
|
'default_poll_duration' => 180, // default values for the new poll duration (number of days).
|
||||||
|
/* create_classic_poll.php */
|
||||||
|
'user_can_add_img_or_link' => true, // user can add link or URL when creating his poll.
|
||||||
|
'markdown_editor_by_default' => true, // The markdown editor for the description is enabled by default
|
||||||
|
'provide_fork_awesome' => true, // Whether the build-in fork-awesome should be provided
|
||||||
|
];
|
@ -18,7 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// FRAMADATE version
|
// FRAMADATE version
|
||||||
const VERSION = '1.1.7';
|
const VERSION = '1.2.0';
|
||||||
|
|
||||||
// PHP Needed version
|
// PHP Needed version
|
||||||
const PHP_NEEDED_VERSION = '5.6';
|
const PHP_NEEDED_VERSION = '5.6';
|
||||||
@ -33,6 +33,7 @@ const CHOICE_REGEX = '/^[ 012]$/';
|
|||||||
const BOOLEAN_REGEX = '/^(on|off|true|false|1|0)$/i';
|
const BOOLEAN_REGEX = '/^(on|off|true|false|1|0)$/i';
|
||||||
const BOOLEAN_TRUE_REGEX = '/^(on|true|1)$/i';
|
const BOOLEAN_TRUE_REGEX = '/^(on|true|1)$/i';
|
||||||
const EDITABLE_CHOICE_REGEX = '/^[0-2]$/';
|
const EDITABLE_CHOICE_REGEX = '/^[0-2]$/';
|
||||||
|
const COLLECT_MAIL_CHOICE_REGEX = '/^[0-3]$/';
|
||||||
const BASE64_REGEX = '/^[A-Za-z0-9]+$/';
|
const BASE64_REGEX = '/^[A-Za-z0-9]+$/';
|
||||||
const MD5_REGEX = '/^[A-Fa-f0-9]{32}$/';
|
const MD5_REGEX = '/^[A-Fa-f0-9]{32}$/';
|
||||||
|
|
||||||
|
@ -16,8 +16,12 @@
|
|||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
*/
|
*/
|
||||||
use Framadate\FramaDB;
|
|
||||||
|
use Doctrine\DBAL\Configuration;
|
||||||
|
use Doctrine\DBAL\DBALException;
|
||||||
|
use Doctrine\DBAL\DriverManager;
|
||||||
use Framadate\Repositories\RepositoryFactory;
|
use Framadate\Repositories\RepositoryFactory;
|
||||||
|
use Framadate\Services\LogService;
|
||||||
|
|
||||||
// Autoloading of dependencies with Composer
|
// Autoloading of dependencies with Composer
|
||||||
require_once __DIR__ . '/../../vendor/autoload.php';
|
require_once __DIR__ . '/../../vendor/autoload.php';
|
||||||
@ -32,17 +36,41 @@ if (ini_get('date.timezone') === '') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
define('ROOT_DIR', __DIR__ . '/../../');
|
define('ROOT_DIR', __DIR__ . '/../../');
|
||||||
define('CONF_FILENAME', ROOT_DIR . '/app/inc/config.php');
|
|
||||||
|
$path = '/app/inc/config.php';
|
||||||
|
if (getenv('APP_ENV') === 'test') {
|
||||||
|
$path = '/app/inc/config.test.php';
|
||||||
|
}
|
||||||
|
define('CONF_FILENAME', ROOT_DIR . $path);
|
||||||
|
|
||||||
require_once __DIR__ . '/constants.php';
|
require_once __DIR__ . '/constants.php';
|
||||||
|
|
||||||
if (is_file(CONF_FILENAME)) {
|
if (is_file(CONF_FILENAME)) {
|
||||||
@include_once __DIR__ . '/config.php';
|
@include_once CONF_FILENAME;
|
||||||
|
|
||||||
// Connection to database
|
// Connection to database
|
||||||
$connect = new FramaDB(DB_CONNECTION_STRING, DB_USER, DB_PASSWORD);
|
$doctrineConfig = new Configuration();
|
||||||
RepositoryFactory::init($connect);
|
$connectionParams = [
|
||||||
$err = 0;
|
'dbname' => DB_NAME,
|
||||||
|
'user' => DB_USER,
|
||||||
|
'password' => DB_PASSWORD,
|
||||||
|
'host' => DB_HOST,
|
||||||
|
'driver' => DB_DRIVER,
|
||||||
|
'charset' => DB_DRIVER === 'pdo_mysql' ? 'utf8mb4' : 'utf8',
|
||||||
|
];
|
||||||
|
|
||||||
|
if (DB_DRIVER === 'pdo_sqlite') {
|
||||||
|
$connectionParams['path'] = 'test_database.sqlite';
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$connect = DriverManager::getConnection($connectionParams, $doctrineConfig);
|
||||||
|
RepositoryFactory::init($connect);
|
||||||
|
$err = 0;
|
||||||
|
} catch (DBALException $e) {
|
||||||
|
$logger = new LogService();
|
||||||
|
$logger->log('ERROR', $e->getMessage());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
define('NOMAPPLICATION', 'Framadate');
|
define('NOMAPPLICATION', 'Framadate');
|
||||||
define('DEFAULT_LANGUAGE', 'fr');
|
define('DEFAULT_LANGUAGE', 'fr');
|
||||||
|
@ -25,11 +25,14 @@ $smarty->setCompileDir(ROOT_DIR . COMPILE_DIR);
|
|||||||
$smarty->setCacheDir(ROOT_DIR . '/cache/');
|
$smarty->setCacheDir(ROOT_DIR . '/cache/');
|
||||||
$smarty->caching = false;
|
$smarty->caching = false;
|
||||||
|
|
||||||
|
$serverName = isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : '';
|
||||||
|
|
||||||
$smarty->assign('APPLICATION_NAME', NOMAPPLICATION);
|
$smarty->assign('APPLICATION_NAME', NOMAPPLICATION);
|
||||||
$smarty->assign('SERVER_URL', Utils::get_server_name());
|
$smarty->assign('SERVER_URL', Utils::get_server_name());
|
||||||
$smarty->assign('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']);
|
$smarty->assign('SCRIPT_NAME', $_SERVER['SCRIPT_NAME']);
|
||||||
$smarty->assign('TITLE_IMAGE', IMAGE_TITRE);
|
$smarty->assign('TITLE_IMAGE', IMAGE_TITRE);
|
||||||
$smarty->assign('use_nav_js', strstr($_SERVER['SERVER_NAME'], 'framadate.org'));
|
|
||||||
|
$smarty->assign('use_nav_js', strstr($serverName, 'framadate.org'));
|
||||||
$smarty->assign('provide_fork_awesome', !isset($config['provide_fork_awesome']) || $config['provide_fork_awesome']);
|
$smarty->assign('provide_fork_awesome', !isset($config['provide_fork_awesome']) || $config['provide_fork_awesome']);
|
||||||
$smarty->assign('locale', $locale);
|
$smarty->assign('locale', $locale);
|
||||||
$smarty->assign('langs', $ALLOWED_LANGUAGES);
|
$smarty->assign('langs', $ALLOWED_LANGUAGES);
|
||||||
@ -42,7 +45,7 @@ if (defined('FAVICON')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Dev Mode
|
// Dev Mode
|
||||||
if (isset($_SERVER['FRAMADATE_DEVMODE']) && $_SERVER['FRAMADATE_DEVMODE']) {
|
if (isset($_SERVER['FRAMADATE_DEVMODE']) && $_SERVER['FRAMADATE_DEVMODE'] || php_sapi_name() === 'cli-server') {
|
||||||
$smarty->force_compile = true;
|
$smarty->force_compile = true;
|
||||||
$smarty->compile_check = true;
|
$smarty->compile_check = true;
|
||||||
} else {
|
} else {
|
||||||
@ -77,6 +80,21 @@ function smarty_modifier_html($html) {
|
|||||||
return Utils::htmlEscape($html);
|
return Utils::htmlEscape($html);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* markdown_to_text
|
||||||
|
* Retrieves a markdown string and tries to make a plain text value
|
||||||
|
*
|
||||||
|
* @param array $options
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function smarty_function_markdown_to_text($options, Smarty_Internal_Template $template)
|
||||||
|
{
|
||||||
|
$locale = \o80\i18n\I18N::instance()->getLoadedLang();
|
||||||
|
$text = strip_tags(Parsedown::instance()->text($options['markdown']));
|
||||||
|
$number_letters = (new NumberFormatter($locale, NumberFormatter::ORDINAL))->format($options['id'] + 1);
|
||||||
|
return $text !== '' ? $text : __f('Poll results', '%s option', $number_letters);
|
||||||
|
}
|
||||||
|
|
||||||
function smarty_modifier_html_special_chars($html) {
|
function smarty_modifier_html_special_chars($html) {
|
||||||
return Utils::htmlMailEscape($html);
|
return Utils::htmlMailEscape($html);
|
||||||
}
|
}
|
||||||
|
@ -1,32 +1,35 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Framadate\Services;
|
namespace Framadate\Services;
|
||||||
|
|
||||||
use Framadate\FramaTestCase;
|
use Framadate\FramaTestCase;
|
||||||
|
|
||||||
class InputServiceUnitTest extends FramaTestCase
|
class InputServiceUnitTest extends FramaTestCase
|
||||||
{
|
{
|
||||||
public function liste_emails() {
|
public function liste_emails()
|
||||||
|
{
|
||||||
return [
|
return [
|
||||||
// valids addresses
|
// valids addresses
|
||||||
"valid address" => ["example@example.com", "example@example.com"],
|
"valid address" => ["example@example.com", "example@example.com"],
|
||||||
"local address" => ["test@localhost", "test@localhost"],
|
"local address" => ["test@localhost", "test@localhost"],
|
||||||
"IP address" => ["ip.email@127.0.0.1", "ip.email@127.0.0.1"],
|
"IP address" => ["ip.email@127.0.0.1", "ip.email@127.0.0.1"],
|
||||||
"with spaces arround" => [" with@spaces ", "with@spaces"],
|
"with spaces arround" => [" with@spaces ", "with@spaces"],
|
||||||
"unicode caracters" => ["unicode.éà@idn-œ.com", "unicode.éà@idn-œ.com"],
|
"unicode caracters" => ["unicode.éà@idn-œ.com", "unicode.éà@idn-œ.com"],
|
||||||
// invalids addresses
|
// invalids addresses
|
||||||
"without domain" => ["without-domain", FALSE],
|
"without domain" => ["without-domain", FALSE],
|
||||||
"space inside" => ["example example@example.com", FALSE],
|
"space inside" => ["example example@example.com", FALSE],
|
||||||
"forbidden chars" => ["special_chars.@example.com", FALSE],
|
"forbidden chars" => ["special_chars.@example.com", FALSE],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider liste_emails
|
* @dataProvider liste_emails
|
||||||
*/
|
*/
|
||||||
public function test_filterMail($email, $expected) {
|
public function test_filterMail($email, $expected)
|
||||||
$inputService = new InputService();
|
{
|
||||||
$filtered = $inputService->filterMail($email);
|
$inputService = new InputService();
|
||||||
|
$filtered = $inputService->filterMail($email);
|
||||||
|
|
||||||
$this->assertSame($expected, $filtered);
|
$this->assertSame($expected, $filtered);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,15 +43,6 @@ function bandeau_titre($titre)
|
|||||||
<hr class="trait" role="presentation" />
|
<hr class="trait" role="presentation" />
|
||||||
</header>
|
</header>
|
||||||
<main role="main">';
|
<main role="main">';
|
||||||
|
|
||||||
global $connect;
|
|
||||||
$tables = $connect->allTables();
|
|
||||||
$diff = array_diff([Utils::table('comment'), Utils::table('poll'), Utils::table('slot'), Utils::table('vote')], $tables);
|
|
||||||
if (0 !== count($diff)) {
|
|
||||||
echo '<div class="alert alert-danger">' . __('Error', 'Framadate is not properly installed, please check the "INSTALL" to setup the database before continuing.') . '</div>';
|
|
||||||
bandeau_pied();
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function liste_lang()
|
function liste_lang()
|
||||||
|
58
bin/doctrine
Executable file
58
bin/doctrine
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Migrations\Configuration\Configuration;
|
||||||
|
use Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper;
|
||||||
|
use Framadate\Utils;
|
||||||
|
use Symfony\Component\Console\Application;
|
||||||
|
use Symfony\Component\Console\Helper\HelperSet;
|
||||||
|
use Symfony\Component\Console\Helper\QuestionHelper;
|
||||||
|
use Symfony\Component\Console\Input\ArgvInput;
|
||||||
|
use Symfony\Component\Console\Output\ConsoleOutput;
|
||||||
|
use Symfony\Component\Console\Style\SymfonyStyle;
|
||||||
|
|
||||||
|
try {
|
||||||
|
require_once __DIR__ . '/../app/inc/init.php';
|
||||||
|
|
||||||
|
$input = new ArgvInput();
|
||||||
|
$output = new ConsoleOutput();
|
||||||
|
$style = new SymfonyStyle($input, $output);
|
||||||
|
|
||||||
|
if ($connect === null) {
|
||||||
|
throw new \Exception("Undefined database connection\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// replace the ConsoleRunner::run() statement with:
|
||||||
|
$cli = new Application('Doctrine Command Line Interface', VERSION);
|
||||||
|
$cli->setCatchExceptions(true);
|
||||||
|
|
||||||
|
$helperSet = new HelperSet(
|
||||||
|
[
|
||||||
|
'db' => new ConnectionHelper($connect),
|
||||||
|
'question' => new QuestionHelper(),
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$cli->setHelperSet($helperSet);
|
||||||
|
|
||||||
|
$migrateCommand = new \Doctrine\DBAL\Migrations\Tools\Console\Command\MigrateCommand();
|
||||||
|
$statusCommand = new \Doctrine\DBAL\Migrations\Tools\Console\Command\StatusCommand();
|
||||||
|
|
||||||
|
$migrationsDirectory = __DIR__ . '/../app/classes/Framadate/Migrations';
|
||||||
|
|
||||||
|
$configuration = new Configuration($connect);
|
||||||
|
$configuration->setMigrationsTableName(Utils::table(MIGRATION_TABLE) . '_new');
|
||||||
|
$configuration->setMigrationsDirectory($migrationsDirectory);
|
||||||
|
$configuration->setMigrationsNamespace('DoctrineMigrations');
|
||||||
|
$configuration->registerMigrationsFromDirectory($migrationsDirectory);
|
||||||
|
$migrateCommand->setMigrationConfiguration($configuration);
|
||||||
|
$statusCommand->setMigrationConfiguration($configuration);
|
||||||
|
|
||||||
|
// Register All Doctrine Commands
|
||||||
|
$cli->addCommands([$migrateCommand, $statusCommand]);
|
||||||
|
|
||||||
|
// Runs console application
|
||||||
|
$cli->run($input, $output);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$style->error($e->getMessage());
|
||||||
|
}
|
@ -62,7 +62,10 @@
|
|||||||
"ircmaxell/password-compat": "dev-master",
|
"ircmaxell/password-compat": "dev-master",
|
||||||
"roave/security-advisories": "dev-master",
|
"roave/security-advisories": "dev-master",
|
||||||
"erusev/parsedown": "^1.7",
|
"erusev/parsedown": "^1.7",
|
||||||
"egulias/email-validator": "~2.1"
|
"egulias/email-validator": "~2.1",
|
||||||
|
"doctrine/dbal": "^2.5",
|
||||||
|
"doctrine/migrations": "^1.5",
|
||||||
|
"sensiolabs/ansi-to-html": "^1.1"
|
||||||
},
|
},
|
||||||
|
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
1463
composer.lock
generated
1463
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -17,6 +17,8 @@
|
|||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
*/
|
*/
|
||||||
use Framadate\Choice;
|
use Framadate\Choice;
|
||||||
|
use Framadate\Form;
|
||||||
|
use Framadate\Services\InputService;
|
||||||
use Framadate\Services\LogService;
|
use Framadate\Services\LogService;
|
||||||
use Framadate\Services\MailService;
|
use Framadate\Services\MailService;
|
||||||
use Framadate\Services\PollService;
|
use Framadate\Services\PollService;
|
||||||
@ -30,7 +32,7 @@ include_once __DIR__ . '/app/inc/init.php';
|
|||||||
/*---------*/
|
/*---------*/
|
||||||
$logService = new LogService();
|
$logService = new LogService();
|
||||||
$pollService = new PollService($connect, $logService);
|
$pollService = new PollService($connect, $logService);
|
||||||
$mailService = new MailService($config['use_smtp'], $config['smtp_options']);
|
$mailService = new MailService($config['use_smtp'], $config['smtp_options'], $config['use_sendmail']);
|
||||||
$purgeService = new PurgeService($connect, $logService);
|
$purgeService = new PurgeService($connect, $logService);
|
||||||
$sessionService = new SessionService();
|
$sessionService = new SessionService();
|
||||||
|
|
||||||
@ -40,102 +42,85 @@ if (is_file('bandeaux_local.php')) {
|
|||||||
include_once('bandeaux.php');
|
include_once('bandeaux.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 1/4 : error if $_SESSION from info_sondage are not valid
|
// Min/Max archive date
|
||||||
if (empty($_SESSION['form']->title) || empty($_SESSION['form']->admin_name) || (($config['use_smtp']) ? empty($_SESSION['form']->admin_mail) : false)) {
|
$min_expiry_time = $pollService->minExpiryDate();
|
||||||
|
$max_expiry_time = $pollService->maxExpiryDate();
|
||||||
|
|
||||||
|
$form = isset($_SESSION['form']) ? unserialize($_SESSION['form']) : null;
|
||||||
|
|
||||||
|
if ($form === null || !($form instanceof Form)) {
|
||||||
$smarty->assign('title', __('Error', 'Error!'));
|
$smarty->assign('title', __('Error', 'Error!'));
|
||||||
$smarty->assign('error', __('Error', 'You haven\'t filled the first section of the poll creation.'));
|
$smarty->assign('error', __('Error', 'You haven\'t filled the first section of the poll creation, or your session has expired.'));
|
||||||
$smarty->display('error.tpl');
|
$smarty->display('error.tpl');
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
// Min/Max archive date
|
|
||||||
$min_expiry_time = $pollService->minExpiryDate();
|
|
||||||
$max_expiry_time = $pollService->maxExpiryDate();
|
|
||||||
|
|
||||||
// The poll format is AUTRE (other)
|
// The poll format is AUTRE (other) if we are in this file
|
||||||
if ($_SESSION['form']->format !== 'A') {
|
if (!isset($form->format)) {
|
||||||
$_SESSION['form']->format = 'A';
|
$form->format = 'A';
|
||||||
$_SESSION['form']->clearChoices();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Step 4 : Data prepare before insert in DB
|
// The poll format is AUTRE (other)
|
||||||
if (isset($_POST['confirmation'])) {
|
if ($form->format !== 'A') {
|
||||||
// Define expiration date
|
$form->format = 'A';
|
||||||
$enddate = filter_input(INPUT_POST, 'enddate', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => '#^[0-9]{2}/[0-9]{2}/[0-9]{4}$#']]);
|
$form->clearChoices();
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($enddate)) {
|
if (!isset($form->title) || !isset($form->admin_name) || ($config['use_smtp'] && !isset($form->admin_mail))) {
|
||||||
$registredate = explode('/', $enddate);
|
$step = 1;
|
||||||
|
} elseif (isset($_POST['confirmation'])) {
|
||||||
|
$step = 4;
|
||||||
|
} elseif (empty($_POST['fin_sondage_autre']) ) {
|
||||||
|
$step = 2;
|
||||||
|
} else {
|
||||||
|
$step = 3;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_array($registredate) && count($registredate) === 3) {
|
switch ($step) {
|
||||||
$time = mktime(0, 0, 0, $registredate[1], $registredate[0], $registredate[2]);
|
case 2: // Step 2/4 : Select choices of the poll
|
||||||
|
$choices = $form->getChoices();
|
||||||
if ($time < $min_expiry_time) {
|
$nb_choices = max( 5- count($choices), 0);
|
||||||
$_SESSION['form']->end_date = $min_expiry_time;
|
while ($nb_choices-- > 0) {
|
||||||
} elseif ($max_expiry_time < $time) {
|
$c = new Choice('');
|
||||||
$_SESSION['form']->end_date = $max_expiry_time;
|
$form->addChoice($c);
|
||||||
} else {
|
|
||||||
$_SESSION['form']->end_date = $time;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($_SESSION['form']->end_date)) {
|
$_SESSION['form'] = serialize($form);
|
||||||
// By default, expiration date is 6 months after last day
|
|
||||||
$_SESSION['form']->end_date = $max_expiry_time;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Insert poll in database
|
// Display step 2
|
||||||
$ids = $pollService->createPoll($_SESSION['form']);
|
$smarty->assign('title', __('Step 2 classic', 'Poll subjects (2 on 3)'));
|
||||||
$poll_id = $ids[0];
|
$smarty->assign('choices', $form->getChoices());
|
||||||
$admin_poll_id = $ids[1];
|
$smarty->assign('allowMarkdown', $config['user_can_add_img_or_link']);
|
||||||
|
$smarty->assign('error', null);
|
||||||
|
|
||||||
// Send confirmation by mail if enabled
|
$smarty->display('create_classic_poll_step_2.tpl');
|
||||||
if ($config['use_smtp'] === true) {
|
|
||||||
$message = __('Mail', "This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.");
|
|
||||||
$message .= '<br/><br/>';
|
|
||||||
$message .= Utils::htmlMailEscape($_SESSION['form']->admin_name) . ' ' . __('Mail', 'hast just created a poll called') . ' : "' . Utils::htmlMailEscape($_SESSION['form']->title) . '".<br/>';
|
|
||||||
$message .= sprintf(__('Mail', 'Thanks for filling the poll at the link above') . ' :<br/><br/><a href="%1$s">%1$s</a>', Utils::getUrlSondage($poll_id));
|
|
||||||
|
|
||||||
$message_admin = __('Mail', "This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above");
|
|
||||||
$message_admin .= sprintf(' :<br/><br/><a href="%1$s">%1$s</a>', Utils::getUrlSondage($admin_poll_id, true));
|
|
||||||
|
|
||||||
if ($mailService->isValidEmail($_SESSION['form']->admin_mail)) {
|
|
||||||
$mailService->send($_SESSION['form']->admin_mail, '[' . NOMAPPLICATION . '][' . __('Mail', 'Author\'s message') . '] ' . __('Generic', 'Poll') . ': ' . $_SESSION['form']->title, $message_admin);
|
|
||||||
$mailService->send($_SESSION['form']->admin_mail, '[' . NOMAPPLICATION . '][' . __('Mail', 'For sending to the polled users') . '] ' . __('Generic', 'Poll') . ': ' . $_SESSION['form']->title, $message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clean Form data in $_SESSION
|
|
||||||
unset($_SESSION['form']);
|
|
||||||
|
|
||||||
// Delete old polls
|
|
||||||
$purgeService->purgeOldPolls();
|
|
||||||
|
|
||||||
// creation message
|
|
||||||
$sessionService->set("Framadate", "messagePollCreated", TRUE);
|
|
||||||
|
|
||||||
// Redirect to poll administration
|
|
||||||
header('Location:' . Utils::getUrlSondage($admin_poll_id, true));
|
|
||||||
exit;
|
exit;
|
||||||
} // Step 3/4 : Confirm poll creation and choose a removal date
|
|
||||||
else if (isset($_POST['fin_sondage_autre'])) {
|
case 3: // Step 3/4 : Confirm poll creation and choose a removal date
|
||||||
// Store choices in $_SESSION
|
// Handle Step2 submission
|
||||||
if (isset($_POST['choices'])) {
|
if (!empty($_POST['choices'])) {
|
||||||
$_SESSION['form']->clearChoices();
|
// remove empty choices
|
||||||
|
$_POST['choices'] = array_filter($_POST['choices'], function ($c) {
|
||||||
|
return !empty($c);
|
||||||
|
});
|
||||||
|
|
||||||
|
$form->clearChoices();
|
||||||
|
|
||||||
|
// store choices in $_SESSION
|
||||||
foreach ($_POST['choices'] as $c) {
|
foreach ($_POST['choices'] as $c) {
|
||||||
if (!empty($c)) {
|
$c = strip_tags($c);
|
||||||
$c = strip_tags($c);
|
$choice = new Choice($c);
|
||||||
$choice = new Choice($c);
|
$form->addChoice($choice);
|
||||||
$_SESSION['form']->addChoice($choice);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Expiration date is initialised with config parameter. Value will be modified in step 4 if user has defined an other date
|
// Expiration date is initialised with config parameter. Value will be modified in step 4 if user has defined an other date
|
||||||
$_SESSION['form']->end_date = $max_expiry_time;
|
$form->end_date = $max_expiry_time;
|
||||||
|
|
||||||
// Summary
|
// Summary
|
||||||
$summary = '<ol>';
|
$summary = '<ol>';
|
||||||
foreach ($_SESSION['form']->getChoices() as $i=>$choice) {
|
foreach ($form->getChoices() as $i => $choice) {
|
||||||
|
/** @var Choice $choice */
|
||||||
preg_match_all('/\[!\[(.*?)\]\((.*?)\)\]\((.*?)\)/', $choice->getName(), $md_a_img); // Markdown [![alt](src)](href)
|
preg_match_all('/\[!\[(.*?)\]\((.*?)\)\]\((.*?)\)/', $choice->getName(), $md_a_img); // Markdown [![alt](src)](href)
|
||||||
preg_match_all('/!\[(.*?)\]\((.*?)\)/', $choice->getName(), $md_img); // Markdown ![alt](src)
|
preg_match_all('/!\[(.*?)\]\((.*?)\)/', $choice->getName(), $md_img); // Markdown ![alt](src)
|
||||||
preg_match_all('/\[(.*?)\]\((.*?)\)/', $choice->getName(), $md_a); // Markdown [text](href)
|
preg_match_all('/\[(.*?)\]\((.*?)\)/', $choice->getName(), $md_a); // Markdown [text](href)
|
||||||
@ -159,98 +144,77 @@ if (empty($_SESSION['form']->title) || empty($_SESSION['form']->admin_name) || (
|
|||||||
|
|
||||||
$end_date_str = utf8_encode(strftime($date_format['txt_date'], $max_expiry_time)); //textual date
|
$end_date_str = utf8_encode(strftime($date_format['txt_date'], $max_expiry_time)); //textual date
|
||||||
|
|
||||||
|
$_SESSION['form'] = serialize($form);
|
||||||
|
|
||||||
$smarty->assign('title', __('Step 3', 'Removal date and confirmation (3 on 3)'));
|
$smarty->assign('title', __('Step 3', 'Removal date and confirmation (3 on 3)'));
|
||||||
$smarty->assign('summary', $summary);
|
$smarty->assign('summary', $summary);
|
||||||
$smarty->assign('end_date_str', $end_date_str);
|
$smarty->assign('end_date_str', $end_date_str);
|
||||||
$smarty->assign('default_poll_duration', $config['default_poll_duration']);
|
$smarty->assign('default_poll_duration', $config['default_poll_duration']);
|
||||||
$smarty->assign('use_smtp', $config['use_smtp']);
|
$smarty->assign('use_smtp', $config['use_smtp']);
|
||||||
|
|
||||||
$smarty->display('create_classic_poll_step3.tpl');
|
$smarty->display('create_poll_step_3.tpl');
|
||||||
|
exit;
|
||||||
|
case 4: // Step 4 : Data prepare before insert in DB
|
||||||
|
$enddate = filter_input(INPUT_POST, 'enddate', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => '#^[0-9]{2}/[0-9]{2}/[0-9]{4}$#']]);
|
||||||
|
|
||||||
// Step 2/4 : Select choices of the poll
|
if (!empty($enddate)) {
|
||||||
} else {
|
$registredate = explode('/', $enddate);
|
||||||
Utils::print_header(__('Step 2 classic', 'Poll subjects (2 on 3)'));
|
|
||||||
bandeau_titre(__('Step 2 classic', 'Poll subjects (2 on 3)'));
|
|
||||||
|
|
||||||
echo '
|
if (is_array($registredate) && count($registredate) === 3) {
|
||||||
<form name="formulaire" action="' . Utils::get_server_name() . 'create_classic_poll.php" method="POST" class="form-horizontal" role="form">
|
$time = mktime(0, 0, 0, $registredate[1], $registredate[0], $registredate[2]);
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-8 col-md-offset-2">';
|
|
||||||
echo '
|
|
||||||
<div class="alert alert-info">
|
|
||||||
<p>' . __('Step 2 classic', 'To make a generic poll you need to propose at least two choices between differents subjects.') . '</p>
|
|
||||||
<p>' . __('Step 2 classic', 'You can add or remove additional choices with the buttons') . ' <span class="glyphicon glyphicon-minus text-info"></span><span class="sr-only">' . __('Generic', 'Remove') . '</span> <span class="glyphicon glyphicon-plus text-success"></span><span class="sr-only">' . __('Generic', 'Add') . '</span></p>';
|
|
||||||
if ($config['user_can_add_img_or_link']) {
|
|
||||||
echo ' <p>' . __('Step 2 classic', 'It\'s possible to propose links or images by using') . ' <a href="http://' . $locale . '.wikipedia.org/wiki/Markdown">' . __('Step 2 classic', 'the Markdown syntax') . '</a>.</p>';
|
|
||||||
}
|
|
||||||
echo ' </div>' . "\n";
|
|
||||||
|
|
||||||
// Fields choices : 5 by default
|
if ($time < $min_expiry_time) {
|
||||||
$choices = $_SESSION['form']->getChoices();
|
$form->end_date = $min_expiry_time;
|
||||||
$nb_choices = max(count($choices), 5);
|
} elseif ($max_expiry_time < $time) {
|
||||||
for ($i = 0; $i < $nb_choices; $i++) {
|
$form->end_date = $max_expiry_time;
|
||||||
$choice = isset($choices[$i]) ? $choices[$i] : new Choice();
|
} else {
|
||||||
echo '
|
$form->end_date = $time;
|
||||||
<div class="form-group choice-field">
|
}
|
||||||
<label for="choice' . $i . '" class="col-sm-2 control-label">' . __('Generic', 'Choice') . ' ' . ($i + 1) . '</label>
|
|
||||||
<div class="col-sm-10 input-group">
|
|
||||||
<input type="text" class="form-control" name="choices[]" size="40" value="' . $choice->getName() . '" id="choice' . $i . '" />';
|
|
||||||
if ($config['user_can_add_img_or_link']) {
|
|
||||||
echo '<span class="input-group-addon btn-link md-a-img" title="' . __('Step 2 classic', 'Add a link or an image') . ' - ' . __('Generic', 'Choice') . ' ' . ($i + 1) . '" ><span class="glyphicon glyphicon-picture"></span> <span class="glyphicon glyphicon-link"></span></span>';
|
|
||||||
}
|
}
|
||||||
echo '
|
|
||||||
</div>
|
|
||||||
</div>' . "\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
if (empty($form->end_date)) {
|
||||||
<div class="col-md-4">
|
// By default, expiration date is 6 months after last day
|
||||||
<div class="btn-group btn-group">
|
$form->end_date = $max_expiry_time;
|
||||||
<button type="button" id="remove-a-choice" class="btn btn-default" title="' . __('Step 2 classic', 'Remove a choice') . '"><span class="glyphicon glyphicon-minus text-info"></span><span class="sr-only">' . __('Generic', 'Remove') . '</span></button>
|
}
|
||||||
<button type="button" id="add-a-choice" class="btn btn-default" title="' . __('Step 2 classic', 'Add a choice') . '"><span class="glyphicon glyphicon-plus text-success"></span><span class="sr-only">' . __('Generic', 'Add') . '</span></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-8 text-right">
|
|
||||||
<a class="btn btn-default" href="' . Utils::get_server_name() . 'create_poll.php?type=classic" title="' . __('Step 2', 'Back to step 1') . '">' . __('Generic', 'Back') . '</a>
|
|
||||||
<button name="fin_sondage_autre" value="' . __('Generic', 'Next') . '" type="submit" class="btn btn-success disabled" title="' . __('Step 2', 'Go to step 3') . '">' . __('Generic', 'Next') . '</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal fade" id="md-a-imgModal" tabindex="-1" role="dialog" aria-labelledby="md-a-imgModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">' . __('Generic', 'Close') . '</span></button>
|
|
||||||
<p class="modal-title" id="md-a-imgModalLabel">' . __('Step 2 classic', 'Add a link or an image') . '</p>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<p class="alert alert-info">' . __('Step 2 classic', 'These fields are optional. You can add a link, an image or both.') . '</p>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="md-img"><span class="glyphicon glyphicon-picture"></span> ' . __('Step 2 classic', 'URL of the image') . '</label>
|
|
||||||
<input id="md-img" type="text" placeholder="http://…" class="form-control" size="40" />
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="md-a"><span class="glyphicon glyphicon-link"></span> ' . __('Generic', 'Link') . '</label>
|
|
||||||
<input id="md-a" type="text" placeholder="http://…" class="form-control" size="40" />
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="md-text">' . __('Step 2 classic', 'Alternative text') . '</label>
|
|
||||||
<input id="md-text" type="text" class="form-control" size="40" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">' . __('Generic', 'Cancel') . '</button>
|
|
||||||
<button type="button" class="btn btn-primary">' . __('Generic', 'Add') . '</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="js/app/framadatepicker.js"></script>
|
// Insert poll in database
|
||||||
<script type="text/javascript" src="js/app/classic_poll.js"></script>
|
$ids = $pollService->createPoll($form);
|
||||||
' . "\n";
|
$poll_id = $ids[0];
|
||||||
|
$admin_poll_id = $ids[1];
|
||||||
|
|
||||||
bandeau_pied();
|
// Send confirmation by mail if enabled
|
||||||
}
|
if ($config['use_smtp'] === true) {
|
||||||
|
$message = __('Mail', "This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.");
|
||||||
|
$message .= '<br/><br/>';
|
||||||
|
$message .= Utils::htmlMailEscape($form->admin_name) . ' ' . __('Mail', 'hast just created a poll called') . ' : "' . Utils::htmlMailEscape($form->title) . '".<br/>';
|
||||||
|
$message .= sprintf(__('Mail', 'Thanks for filling the poll at the link above') . ' :<br/><br/><a href="%1$s">%1$s</a>', Utils::getUrlSondage($poll_id));
|
||||||
|
|
||||||
|
$message_admin = __('Mail', "This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above");
|
||||||
|
$message_admin .= sprintf(' :<br/><br/><a href="%1$s">%1$s</a>', Utils::getUrlSondage($admin_poll_id, true));
|
||||||
|
|
||||||
|
if ($mailService->isValidEmail($form->admin_mail)) {
|
||||||
|
$mailService->send($form->admin_mail, '[' . NOMAPPLICATION . '][' . __('Mail', 'Author\'s message') . '] ' . __('Generic', 'Poll') . ': ' . $form->title, $message_admin);
|
||||||
|
$mailService->send($form->admin_mail, '[' . NOMAPPLICATION . '][' . __('Mail', 'For sending to the polled users') . '] ' . __('Generic', 'Poll') . ': ' . $form->title, $message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean Form data in $_SESSION
|
||||||
|
unset($_SESSION['form']);
|
||||||
|
|
||||||
|
// Delete old polls
|
||||||
|
$purgeService->purgeOldPolls();
|
||||||
|
|
||||||
|
// creation message
|
||||||
|
$sessionService->set("Framadate", "messagePollCreated", TRUE);
|
||||||
|
// Redirect to poll administration
|
||||||
|
header('Location:' . Utils::getUrlSondage($admin_poll_id, true));
|
||||||
|
exit;
|
||||||
|
|
||||||
|
case 1: // Step 1/4 : error if $_SESSION from info_sondage are not valid
|
||||||
|
default:
|
||||||
|
$smarty->assign('title', __('Error', 'Error!'));
|
||||||
|
$smarty->assign('error', __('Error', 'You haven\'t filled the first section of the poll creation, or your session has expired.'));
|
||||||
|
$smarty->display('error.tpl');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft https://framagit.org/framasoft/framadate/)
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft https://framagit.org/framasoft/framadate/)
|
||||||
*/
|
*/
|
||||||
use Framadate\Choice;
|
use Framadate\Choice;
|
||||||
|
use Framadate\Form;
|
||||||
use Framadate\Services\InputService;
|
use Framadate\Services\InputService;
|
||||||
use Framadate\Services\LogService;
|
use Framadate\Services\LogService;
|
||||||
use Framadate\Services\MailService;
|
use Framadate\Services\MailService;
|
||||||
@ -31,7 +32,7 @@ include_once __DIR__ . '/app/inc/init.php';
|
|||||||
/*---------*/
|
/*---------*/
|
||||||
$logService = new LogService();
|
$logService = new LogService();
|
||||||
$pollService = new PollService($connect, $logService);
|
$pollService = new PollService($connect, $logService);
|
||||||
$mailService = new MailService($config['use_smtp'], $config['smtp_options']);
|
$mailService = new MailService($config['use_smtp'], $config['smtp_options'], $config['use_sendmail']);
|
||||||
$purgeService = new PurgeService($connect, $logService);
|
$purgeService = new PurgeService($connect, $logService);
|
||||||
$inputService = new InputService();
|
$inputService = new InputService();
|
||||||
$sessionService = new SessionService();
|
$sessionService = new SessionService();
|
||||||
@ -44,53 +45,62 @@ if (is_readable('bandeaux_local.php')) {
|
|||||||
$min_expiry_time = $pollService->minExpiryDate();
|
$min_expiry_time = $pollService->minExpiryDate();
|
||||||
$max_expiry_time = $pollService->maxExpiryDate();
|
$max_expiry_time = $pollService->maxExpiryDate();
|
||||||
|
|
||||||
// The poll format is DATE
|
$form = isset($_SESSION['form']) ? unserialize($_SESSION['form']) : null;
|
||||||
if ($_SESSION['form']->format !== 'D') {
|
|
||||||
$_SESSION['form']->format = 'D';
|
if ($form === null || !($form instanceof Form)) {
|
||||||
$_SESSION['form']->clearChoices();
|
$smarty->assign('title', __('Error', 'Error!'));
|
||||||
|
$smarty->assign('error', __('Error', 'You haven\'t filled the first section of the poll creation, or your session has expired.'));
|
||||||
|
$smarty->display('error.tpl');
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($_SESSION['form']->title) || !isset($_SESSION['form']->admin_name) || ($config['use_smtp'] && !isset($_SESSION['form']->admin_mail))) {
|
// The poll format is DATE if we are in this file
|
||||||
|
if (!isset($form->format)) {
|
||||||
|
$form->format = 'D';
|
||||||
|
}
|
||||||
|
// If we come from another format, we need to clear choices
|
||||||
|
if ($form->format !== 'D') {
|
||||||
|
$form->format = 'D';
|
||||||
|
$form->clearChoices();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($form->title) || !isset($form->admin_name) || ($config['use_smtp'] && !isset($form->admin_mail))) {
|
||||||
$step = 1;
|
$step = 1;
|
||||||
} else if (!empty($_POST['confirmation'])) {
|
} else if (!empty($_POST['confirmation'])) {
|
||||||
$step = 4;
|
$step = 4;
|
||||||
} else if (empty($_POST['choixheures']) || isset($_SESSION['form']->totalchoixjour)) {
|
} else if (empty($_POST['choixheures']) || isset($form->totalchoixjour)) {
|
||||||
$step = 2;
|
$step = 2;
|
||||||
} else {
|
} else {
|
||||||
$step = 3;
|
$step = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($step) {
|
switch ($step) {
|
||||||
case 1:
|
|
||||||
// Step 1/4 : error if $_SESSION from info_sondage are not valid
|
|
||||||
$smarty->assign('title', __('Error', 'Error!'));
|
|
||||||
$smarty->assign('error', __('Error', 'You haven\'t filled the first section of the poll creation.'));
|
|
||||||
$smarty->display('error.tpl');
|
|
||||||
exit;
|
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
// Step 2/4 : Select dates of the poll
|
// Step 2/4 : Select dates of the poll
|
||||||
|
|
||||||
// Prefill form->choices
|
// Prefill form->choices
|
||||||
foreach ($_SESSION['form']->getChoices() as $c) {
|
foreach ($form->getChoices() as $c) {
|
||||||
|
/** @var Choice $c */
|
||||||
$count = 3 - count($c->getSlots());
|
$count = 3 - count($c->getSlots());
|
||||||
for ($i = 0; $i < $count; $i++) {
|
for ($i = 0; $i < $count; $i++) {
|
||||||
$c->addSlot('');
|
$c->addSlot('');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$count = 3 - count($_SESSION['form']->getChoices());
|
$count = 3 - count($form->getChoices());
|
||||||
for ($i = 0; $i < $count; $i++) {
|
for ($i = 0; $i < $count; $i++) {
|
||||||
$c = new Choice('');
|
$c = new Choice('');
|
||||||
$c->addSlot('');
|
$c->addSlot('');
|
||||||
$c->addSlot('');
|
$c->addSlot('');
|
||||||
$c->addSlot('');
|
$c->addSlot('');
|
||||||
$_SESSION['form']->addChoice($c);
|
$form->addChoice($c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$_SESSION['form'] = serialize($form);
|
||||||
|
|
||||||
// Display step 2
|
// Display step 2
|
||||||
$smarty->assign('title', __('Step 2 date', 'Poll dates (2 on 3)'));
|
$smarty->assign('title', __('Step 2 date', 'Poll dates (2 on 3)'));
|
||||||
$smarty->assign('choices', $_SESSION['form']->getChoices());
|
$smarty->assign('choices', $form->getChoices());
|
||||||
$smarty->assign('error', null);
|
$smarty->assign('error', null);
|
||||||
|
|
||||||
$smarty->display('create_date_poll_step_2.tpl');
|
$smarty->display('create_date_poll_step_2.tpl');
|
||||||
@ -110,7 +120,7 @@ switch ($step) {
|
|||||||
if (count($_POST['days']) > MAX_SLOTS_PER_POLL) {
|
if (count($_POST['days']) > MAX_SLOTS_PER_POLL) {
|
||||||
// Display step 2
|
// Display step 2
|
||||||
$smarty->assign('title', __('Step 2 date', 'Poll dates (2 on 3)'));
|
$smarty->assign('title', __('Step 2 date', 'Poll dates (2 on 3)'));
|
||||||
$smarty->assign('choices', $_SESSION['form']->getChoices());
|
$smarty->assign('choices', $form->getChoices());
|
||||||
$smarty->assign('error', __f('Error', 'You can\'t select more than %d dates', MAX_SLOTS_PER_POLL));
|
$smarty->assign('error', __f('Error', 'You can\'t select more than %d dates', MAX_SLOTS_PER_POLL));
|
||||||
|
|
||||||
$smarty->display('create_date_poll_step_2.tpl');
|
$smarty->display('create_date_poll_step_2.tpl');
|
||||||
@ -118,7 +128,7 @@ switch ($step) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Clear previous choices
|
// Clear previous choices
|
||||||
$_SESSION['form']->clearChoices();
|
$form->clearChoices();
|
||||||
|
|
||||||
// Reorder moments to deal with suppressed dates
|
// Reorder moments to deal with suppressed dates
|
||||||
$moments = [];
|
$moments = [];
|
||||||
@ -136,9 +146,9 @@ switch ($step) {
|
|||||||
if (!empty($day)) {
|
if (!empty($day)) {
|
||||||
// Add choice to Form data
|
// Add choice to Form data
|
||||||
$date = DateTime::createFromFormat(__('Date', 'datetime_parseformat'), $_POST['days'][$i])->setTime(0, 0, 0);
|
$date = DateTime::createFromFormat(__('Date', 'datetime_parseformat'), $_POST['days'][$i])->setTime(0, 0, 0);
|
||||||
$time = $date->getTimestamp();
|
$time = (string) $date->getTimestamp();
|
||||||
$choice = new Choice($time);
|
$choice = new Choice($time);
|
||||||
$_SESSION['form']->addChoice($choice);
|
$form->addChoice($choice);
|
||||||
|
|
||||||
$schedules = $inputService->filterArray($moments[$i], FILTER_DEFAULT);
|
$schedules = $inputService->filterArray($moments[$i], FILTER_DEFAULT);
|
||||||
for ($j = 0; $j < count($schedules); $j++) {
|
for ($j = 0; $j < count($schedules); $j++) {
|
||||||
@ -148,13 +158,14 @@ switch ($step) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$_SESSION['form']->sortChoices();
|
$form->sortChoices();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Display step 3
|
// Display step 3
|
||||||
$summary = '<ul>';
|
$summary = '<ul>';
|
||||||
$choices = $_SESSION['form']->getChoices();
|
$choices = $form->getChoices();
|
||||||
foreach ($choices as $choice) {
|
foreach ($choices as $choice) {
|
||||||
|
/** @var Choice $choice */
|
||||||
$summary .= '<li>' . strftime($date_format['txt_full'], $choice->getName());
|
$summary .= '<li>' . strftime($date_format['txt_full'], $choice->getName());
|
||||||
$first = true;
|
$first = true;
|
||||||
foreach ($choice->getSlots() as $slots) {
|
foreach ($choice->getSlots() as $slots) {
|
||||||
@ -168,13 +179,15 @@ switch ($step) {
|
|||||||
|
|
||||||
$end_date_str = utf8_encode(strftime($date_format['txt_date'], $max_expiry_time)); // textual date
|
$end_date_str = utf8_encode(strftime($date_format['txt_date'], $max_expiry_time)); // textual date
|
||||||
|
|
||||||
|
$_SESSION['form'] = serialize($form);
|
||||||
|
|
||||||
$smarty->assign('title', __('Step 3', 'Removal date and confirmation (3 on 3)'));
|
$smarty->assign('title', __('Step 3', 'Removal date and confirmation (3 on 3)'));
|
||||||
$smarty->assign('summary', $summary);
|
$smarty->assign('summary', $summary);
|
||||||
$smarty->assign('end_date_str', $end_date_str);
|
$smarty->assign('end_date_str', $end_date_str);
|
||||||
$smarty->assign('default_poll_duration', $config['default_poll_duration']);
|
$smarty->assign('default_poll_duration', $config['default_poll_duration']);
|
||||||
$smarty->assign('use_smtp', $config['use_smtp']);
|
$smarty->assign('use_smtp', $config['use_smtp']);
|
||||||
|
|
||||||
$smarty->display('create_classic_poll_step3.tpl');
|
$smarty->display('create_poll_step_3.tpl');
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
@ -190,22 +203,22 @@ switch ($step) {
|
|||||||
$time = mktime(0, 0, 0, $registredate[1], $registredate[0], $registredate[2]);
|
$time = mktime(0, 0, 0, $registredate[1], $registredate[0], $registredate[2]);
|
||||||
|
|
||||||
if ($time < $min_expiry_time) {
|
if ($time < $min_expiry_time) {
|
||||||
$_SESSION['form']->end_date = $min_expiry_time;
|
$form->end_date = $min_expiry_time;
|
||||||
} elseif ($max_expiry_time < $time) {
|
} elseif ($max_expiry_time < $time) {
|
||||||
$_SESSION['form']->end_date = $max_expiry_time;
|
$form->end_date = $max_expiry_time;
|
||||||
} else {
|
} else {
|
||||||
$_SESSION['form']->end_date = $time;
|
$form->end_date = $time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($_SESSION['form']->end_date)) {
|
if (empty($form->end_date)) {
|
||||||
// By default, expiration date is 6 months after last day
|
// By default, expiration date is 6 months after last day
|
||||||
$_SESSION['form']->end_date = $max_expiry_time;
|
$form->end_date = $max_expiry_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Insert poll in database
|
// Insert poll in database
|
||||||
$ids = $pollService->createPoll($_SESSION['form']);
|
$ids = $pollService->createPoll($form);
|
||||||
$poll_id = $ids[0];
|
$poll_id = $ids[0];
|
||||||
$admin_poll_id = $ids[1];
|
$admin_poll_id = $ids[1];
|
||||||
|
|
||||||
@ -213,7 +226,7 @@ switch ($step) {
|
|||||||
if ($config['use_smtp'] === true) {
|
if ($config['use_smtp'] === true) {
|
||||||
$message = __('Mail', "This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.");
|
$message = __('Mail', "This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.");
|
||||||
$message .= '<br/><br/>';
|
$message .= '<br/><br/>';
|
||||||
$message .= Utils::htmlEscape($_SESSION['form']->admin_name) . ' ' . __('Mail', 'hast just created a poll called') . ' : "' . Utils::htmlEscape($_SESSION['form']->title) . '".<br/>';
|
$message .= Utils::htmlEscape($form->admin_name) . ' ' . __('Mail', 'hast just created a poll called') . ' : "' . Utils::htmlEscape($form->title) . '".<br/>';
|
||||||
$message .= __('Mail', 'Thanks for filling the poll at the link above') . ' :<br/><br/><a href="%1$s">%1$s</a>';
|
$message .= __('Mail', 'Thanks for filling the poll at the link above') . ' :<br/><br/><a href="%1$s">%1$s</a>';
|
||||||
|
|
||||||
$message_admin = __('Mail', "This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above");
|
$message_admin = __('Mail', "This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above");
|
||||||
@ -222,17 +235,16 @@ switch ($step) {
|
|||||||
$message = sprintf($message, Utils::getUrlSondage($poll_id));
|
$message = sprintf($message, Utils::getUrlSondage($poll_id));
|
||||||
$message_admin = sprintf($message_admin, Utils::getUrlSondage($admin_poll_id, true));
|
$message_admin = sprintf($message_admin, Utils::getUrlSondage($admin_poll_id, true));
|
||||||
|
|
||||||
if ($mailService->isValidEmail($_SESSION['form']->admin_mail)) {
|
if ($mailService->isValidEmail($form->admin_mail)) {
|
||||||
$mailService->send($_SESSION['form']->admin_mail, '[' . NOMAPPLICATION . '][' . __('Mail', 'Author\'s message') . '] ' . __('Generic', 'Poll') . ': ' . Utils::htmlEscape($_SESSION['form']->title), $message_admin);
|
$mailService->send($form->admin_mail, '[' . NOMAPPLICATION . '][' . __('Mail', 'Author\'s message') . '] ' . __('Generic', 'Poll') . ': ' . Utils::htmlEscape($form->title), $message_admin);
|
||||||
$mailService->send($_SESSION['form']->admin_mail, '[' . NOMAPPLICATION . '][' . __('Mail', 'For sending to the polled users') . '] ' . __('Generic', 'Poll') . ': ' . Utils::htmlEscape($_SESSION['form']->title), $message);
|
$mailService->send($form->admin_mail, '[' . NOMAPPLICATION . '][' . __('Mail', 'For sending to the polled users') . '] ' . __('Generic', 'Poll') . ': ' . Utils::htmlEscape($form->title), $message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clean Form data in $_SESSION
|
// Clean Form data in $_SESSION
|
||||||
unset($_SESSION['form']);
|
unset($_SESSION['form']);
|
||||||
|
|
||||||
// Delete old polls
|
$purgeService->repeatedCleanings();
|
||||||
$purgeService->purgeOldPolls();
|
|
||||||
|
|
||||||
// creation message
|
// creation message
|
||||||
$sessionService->set("Framadate", "messagePollCreated", TRUE);
|
$sessionService->set("Framadate", "messagePollCreated", TRUE);
|
||||||
@ -240,4 +252,12 @@ switch ($step) {
|
|||||||
// Redirect to poll administration
|
// Redirect to poll administration
|
||||||
header('Location:' . Utils::getUrlSondage($admin_poll_id, true));
|
header('Location:' . Utils::getUrlSondage($admin_poll_id, true));
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
default:
|
||||||
|
// Step 1/4 : error if $_SESSION from info_sondage are not valid
|
||||||
|
$smarty->assign('title', __('Error', 'Error!'));
|
||||||
|
$smarty->assign('error', __('Error', 'You haven\'t filled the first section of the poll creation, or your session has expired.'));
|
||||||
|
$smarty->display('error.tpl');
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
@ -35,20 +35,19 @@ $pollRepository = RepositoryFactory::pollRepository();
|
|||||||
|
|
||||||
/* PAGE */
|
/* PAGE */
|
||||||
/* ---- */
|
/* ---- */
|
||||||
|
$form = isset($_SESSION['form']) ? unserialize($_SESSION['form']) : null;
|
||||||
|
|
||||||
if (!isset($_SESSION['form'])) {
|
if ($form === null || !($form instanceof Form)) {
|
||||||
$_SESSION['form'] = new Form();
|
$form = new Form();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Type de sondage
|
// Type de sondage
|
||||||
if (isset($_GET['type']) && $_GET['type'] === 'date' ||
|
if (isset($_GET['type']) && $_GET['type'] === 'date') {
|
||||||
isset($_POST['type']) && $_POST['type'] === 'date'
|
|
||||||
) {
|
|
||||||
$poll_type = 'date';
|
$poll_type = 'date';
|
||||||
$_SESSION['form']->choix_sondage = $poll_type;
|
$form->choix_sondage = $poll_type;
|
||||||
} else {
|
} else {
|
||||||
$poll_type = 'classic';
|
$poll_type = 'classic';
|
||||||
$_SESSION['form']->choix_sondage = $poll_type;
|
$form->choix_sondage = $poll_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We clean the data
|
// We clean the data
|
||||||
@ -69,6 +68,8 @@ if ($goToStep2) {
|
|||||||
$receiveNewComments = isset($_POST['receiveNewComments']) ? $inputService->filterBoolean($_POST['receiveNewComments']) : false;
|
$receiveNewComments = isset($_POST['receiveNewComments']) ? $inputService->filterBoolean($_POST['receiveNewComments']) : false;
|
||||||
$hidden = isset($_POST['hidden']) ? $inputService->filterBoolean($_POST['hidden']) : false;
|
$hidden = isset($_POST['hidden']) ? $inputService->filterBoolean($_POST['hidden']) : false;
|
||||||
$use_password = filter_input(INPUT_POST, 'use_password', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => BOOLEAN_REGEX]]);
|
$use_password = filter_input(INPUT_POST, 'use_password', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => BOOLEAN_REGEX]]);
|
||||||
|
$collect_users_mail = $inputService->filterCollectMail($_POST['collect_users_mail']);
|
||||||
|
$use_password = filter_input(INPUT_POST, 'use_password', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => BOOLEAN_REGEX]]);
|
||||||
$password = isset($_POST['password']) ? $_POST['password'] : null;
|
$password = isset($_POST['password']) ? $_POST['password'] : null;
|
||||||
$password_repeat = isset($_POST['password_repeat']) ? $_POST['password_repeat'] : null;
|
$password_repeat = isset($_POST['password_repeat']) ? $_POST['password_repeat'] : null;
|
||||||
$results_publicly_visible = filter_input(INPUT_POST, 'results_publicly_visible', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => BOOLEAN_REGEX]]);
|
$results_publicly_visible = filter_input(INPUT_POST, 'results_publicly_visible', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => BOOLEAN_REGEX]]);
|
||||||
@ -83,20 +84,21 @@ if ($goToStep2) {
|
|||||||
$error_on_customized_url = false;
|
$error_on_customized_url = false;
|
||||||
$error_on_ValueMax = false;
|
$error_on_ValueMax = false;
|
||||||
|
|
||||||
$_SESSION['form']->title = $title;
|
$form->title = $title;
|
||||||
$_SESSION['form']->id = $customized_url;
|
$form->id = $customized_url;
|
||||||
$_SESSION['form']->use_customized_url = $use_customized_url;
|
$form->use_customized_url = $use_customized_url;
|
||||||
$_SESSION['form']->use_ValueMax = $use_ValueMax;
|
$form->use_ValueMax = $use_ValueMax;
|
||||||
$_SESSION['form']->ValueMax = $ValueMax;
|
$form->ValueMax = $ValueMax;
|
||||||
$_SESSION['form']->admin_name = $name;
|
$form->admin_name = $name;
|
||||||
$_SESSION['form']->admin_mail = $mail;
|
$form->admin_mail = $mail;
|
||||||
$_SESSION['form']->description = $description;
|
$form->description = $description;
|
||||||
$_SESSION['form']->editable = $editable;
|
$form->editable = $editable;
|
||||||
$_SESSION['form']->receiveNewVotes = $receiveNewVotes;
|
$form->receiveNewVotes = $receiveNewVotes;
|
||||||
$_SESSION['form']->receiveNewComments = $receiveNewComments;
|
$form->receiveNewComments = $receiveNewComments;
|
||||||
$_SESSION['form']->hidden = $hidden;
|
$form->hidden = $hidden;
|
||||||
$_SESSION['form']->use_password = ($use_password !== null);
|
$form->collect_users_mail = $collect_users_mail;
|
||||||
$_SESSION['form']->results_publicly_visible = ($results_publicly_visible !== null);
|
$form->use_password = ($use_password !== null);
|
||||||
|
$form->results_publicly_visible = ($results_publicly_visible !== null);
|
||||||
|
|
||||||
if ($config['use_smtp'] === true && empty($mail)) {
|
if ($config['use_smtp'] === true && empty($mail)) {
|
||||||
$error_on_mail = true;
|
$error_on_mail = true;
|
||||||
@ -149,13 +151,15 @@ if ($goToStep2) {
|
|||||||
&& !$error_on_password && !$error_on_password_repeat &&!$error_on_ValueMax
|
&& !$error_on_password && !$error_on_password_repeat &&!$error_on_ValueMax
|
||||||
) {
|
) {
|
||||||
// If no errors, we hash the password if needed
|
// If no errors, we hash the password if needed
|
||||||
if ($_SESSION['form']->use_password) {
|
if ($form->use_password) {
|
||||||
$_SESSION['form']->password_hash = PasswordHasher::hash($password);
|
$form->password_hash = PasswordHasher::hash($password);
|
||||||
} else {
|
} else {
|
||||||
$_SESSION['form']->password_hash = null;
|
$form->password_hash = null;
|
||||||
$_SESSION['form']->results_publicly_visible = null;
|
$form->results_publicly_visible = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$_SESSION['form'] = serialize($form);
|
||||||
|
|
||||||
if ($goToStep2 === 'date') {
|
if ($goToStep2 === 'date') {
|
||||||
header('Location:create_date_poll.php');
|
header('Location:create_date_poll.php');
|
||||||
exit();
|
exit();
|
||||||
@ -289,20 +293,21 @@ $smarty->assign('default_to_marldown_editor', $config['markdown_editor_by_defaul
|
|||||||
$smarty->assign('goToStep2', GO_TO_STEP_2);
|
$smarty->assign('goToStep2', GO_TO_STEP_2);
|
||||||
|
|
||||||
$smarty->assign('poll_type', $poll_type);
|
$smarty->assign('poll_type', $poll_type);
|
||||||
$smarty->assign('poll_title', Utils::fromPostOrDefault('title', $_SESSION['form']->title));
|
$smarty->assign('poll_title', Utils::fromPostOrDefault('title', $form->title));
|
||||||
$smarty->assign('customized_url', Utils::fromPostOrDefault('customized_url', $_SESSION['form']->id));
|
$smarty->assign('customized_url', Utils::fromPostOrDefault('customized_url', $form->id));
|
||||||
$smarty->assign('use_customized_url', Utils::fromPostOrDefault('use_customized_url', $_SESSION['form']->use_customized_url));
|
$smarty->assign('use_customized_url', Utils::fromPostOrDefault('use_customized_url', $form->use_customized_url));
|
||||||
$smarty->assign('ValueMax', Utils::fromPostOrDefault('ValueMax', $_SESSION['form']->ValueMax));
|
$smarty->assign('ValueMax', Utils::fromPostOrDefault('ValueMax', $form->ValueMax));
|
||||||
$smarty->assign('use_ValueMax', Utils::fromPostOrDefault('use_ValueMax', $_SESSION['form']->use_ValueMax));
|
$smarty->assign('use_ValueMax', Utils::fromPostOrDefault('use_ValueMax', $form->use_ValueMax));
|
||||||
$smarty->assign('poll_description', !empty($_POST['description']) ? $_POST['description'] : $_SESSION['form']->description);
|
$smarty->assign('collect_users_mail', Utils::fromPostOrDefault('collect_users_mail', $form->collect_users_mail));
|
||||||
$smarty->assign('poll_name', Utils::fromPostOrDefault('name', $_SESSION['form']->admin_name));
|
$smarty->assign('poll_description', !empty($_POST['description']) ? $_POST['description'] : $form->description);
|
||||||
$smarty->assign('poll_mail', Utils::fromPostOrDefault('mail', $_SESSION['form']->admin_mail));
|
$smarty->assign('poll_name', Utils::fromPostOrDefault('name', $form->admin_name));
|
||||||
$smarty->assign('poll_editable', Utils::fromPostOrDefault('editable', $_SESSION['form']->editable));
|
$smarty->assign('poll_mail', Utils::fromPostOrDefault('mail', $form->admin_mail));
|
||||||
$smarty->assign('poll_receiveNewVotes', Utils::fromPostOrDefault('receiveNewVotes', $_SESSION['form']->receiveNewVotes));
|
$smarty->assign('poll_editable', Utils::fromPostOrDefault('editable', $form->editable));
|
||||||
$smarty->assign('poll_receiveNewComments', Utils::fromPostOrDefault('receiveNewComments', $_SESSION['form']->receiveNewComments));
|
$smarty->assign('poll_receiveNewVotes', Utils::fromPostOrDefault('receiveNewVotes', $form->receiveNewVotes));
|
||||||
$smarty->assign('poll_hidden', Utils::fromPostOrDefault('hidden', $_SESSION['form']->hidden));
|
$smarty->assign('poll_receiveNewComments', Utils::fromPostOrDefault('receiveNewComments', $form->receiveNewComments));
|
||||||
$smarty->assign('poll_use_password', Utils::fromPostOrDefault('use_password', $_SESSION['form']->use_password));
|
$smarty->assign('poll_hidden', Utils::fromPostOrDefault('hidden', $form->hidden));
|
||||||
$smarty->assign('poll_results_publicly_visible', Utils::fromPostOrDefault('results_publicly_visible', $_SESSION['form']->results_publicly_visible));
|
$smarty->assign('poll_use_password', Utils::fromPostOrDefault('use_password', $form->use_password));
|
||||||
$smarty->assign('form', $_SESSION['form']);
|
$smarty->assign('poll_results_publicly_visible', Utils::fromPostOrDefault('results_publicly_visible', $form->results_publicly_visible));
|
||||||
|
$smarty->assign('form', $form);
|
||||||
|
|
||||||
$smarty->display('create_poll.tpl');
|
$smarty->display('create_poll.tpl');
|
||||||
|
@ -449,19 +449,10 @@ span.edit-username-left {
|
|||||||
border-color: #949494 !important;
|
border-color: #949494 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.results .bg-danger .glyphicon {
|
/* TODO : Refactor me ! */
|
||||||
|
table.results .bg-danger .glyphicon:not(.glyphicon-alert) {
|
||||||
opacity:0;
|
opacity:0;
|
||||||
|
|
||||||
-moz-animation-name: hideNoIcon;
|
|
||||||
-moz-animation-iteration-count: 1;
|
|
||||||
-moz-animation-timing-function: ease-in;
|
|
||||||
-moz-animation-duration: 2s;
|
|
||||||
|
|
||||||
-webkit-animation-name: hideNoIcon;
|
|
||||||
-webkit-animation-iteration-count: 1;
|
|
||||||
-webkit-animation-timing-function: ease-in;
|
|
||||||
-webkit-animation-duration: 2s;
|
|
||||||
|
|
||||||
animation-name: hideNoIcon;
|
animation-name: hideNoIcon;
|
||||||
animation-iteration-count: 1;
|
animation-iteration-count: 1;
|
||||||
animation-timing-function: ease-in;
|
animation-timing-function: ease-in;
|
||||||
|
40
docker-compose.yml
Normal file
40
docker-compose.yml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
container_name: framadate-db
|
||||||
|
image: mysql:5.7
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=rootpassword
|
||||||
|
- MYSQL_USER=framadate
|
||||||
|
- MYSQL_PASSWORD=framadatedbpassword
|
||||||
|
- MYSQL_DATABASE=framadate
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "3307:3306"
|
||||||
|
|
||||||
|
framadate:
|
||||||
|
container_name: framadate
|
||||||
|
build:
|
||||||
|
dockerfile: ./docker/stretch/Dockerfile
|
||||||
|
context: .
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
environment:
|
||||||
|
- ENV=dev
|
||||||
|
- DOMAIN=localhost
|
||||||
|
- APP_NAME=Framadate
|
||||||
|
- ADMIN_MAIL=mon@email.fr
|
||||||
|
- MYSQL_USER=framadate
|
||||||
|
- MYSQL_PASSWORD=framadatedbpassword
|
||||||
|
- MYSQL_DB=framadate
|
||||||
|
- MYSQL_HOST=db
|
||||||
|
- MYSQL_PORT=3307
|
||||||
|
- ADMIN_USER=admin
|
||||||
|
- ADMIN_PASSWORD=adminpassword
|
||||||
|
- DISABLE_SMTP=true
|
||||||
|
- APACHE_RUN_USER=#1000
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- '.:/var/www/framadate'
|
30
docker/stretch/Dockerfile
Normal file
30
docker/stretch/Dockerfile
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
FROM php:apache
|
||||||
|
|
||||||
|
MAINTAINER kyane@kyane.fr
|
||||||
|
|
||||||
|
RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq zip unzip git zlib1g-dev libicu-dev g++ mysql-client
|
||||||
|
RUN docker-php-ext-install intl && docker-php-ext-install pdo_mysql
|
||||||
|
|
||||||
|
RUN a2enmod rewrite
|
||||||
|
|
||||||
|
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
||||||
|
|
||||||
|
COPY docker/stretch/php.ini /usr/local/etc/php/php.ini
|
||||||
|
COPY docker/stretch/apache-framadate.conf /etc/apache2/sites-enabled/framadate.conf
|
||||||
|
COPY docker/stretch/entrypoint.sh /usr/local/bin/entrypoint
|
||||||
|
|
||||||
|
ENV COMPOSER_ALLOW_SUPERUSER=1
|
||||||
|
RUN set -eux; \
|
||||||
|
composer global require "hirak/prestissimo:^0.3" --prefer-dist --no-progress --no-suggest --classmap-authoritative; \
|
||||||
|
composer clear-cache
|
||||||
|
ENV PATH="${PATH}:/root/.composer/vendor/bin"
|
||||||
|
ENV COMPOSER_ALLOW_SUPERUSER 0
|
||||||
|
|
||||||
|
WORKDIR /var/www/framadate
|
||||||
|
|
||||||
|
# Some Apache and PHP configuration
|
||||||
|
RUN if [ "$ENV" = "dev" ] ; then echo Using PHP production mode ; else echo Using PHP development mode && echo "error_reporting = E_ERROR | E_WARNING | E_PARSE\ndisplay_errors = On" > /usr/local/etc/php/conf.d/php.ini ; fi
|
||||||
|
|
||||||
|
RUN rm /etc/apache2/sites-enabled/000-default.conf
|
||||||
|
EXPOSE 80
|
||||||
|
ENTRYPOINT ["entrypoint"]
|
37
docker/stretch/README.md
Normal file
37
docker/stretch/README.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# Framadate
|
||||||
|
**Cette image est en phase de test. NE PAS UTILISER EN PRODUCTION**
|
||||||
|
|
||||||
|
Image Docker pour le déploiement de Framadate
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
### Base de données
|
||||||
|
Pour fonctionner, Framadate a besoin d'une base de données. Dans notre cas nous utilisons MySQL, que l'on déploie avec Docker. Afin que Framadate fonctionne correctement, nous devons désactiver le *SQL MODE* `NO_ZERO_DATE` de MySQL. On peut donc déployer une base de données pour Framadate ainsi (avec Docker Compose):
|
||||||
|
```
|
||||||
|
framadate-db:
|
||||||
|
image: mysql:5.7
|
||||||
|
container_name: framadate-db
|
||||||
|
command: --sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
|
||||||
|
volumes:
|
||||||
|
- /path/to/data/volume:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=myrootpassword
|
||||||
|
- MYSQL_USER=framadate
|
||||||
|
- MYSQL_PASSWORD=myframadatepassword
|
||||||
|
- MYSQL_DATABASE=framadate
|
||||||
|
restart: always
|
||||||
|
```
|
||||||
|
|
||||||
|
### Framadate
|
||||||
|
Pour initialiser Framadate, on utilise plusieurs variables d'environnement :
|
||||||
|
- `DOMAIN`: sous domaine du serveur Framadate (ex: `framadate.picasoft.net`)
|
||||||
|
- `APP_NAME`: nom de l'application (`Framadate` par défaut)
|
||||||
|
- `ADMIN_MAIL`: adresse mail de l'administrateur du serveur
|
||||||
|
- `NO_REPLY_MAIL`: adresse mail qui servira à l'envoi des mails
|
||||||
|
- `MYSQL_USER`: utilisateur MySQL
|
||||||
|
- `MYSQL_PASSWORD`: mot de passe de l'utilisateur MySQL
|
||||||
|
- `MYSQL_DB`: nom de la base de données
|
||||||
|
- `MYSQL_HOST`: adresse du serveur de base de données
|
||||||
|
- `MYSQL_PORT`: port du serveur MySQL (`3306` par défaut)
|
||||||
|
- `ADMIN_USER`: utilisateur de l'interface d'administration
|
||||||
|
- `ADMIN_PASSWORD`: mot de passe de l'interface d'administration
|
||||||
|
- `DISABLE_SMTP`: mettre à `true` pour désactiver SMTP (sinon `false` par défaut)
|
28
docker/stretch/apache-framadate.conf
Normal file
28
docker/stretch/apache-framadate.conf
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<VirtualHost *:80>
|
||||||
|
DocumentRoot /var/www/framadate
|
||||||
|
|
||||||
|
# URL rewrite
|
||||||
|
<Directory "/">
|
||||||
|
AllowOverride All
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
# Admin folder
|
||||||
|
<Directory "/var/www/framadate/admin/">
|
||||||
|
AuthType Basic
|
||||||
|
AuthName "Administration"
|
||||||
|
AuthUserFile "/var/www/framadate/admin/.htpasswd"
|
||||||
|
Require valid-user
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
# Protection fichiers htpasswd et htaccess
|
||||||
|
<FilesMatch "^\.ht.*">
|
||||||
|
Deny from all
|
||||||
|
Satisfy all
|
||||||
|
ErrorDocument 403 "Accès refusé."
|
||||||
|
</FilesMatch>
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
ErrorLog /dev/stdout
|
||||||
|
CustomLog /dev/stdout combined
|
||||||
|
|
||||||
|
</VirtualHost>
|
86
docker/stretch/entrypoint.sh
Executable file
86
docker/stretch/entrypoint.sh
Executable file
@ -0,0 +1,86 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Read environment variables or set default values
|
||||||
|
FRAMADATE_CONFIG=${FRAMADATE_CONFIG:-/var/www/framadate/app/inc/config.php}
|
||||||
|
DOMAIN=${DOMAIN-localhost}
|
||||||
|
APP_NAME=${APP_NAME-Framadate}
|
||||||
|
ADMIN_MAIL=${ADMIN_MAIL-}
|
||||||
|
NO_REPLY_MAIL=${NO_REPLY_MAIL-}
|
||||||
|
MYSQL_USER=${MYSQL_USER-user}
|
||||||
|
MYSQL_PASSWORD=${MYSQL_PASSWORD-password}
|
||||||
|
MYSQL_DB=${MYSQL_DB-framadate}
|
||||||
|
MYSQL_HOST=${MYSQL_HOST-mysql}
|
||||||
|
MYSQL_PORT=${MYSQL_PORT-3306}
|
||||||
|
DISABLE_SMTP=${DISABLE_SMTP-false}
|
||||||
|
|
||||||
|
# Add configuration file if not exist
|
||||||
|
if [ ! -f $FRAMADATE_CONFIG ]; then
|
||||||
|
echo "There is no configuration file. Create one with environment variables"
|
||||||
|
cp /var/www/framadate/tpl/admin/config.tpl $FRAMADATE_CONFIG
|
||||||
|
# Set values on configuration file
|
||||||
|
if [ ! -z "$DOMAIN" ]; then
|
||||||
|
sed -i -E "s/^(\/\/ )?const APP_URL( )?=.*;/const APP_URL = '$DOMAIN';/g" $FRAMADATE_CONFIG
|
||||||
|
fi
|
||||||
|
sed -i -E "s/^(\/\/ )?const NOMAPPLICATION( )?=.*;/const NOMAPPLICATION = '$APP_NAME';/g" $FRAMADATE_CONFIG
|
||||||
|
# Configure mail
|
||||||
|
sed -i -E "s/^(\/\/ )?const ADRESSEMAILADMIN( )?=.*;/const ADRESSEMAILADMIN = '$ADMIN_MAIL';/g" $FRAMADATE_CONFIG
|
||||||
|
sed -i -E "s/^(\/\/ )?const ADRESSEMAILREPONSEAUTO( )?=.*;/const ADRESSEMAILREPONSEAUTO = '$NO_REPLY_MAIL';/g" $FRAMADATE_CONFIG
|
||||||
|
# Database configuration
|
||||||
|
sed -i -E "s/^(\/\/ )?const DB_USER( )?=.*;/const DB_USER = '$MYSQL_USER';/g" $FRAMADATE_CONFIG
|
||||||
|
sed -i -E "s/^(\/\/ )?const DB_PASSWORD( )?=.*;/const DB_PASSWORD = '$MYSQL_PASSWORD';/g" $FRAMADATE_CONFIG
|
||||||
|
sed -i -E "s/^(\/\/ )?const DB_DRIVER( )?=.*;/const DB_DRIVER = 'pdo_mysql';/g" $FRAMADATE_CONFIG
|
||||||
|
sed -i -E "s/^(\/\/ )?const DB_NAME( )?=.*;/const DB_NAME = '$MYSQL_DB';/g" $FRAMADATE_CONFIG
|
||||||
|
sed -i -E "s/^(\/\/ )?const DB_HOST( )?=.*;/const DB_HOST = '$MYSQL_HOST';/g" $FRAMADATE_CONFIG
|
||||||
|
sed -i -E "s/^(\/\/ )?const DB_PORT( )?=.*;/const DB_PORT = '$MYSQL_PORT';/g" $FRAMADATE_CONFIG
|
||||||
|
# SMTP config
|
||||||
|
if [ "$DISABLE_SMTP" = "true" ]; then
|
||||||
|
sed -i -E "s/'use_smtp' => true,/'use_smtp' => false,/g" $FRAMADATE_CONFIG
|
||||||
|
fi
|
||||||
|
# Framadate internal config
|
||||||
|
sed -i -E "s/^(\/\/ )?const TABLENAME_PREFIX( )?=.*;/const TABLENAME_PREFIX = 'fd_';/g" $FRAMADATE_CONFIG
|
||||||
|
sed -i -E "s/^(\/\/ )?const MIGRATION_TABLE( )?=.*;/const MIGRATION_TABLE = 'framadate_migration';/g" $FRAMADATE_CONFIG
|
||||||
|
sed -i -E "s/^(\/\/ )?const DEFAULT_LANGUAGE( )?=.*;/const DEFAULT_LANGUAGE = 'fr';/g" $FRAMADATE_CONFIG
|
||||||
|
sed -i -E "s/^(\/\/ )?const URL_PROPRE( )?=.*;/const URL_PROPRE = true;/g" $FRAMADATE_CONFIG
|
||||||
|
else
|
||||||
|
echo "Using existing config file " $FRAMADATE_CONFIG
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configure /admin basic auth
|
||||||
|
if [ ! -f /var/www/framadate/admin/.htpasswd ]; then
|
||||||
|
if [ "$ADMIN_USER" ] && [ "$ADMIN_PASSWORD" ]; then
|
||||||
|
htpasswd -bc /var/www/framadate/admin/.htpasswd $ADMIN_USER $ADMIN_PASSWORD
|
||||||
|
else
|
||||||
|
echo "!!! You need to configure ADMIN_USER and ADMIN_PASSWORD environment variables !!!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$ENV" = "dev" ]; then
|
||||||
|
echo Installing PHP development dependencies
|
||||||
|
composer install --no-interaction --no-progress
|
||||||
|
else
|
||||||
|
echo Installing PHP production dependencies
|
||||||
|
composer install -o --no-interaction --no-progress --prefer-dist --no-dev
|
||||||
|
composer dump-autoload --optimize --no-dev --classmap-authoritative
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Await MySQL Container being ready
|
||||||
|
until /usr/bin/mysql --host=$MYSQL_HOST --user=$MYSQL_USER --password=$MYSQL_PASSWORD --silent --execute "SELECT 1;" $MYSQL_DB; do
|
||||||
|
>&2 echo "MySQL is unavailable - sleeping"
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
>&2 echo "Resuming setup"
|
||||||
|
|
||||||
|
echo "Setting up .htaccess"
|
||||||
|
cp /var/www/framadate/htaccess.txt /var/www/framadate/.htaccess
|
||||||
|
|
||||||
|
# Run Database migrations
|
||||||
|
echo "Running database migrations"
|
||||||
|
php /var/www/framadate/bin/doctrine migrations:status --no-interaction -vvv
|
||||||
|
php /var/www/framadate/bin/doctrine migrations:migrate --no-interaction -vvv
|
||||||
|
|
||||||
|
# Run apache server
|
||||||
|
# chown -R www-data:www-data /var/www/framadate
|
||||||
|
source /etc/apache2/envvars
|
||||||
|
exec apache2 -D FOREGROUND
|
11
docker/stretch/php.ini
Normal file
11
docker/stretch/php.ini
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
apc.enable_cli = 1
|
||||||
|
date.timezone = UTC
|
||||||
|
session.auto_start = Off
|
||||||
|
short_open_tag = Off
|
||||||
|
|
||||||
|
# http://symfony.com/doc/current/performance.html
|
||||||
|
opcache.interned_strings_buffer = 16
|
||||||
|
opcache.max_accelerated_files = 20000
|
||||||
|
opcache.memory_consumption = 256
|
||||||
|
realpath_cache_size = 4096K
|
||||||
|
realpath_cache_ttl = 600
|
@ -28,7 +28,7 @@ include_once __DIR__ . '/app/inc/init.php';
|
|||||||
/* -------- */
|
/* -------- */
|
||||||
$logService = new LogService();
|
$logService = new LogService();
|
||||||
$pollService = new PollService($connect, $logService);
|
$pollService = new PollService($connect, $logService);
|
||||||
$mailService = new MailService($config['use_smtp'], $config['smtp_options']);
|
$mailService = new MailService($config['use_smtp'], $config['smtp_options'], $config['use_sendmail']);
|
||||||
|
|
||||||
/* PAGE */
|
/* PAGE */
|
||||||
/* ---- */
|
/* ---- */
|
||||||
@ -55,5 +55,6 @@ if (!empty($_POST['mail'])) {
|
|||||||
|
|
||||||
$smarty->assign('title', __('Homepage', 'Where are my polls'));
|
$smarty->assign('title', __('Homepage', 'Where are my polls'));
|
||||||
$smarty->assign('message', $message);
|
$smarty->assign('message', $message);
|
||||||
|
$smarty->assign('locale', $locale);
|
||||||
|
|
||||||
$smarty->display('find_polls.tpl');
|
$smarty->display('find_polls.tpl');
|
||||||
|
@ -35,14 +35,19 @@ $pollService = new PollService($connect, new $logService());
|
|||||||
/* PAGE */
|
/* PAGE */
|
||||||
/* ---- */
|
/* ---- */
|
||||||
|
|
||||||
$demoPoll = $pollService->findById('aqg259dth55iuhwm');
|
$demoPollURL = "";
|
||||||
|
|
||||||
|
if (defined("DEMO_POLL_ID")) {
|
||||||
|
$demoPollURL = Utils::getUrlSondage(DEMO_POLL_ID);
|
||||||
|
}
|
||||||
|
|
||||||
$nbcol = max( $config['show_what_is_that'] + $config['show_the_software'] + $config['show_cultivate_your_garden'], 1 );
|
$nbcol = max( $config['show_what_is_that'] + $config['show_the_software'] + $config['show_cultivate_your_garden'], 1 );
|
||||||
|
|
||||||
$smarty->assign('show_what_is_that', $config['show_what_is_that']);
|
$smarty->assign('show_what_is_that', $config['show_what_is_that']);
|
||||||
$smarty->assign('show_the_software', $config['show_the_software']);
|
$smarty->assign('show_the_software', $config['show_the_software']);
|
||||||
$smarty->assign('show_cultivate_your_garden', $config['show_cultivate_your_garden']);
|
$smarty->assign('show_cultivate_your_garden', $config['show_cultivate_your_garden']);
|
||||||
$smarty->assign('col_size', 12 / $nbcol);
|
$smarty->assign('col_size', 12 / $nbcol);
|
||||||
$smarty->assign('demo_poll', $demoPoll);
|
$smarty->assign('demo_poll_url', $demoPollURL);
|
||||||
|
|
||||||
$smarty->assign('title', __('Generic', 'Make your polls'));
|
$smarty->assign('title', __('Generic', 'Make your polls'));
|
||||||
|
|
||||||
|
@ -1,9 +1,67 @@
|
|||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Markdown Editor
|
||||||
|
* @type {MDEWrapper}
|
||||||
|
*/
|
||||||
wrapper = new MDEWrapper($('.js-desc textarea')[0], $('#rich-editor-button'), $('#simple-editor-button'));
|
wrapper = new MDEWrapper($('.js-desc textarea')[0], $('#rich-editor-button'), $('#simple-editor-button'));
|
||||||
var firstOpening = true;
|
var firstOpening = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save a list of admin polls inside LocalStorage
|
||||||
|
* @param adminPolls
|
||||||
|
*/
|
||||||
|
function setAdminPolls(adminPolls) {
|
||||||
|
localStorage.setItem('admin_polls', JSON.stringify(adminPolls));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add an admin poll inside LocalStorage
|
||||||
|
* @param adminPoll
|
||||||
|
*/
|
||||||
|
function addAdminPoll(adminPoll) {
|
||||||
|
var adminPolls = localStorage.getItem('admin_polls');
|
||||||
|
if (adminPolls === null) {
|
||||||
|
adminPolls = [];
|
||||||
|
} else {
|
||||||
|
adminPolls = JSON.parse(adminPolls);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Test if the poll is already inside the list
|
||||||
|
*/
|
||||||
|
var index = adminPolls.findIndex(function (existingPoll) {
|
||||||
|
return existingPoll.url === adminPoll.url;
|
||||||
|
});
|
||||||
|
if (index === -1) {
|
||||||
|
adminPolls.push(adminPoll);
|
||||||
|
} else { // if the poll is already present, we need to update the last access date
|
||||||
|
adminPolls[index] = adminPoll;
|
||||||
|
}
|
||||||
|
setAdminPolls(adminPolls);
|
||||||
|
}
|
||||||
|
|
||||||
|
var adminPoll = {
|
||||||
|
url: window.location.href,
|
||||||
|
title: $('#title-form h3').get(0).childNodes[0].nodeValue,
|
||||||
|
accessed: (new Date()).toISOString()
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!localStorage.getItem('admin_polls')) {
|
||||||
|
setAdminPolls([adminPoll]);
|
||||||
|
} else {
|
||||||
|
addAdminPoll(adminPoll);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initiate popovers
|
||||||
|
*/
|
||||||
$('[data-toggle="popover"]').popover();
|
$('[data-toggle="popover"]').popover();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create node with text to use the Clipboard API
|
||||||
|
* @param text
|
||||||
|
* @returns {HTMLPreElement}
|
||||||
|
*/
|
||||||
function createNode(text) {
|
function createNode(text) {
|
||||||
var node = document.createElement('pre');
|
var node = document.createElement('pre');
|
||||||
node.style.width = '1px';
|
node.style.width = '1px';
|
||||||
@ -14,6 +72,10 @@ $(document).ready(function() {
|
|||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy a Node to use for Clipboard API
|
||||||
|
* @param node
|
||||||
|
*/
|
||||||
function copyNode(node) {
|
function copyNode(node) {
|
||||||
var selection = getSelection();
|
var selection = getSelection();
|
||||||
selection.removeAllRanges();
|
selection.removeAllRanges();
|
||||||
@ -26,6 +88,10 @@ $(document).ready(function() {
|
|||||||
selection.removeAllRanges();
|
selection.removeAllRanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy a text inside the clipboard
|
||||||
|
* @param text
|
||||||
|
*/
|
||||||
function copyText(text) {
|
function copyText(text) {
|
||||||
var node = createNode(text);
|
var node = createNode(text);
|
||||||
document.body.appendChild(node);
|
document.body.appendChild(node);
|
||||||
|
@ -15,75 +15,74 @@
|
|||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
*/
|
*/
|
||||||
(function () {
|
|
||||||
|
|
||||||
// 2 choices filled and you can submit
|
|
||||||
|
|
||||||
var submitChoicesAvalaible = function () {
|
$(document).ready(function () {
|
||||||
|
$(document.formulaire).on('submit', function (e) {
|
||||||
|
if (!isSubmitChoicesAvalaible()) {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var $next = $('button[name="fin_sondage_autre"]');
|
||||||
|
var $removeAChoice = $('#remove-a-choice');
|
||||||
|
var $addAChoice = $('#add-a-choice');
|
||||||
|
|
||||||
|
var updateButtonState = function() {
|
||||||
|
var $choiceFields = $('.choice-field');
|
||||||
|
$removeAChoice.prop('disabled', function() { return $choiceFields.length <= 2; });
|
||||||
|
$next.prop('disabled', !isSubmitChoicesAvalaible());
|
||||||
|
}
|
||||||
|
|
||||||
|
var isSubmitChoicesAvalaible = function () {
|
||||||
|
return (countFilledChoices() >= 2);
|
||||||
|
};
|
||||||
|
|
||||||
|
var countFilledChoices = function() {
|
||||||
var nb_filled_choices = 0;
|
var nb_filled_choices = 0;
|
||||||
$('.choice-field input').each(function () {
|
$('.choice-field input').each(function () {
|
||||||
if ($(this).val() != '') {
|
if ($(this).val() != '') {
|
||||||
nb_filled_choices++;
|
nb_filled_choices++;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (nb_filled_choices >= 1) {
|
return nb_filled_choices;
|
||||||
$('button[name="fin_sondage_autre"]').removeClass('disabled');
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
$('button[name="fin_sondage_autre"]').addClass('disabled');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Handle form submission
|
$removeAChoice.on('click', function () {
|
||||||
$(document.formulaire).on('submit', function (e) {
|
$('.choice-field:last').remove();
|
||||||
if (!submitChoicesAvalaible()) {
|
updateButtonState();
|
||||||
e.preventDefault();
|
|
||||||
e.stopPropagation();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Button "Add a choice"
|
$addAChoice.on('click', function () {
|
||||||
|
var $choiceFields = $('.choice-field');
|
||||||
$('#add-a-choice').on('click', function () {
|
var nb_choices = $choiceFields.length;
|
||||||
var nb_choices = $('.choice-field').length;
|
var last_choice = $choiceFields.last();
|
||||||
var last_choice = $('.choice-field:last');
|
|
||||||
|
|
||||||
var new_choice = last_choice.html();
|
var new_choice = last_choice.html();
|
||||||
|
|
||||||
// label
|
// label
|
||||||
var last_choice_label = last_choice.children('label').text();
|
var last_choice_label = last_choice.children('label').text();
|
||||||
var choice_text = last_choice_label.substring(0, last_choice_label.indexOf(' '));
|
var choice_text = last_choice_label.substring(0, last_choice_label.indexOf(' '));
|
||||||
|
|
||||||
// for and id
|
// for and id
|
||||||
var re_id_choice = new RegExp('"choice' + (nb_choices - 1) + '"', 'g');
|
var re_id_choice = new RegExp('"choice' + (nb_choices - 1) + '"', 'g');
|
||||||
|
|
||||||
var new_choice_html = new_choice.replace(re_id_choice, '"choice' + nb_choices + '"')
|
var new_choice_html = new_choice.replace(re_id_choice, '"choice' + nb_choices + '"')
|
||||||
.replace(last_choice_label, choice_text + ' ' + (nb_choices + 1))
|
.replace(last_choice_label, choice_text + ' ' + (nb_choices + 1))
|
||||||
.replace(/value="(.*?)"/g, 'value=""');
|
.replace(/value="(.*?)"/g, 'value=""');
|
||||||
|
|
||||||
last_choice.after('<div class="form-group choice-field">' + new_choice_html + '</div>');
|
last_choice.after('<div class="form-group choice-field row">' + new_choice_html + '</div>');
|
||||||
$('#choice' + nb_choices).focus();
|
$('#choice' + nb_choices).focus();
|
||||||
$('#remove-a-choice').removeClass('disabled');
|
updateButtonState()
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// Button "Remove a choice"
|
|
||||||
|
|
||||||
$('#remove-a-choice').on('click', function () {
|
|
||||||
$('.choice-field:last').remove();
|
|
||||||
var nb_choices = $('.choice-field').length;
|
|
||||||
$('#choice' + (nb_choices - 1)).focus();
|
|
||||||
if (nb_choices == 1) {
|
|
||||||
$('#remove-a-choice').addClass('disabled');
|
|
||||||
}
|
|
||||||
submitChoicesAvalaible();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('keyup, change', '.choice-field input', function () {
|
$(document).on('keyup, change', '.choice-field input', function () {
|
||||||
submitChoicesAvalaible();
|
updateButtonState();
|
||||||
});
|
});
|
||||||
submitChoicesAvalaible();
|
|
||||||
|
updateButtonState();
|
||||||
|
|
||||||
// Button to build markdown from: link + image-url + text
|
// Button to build markdown from: link + image-url + text
|
||||||
|
|
||||||
@ -92,7 +91,7 @@
|
|||||||
var md_img = $('#md-img');
|
var md_img = $('#md-img');
|
||||||
var md_val = $('#md-a');
|
var md_val = $('#md-a');
|
||||||
|
|
||||||
$(document).on('click', '.md-a-img', function () {
|
$('.md-a-img').on('click' , function () {
|
||||||
md_a_imgModal.modal('show');
|
md_a_imgModal.modal('show');
|
||||||
md_a_imgModal.find('.btn-primary').attr('value', $(this).prev().attr('id'));
|
md_a_imgModal.find('.btn-primary').attr('value', $(this).prev().attr('id'));
|
||||||
$('#md-a-imgModalLabel').text($(this).attr('title'));
|
$('#md-a-imgModalLabel').text($(this).attr('title'));
|
||||||
@ -116,6 +115,6 @@
|
|||||||
md_img.val('');
|
md_img.val('');
|
||||||
md_val.val('');
|
md_val.val('');
|
||||||
md_text.val('');
|
md_text.val('');
|
||||||
submitChoicesAvalaible();
|
updateButtonState();
|
||||||
});
|
});
|
||||||
})();
|
});
|
||||||
|
@ -39,6 +39,17 @@ $(document).ready(function () {
|
|||||||
$("#use_customized_url").change(function () {
|
$("#use_customized_url").change(function () {
|
||||||
if ($(this).prop("checked")) {
|
if ($(this).prop("checked")) {
|
||||||
$("#customized_url_options").removeClass("hidden");
|
$("#customized_url_options").removeClass("hidden");
|
||||||
|
// Check url pattern
|
||||||
|
$('#customized_url').on('input', function() {
|
||||||
|
var regex_url = /^[a-zA-Z0-9-]*$/
|
||||||
|
if (! regex_url.test(this.value)) {
|
||||||
|
$(this).parent(".input-group").addClass("has-error");
|
||||||
|
$(this).attr("aria-invalid", "true");
|
||||||
|
} else {
|
||||||
|
$(this).parent(".input-group").removeClass("has-error");
|
||||||
|
$(this).attr("aria-invalid", "false");
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
$("#customized_url_options").addClass("hidden");
|
$("#customized_url_options").addClass("hidden");
|
||||||
}
|
}
|
||||||
@ -49,9 +60,9 @@ $(document).ready(function () {
|
|||||||
*/
|
*/
|
||||||
$("#use_ValueMax").change(function () {
|
$("#use_ValueMax").change(function () {
|
||||||
if ($(this).prop("checked")) {
|
if ($(this).prop("checked")) {
|
||||||
$("#ValueMax").removeClass("hidden");
|
$("#valueMaxWrapper").removeClass("hidden");
|
||||||
} else {
|
} else {
|
||||||
$("#ValueMax").addClass("hidden");
|
$("#valueMaxWrapper").addClass("hidden");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -67,6 +78,25 @@ $(document).ready(function () {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hide/Show Warning collect_users_mail + editable by all
|
||||||
|
*/
|
||||||
|
$("input[name='collect_users_mail']").change(function(){
|
||||||
|
if (($("input[name='collect_users_mail']:checked").val() != 0) && ($("input[name='editable']:checked").val() == 1)) {
|
||||||
|
$("#collect_warning").removeClass("hidden");
|
||||||
|
} else {
|
||||||
|
$("#collect_warning").addClass("hidden");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("input[name='editable']").change(function(){
|
||||||
|
if ($("input[name='collect_users_mail']:checked").val() != 0 && $("input[name='editable']:checked").val() == 1) {
|
||||||
|
$("#collect_warning").removeClass("hidden");
|
||||||
|
} else {
|
||||||
|
$("#collect_warning").addClass("hidden");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Check cookies are enabled too
|
// Check cookies are enabled too
|
||||||
var cookieEnabled = function () {
|
var cookieEnabled = function () {
|
||||||
var cookieEnabled = navigator.cookieEnabled;
|
var cookieEnabled = navigator.cookieEnabled;
|
||||||
|
@ -16,8 +16,64 @@
|
|||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
var form;
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save a list of polls inside LocalStorage
|
||||||
|
* @param polls
|
||||||
|
*/
|
||||||
|
function setPolls(polls) {
|
||||||
|
localStorage.setItem('polls', JSON.stringify(polls));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add an poll inside LocalStorage
|
||||||
|
* @param poll
|
||||||
|
*/
|
||||||
|
function addPoll(poll) {
|
||||||
|
var polls = localStorage.getItem('polls');
|
||||||
|
if (polls === null) {
|
||||||
|
polls = [];
|
||||||
|
} else {
|
||||||
|
polls = JSON.parse(polls);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if the poll is already inside the list
|
||||||
|
*/
|
||||||
|
var index = polls.findIndex(function (existingPoll) {
|
||||||
|
return existingPoll.url === poll.url;
|
||||||
|
});
|
||||||
|
if (index === -1) {
|
||||||
|
polls.push(poll);
|
||||||
|
} else { // if the poll is already present, we need to update the last access date
|
||||||
|
polls[index] = poll;
|
||||||
|
}
|
||||||
|
setPolls(polls);
|
||||||
|
}
|
||||||
|
|
||||||
|
var poll = {
|
||||||
|
url: window.location.href,
|
||||||
|
title: $('#title-form h3').get(0).childNodes[0].nodeValue,
|
||||||
|
accessed: (new Date()).toISOString()
|
||||||
|
};
|
||||||
|
|
||||||
|
function isAdmin() {
|
||||||
|
return $('.jumbotron').hasClass('bg-danger');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isAdmin()) {
|
||||||
|
if (!localStorage.getItem('polls')) {
|
||||||
|
setPolls([poll]);
|
||||||
|
} else {
|
||||||
|
addPoll(poll);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$('#poll_form').submit(function (event) {
|
$('#poll_form').submit(function (event) {
|
||||||
var name = $('#name').val().trim();
|
var name = $('#name').val().trim();
|
||||||
|
|
||||||
@ -55,7 +111,19 @@ $(document).ready(function () {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var form = $('#comment_form');
|
|
||||||
|
form = $('#comment_form');
|
||||||
|
|
||||||
|
|
||||||
|
checkCommentSending();
|
||||||
|
|
||||||
|
$("#comment_name").on("keyup change", checkCommentSending);
|
||||||
|
$("#comment").on("keyup change", checkCommentSending);
|
||||||
|
|
||||||
|
$("#comment_name").on("change", formatValues);
|
||||||
|
$("#comment").on("change", formatValues);
|
||||||
|
|
||||||
|
|
||||||
form.submit(function(event) {
|
form.submit(function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
@ -115,3 +183,30 @@ $(document).ready(function () {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function formatValues() {
|
||||||
|
var value = $(this).val().trim();
|
||||||
|
|
||||||
|
if (0 === value.length) {
|
||||||
|
$(this).val("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkCommentSending() {
|
||||||
|
|
||||||
|
var button = $("#add_comment");
|
||||||
|
|
||||||
|
// on page load, "textSend" is not set
|
||||||
|
if ("undefined" === typeof button.data("textSend")) {
|
||||||
|
button.data("textSend", button.text());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!form.get(0).checkValidity()) {
|
||||||
|
button.prop("disabled", true);
|
||||||
|
button.text(button.data("textWait"));
|
||||||
|
} else {
|
||||||
|
button.prop("disabled", false);
|
||||||
|
button.text(button.data("textSend"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
1
js/moment-with-locales.min.js
vendored
Normal file
1
js/moment-with-locales.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
6
js/vue.min.js
vendored
Normal file
6
js/vue.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -1,5 +0,0 @@
|
|||||||
msgfmt -o locale\fr_FR\LC_MESSAGES\Studs.mo locale\fr_FR\LC_MESSAGES\Studs.po
|
|
||||||
msgfmt -o locale\es_ES\LC_MESSAGES\Studs.mo locale\es_ES\LC_MESSAGES\Studs.po
|
|
||||||
msgfmt -o locale\de_DE\LC_MESSAGES\Studs.mo locale\de_DE\LC_MESSAGES\Studs.po
|
|
||||||
msgfmt -o locale\en_GB\LC_MESSAGES\Studs.mo locale\en_GB\LC_MESSAGES\Studs.po
|
|
||||||
pause
|
|
@ -122,7 +122,7 @@
|
|||||||
"Enter a name and a comment!": "Enter a name and a comment!",
|
"Enter a name and a comment!": "Enter a name and a comment!",
|
||||||
"Enter a title": "Enter a title",
|
"Enter a title": "Enter a title",
|
||||||
"Enter an email address": "Enter an email address",
|
"Enter an email address": "Enter an email address",
|
||||||
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of voters limitation: value must be an integer greater than 0",
|
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of votes limitation: Value must be an integer greater than 0",
|
||||||
"Error!": "خطأ !",
|
"Error!": "خطأ !",
|
||||||
"Failed to delete all comments": "Failed to delete all comments",
|
"Failed to delete all comments": "Failed to delete all comments",
|
||||||
"Failed to delete all votes": "Failed to delete all votes",
|
"Failed to delete all votes": "Failed to delete all votes",
|
||||||
@ -143,7 +143,7 @@
|
|||||||
"Poll id already used": "Identifier is already used",
|
"Poll id already used": "Identifier is already used",
|
||||||
"Something is going wrong...": "حدث هناك خطأ ما ...",
|
"Something is going wrong...": "حدث هناك خطأ ما ...",
|
||||||
"Something is wrong with the format": "Something is wrong with the format",
|
"Something is wrong with the format": "Something is wrong with the format",
|
||||||
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Something is wrong with the format: Customized urls should only consist of alphanumeric characters and hyphens.",
|
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Something is wrong with the format: Customized URLs should only consist of alphanumeric characters and hyphens.",
|
||||||
"Something is wrong with the format: name shouldn't have any spaces before or after": "Something is wrong with the format: name shouldn't have any spaces before or after",
|
"Something is wrong with the format: name shouldn't have any spaces before or after": "Something is wrong with the format: name shouldn't have any spaces before or after",
|
||||||
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.",
|
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.",
|
||||||
"The column already exists": "The column already exists",
|
"The column already exists": "The column already exists",
|
||||||
@ -161,7 +161,7 @@
|
|||||||
"FindPolls": {
|
"FindPolls": {
|
||||||
"Have a good day!": "طاب نهارك !",
|
"Have a good day!": "طاب نهارك !",
|
||||||
"Here is the list of the polls that you manage on %s:": "Here is the list of the polls that you manage on %s:",
|
"Here is the list of the polls that you manage on %s:": "Here is the list of the polls that you manage on %s:",
|
||||||
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.",
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator at %s.",
|
||||||
"List of your polls": "قائمة إستطلاعات الرأي الخاصة بك",
|
"List of your polls": "قائمة إستطلاعات الرأي الخاصة بك",
|
||||||
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.",
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.",
|
||||||
"Polls sent": "Polls sent",
|
"Polls sent": "Polls sent",
|
||||||
@ -174,7 +174,7 @@
|
|||||||
"Back": "العودة",
|
"Back": "العودة",
|
||||||
"Back to the homepage of": "العودة إلى صفحة",
|
"Back to the homepage of": "العودة إلى صفحة",
|
||||||
"Cancel": "إلغاء",
|
"Cancel": "إلغاء",
|
||||||
"Caption": "Caption",
|
"Caption": "Information",
|
||||||
"Choice": "الخَيار",
|
"Choice": "الخَيار",
|
||||||
"Classic": "عادي",
|
"Classic": "عادي",
|
||||||
"Close": "إغلاق",
|
"Close": "إغلاق",
|
||||||
@ -185,10 +185,10 @@
|
|||||||
"Edit": "تعديل",
|
"Edit": "تعديل",
|
||||||
"Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate is an online service for planning an appointment or make a decision quickly and easily.",
|
"Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate is an online service for planning an appointment or make a decision quickly and easily.",
|
||||||
"Home": "الرئيسية",
|
"Home": "الرئيسية",
|
||||||
"Ifneedbe": "If need be",
|
"Ifneedbe": "Under reserve",
|
||||||
"Legend:": "Legend:",
|
"Legend:": "Legend:",
|
||||||
"Link": "الرابط",
|
"Link": "الرابط",
|
||||||
"Make your polls": "Make your polls",
|
"Make your polls": "Create your polls",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Next": "التالي",
|
"Next": "التالي",
|
||||||
"No": "لا",
|
"No": "لا",
|
||||||
@ -235,17 +235,17 @@
|
|||||||
"Select the language": "إختيار لغة"
|
"Select the language": "إختيار لغة"
|
||||||
},
|
},
|
||||||
"Mail": {
|
"Mail": {
|
||||||
"Author's message": "Author's message",
|
"Author's message": "Message for the author",
|
||||||
"FOOTER": "\"The road is long, but the way is clear…\"<br/>Framasoft lives only by your donations.<br/>Thank you in advance for your support https://soutenir.framasoft.org",
|
"FOOTER": "\"The road is long, but the way is clear…\"<br/>Framasoft lives only by your donations.<br/>Thank you in advance for your support https://soutenir.framasoft.org",
|
||||||
"For sending to the polled users": "Participant link",
|
"For sending to the polled users": "Participant link",
|
||||||
"Notification of poll: %s": "Notification of poll: %s",
|
"Notification of poll: %s": "Notification of poll: %s",
|
||||||
"Poll's participation: %s": "Poll participation: %s",
|
"Poll's participation: %s": "Poll participation: %s",
|
||||||
"Someone just change your poll available at the following link %s.": "Someone just changed your poll at the following link <a href=\"%1$s\">%1$s</a>.",
|
"Someone just change your poll available at the following link %s.": "Someone just changed your poll at the following link <a href=\"%1$s\">%1$s</a>.",
|
||||||
"Someone just delete your poll %s.": "Someone just deleted your poll \"%s\".",
|
"Someone just delete your poll %s.": "Someone just deleted your poll \"%s\".",
|
||||||
"Thanks for filling the poll at the link above": "Please fill in the poll at the link above",
|
"Thanks for filling the poll at the link above": "Thank you for participating in the poll at the following link",
|
||||||
"Thanks for your trust.": "شكرا لك على ثقتك.",
|
"Thanks for your trust.": "شكرا لك على ثقتك.",
|
||||||
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "This is the message to forward to the poll participants.",
|
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "This is the message to forward to the poll participants.",
|
||||||
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "This message should NOT be sent to the poll participants. You should keep it private. <br/><br/>You can modify your poll at the link above",
|
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "This message should NOT be sent to the poll participants. You should keep it private. <br/><br/>You can modify your poll at the following link",
|
||||||
"You have changed the settings of your poll. \nYou can modify this poll with this link": "You have changed the settings of your poll.<br/>You can modify this poll with this link",
|
"You have changed the settings of your poll. \nYou can modify this poll with this link": "You have changed the settings of your poll.<br/>You can modify this poll with this link",
|
||||||
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] New settings for your poll",
|
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] New settings for your poll",
|
||||||
"filled a vote.\nYou can find your poll at the link": "added a vote.<br/>You can visit your poll at the link",
|
"filled a vote.\nYou can find your poll at the link": "added a vote.<br/>You can visit your poll at the link",
|
||||||
@ -273,13 +273,14 @@
|
|||||||
"Display the chart of the results": "عرض المنحنى البياني للنتائج",
|
"Display the chart of the results": "عرض المنحنى البياني للنتائج",
|
||||||
"Edit the line: %s": "Edit line: %s",
|
"Edit the line: %s": "Edit line: %s",
|
||||||
"Link to edit this particular line": "Link to edit this particular line",
|
"Link to edit this particular line": "Link to edit this particular line",
|
||||||
|
"Link to edit this particular line has been copied inside the clipboard!": "The link to edit this particular line has been copied to the clipboard!",
|
||||||
"Remove the line:": "Remove line:",
|
"Remove the line:": "Remove line:",
|
||||||
"Save the choices": "Save choices",
|
"Save the choices": "Save choices",
|
||||||
"Scroll to the left": "Scroll to the left",
|
"Scroll to the left": "Scroll to the left",
|
||||||
"Scroll to the right": "Scroll to the right",
|
"Scroll to the right": "Scroll to the right",
|
||||||
"The best choice at this time is:": "The current best choice is:",
|
"The best choice at this time is:": "The current best choice is:",
|
||||||
"The bests choices at this time are:": "The current best choices are:",
|
"The bests choices at this time are:": "The current best choices are:",
|
||||||
"Vote ifneedbe for": "Vote \"If need be\" for",
|
"Vote ifneedbe for": "Votes under reserve for",
|
||||||
"Vote no for": "Vote \"no\" for",
|
"Vote no for": "Vote \"no\" for",
|
||||||
"Vote yes for": "Vote \"yes\" for",
|
"Vote yes for": "Vote \"yes\" for",
|
||||||
"Votes of the poll": "الأصوات",
|
"Votes of the poll": "الأصوات",
|
||||||
@ -352,7 +353,7 @@
|
|||||||
"To receive an email for each new vote": "Receive an email for each new vote",
|
"To receive an email for each new vote": "Receive an email for each new vote",
|
||||||
"Use a password to restrict access": "Use a password to restrict access",
|
"Use a password to restrict access": "Use a password to restrict access",
|
||||||
"Value Max": "Value Max",
|
"Value Max": "Value Max",
|
||||||
"ValueMax instructions": "voters per options ",
|
"ValueMax instructions": "votes per options ",
|
||||||
"Voters can modify their vote themselves": "Voters can modify their vote themselves",
|
"Voters can modify their vote themselves": "Voters can modify their vote themselves",
|
||||||
"Votes cannot be modified": "Votes cannot be modified",
|
"Votes cannot be modified": "Votes cannot be modified",
|
||||||
"You are in the poll creation section.": "You are in the poll creation section.",
|
"You are in the poll creation section.": "You are in the poll creation section.",
|
||||||
@ -432,19 +433,19 @@
|
|||||||
"Remove the column": "حذف عمود",
|
"Remove the column": "حذف عمود",
|
||||||
"Remove the comments": "إزالة التعليقات",
|
"Remove the comments": "إزالة التعليقات",
|
||||||
"Remove the votes": "حذف الأصوات",
|
"Remove the votes": "حذف الأصوات",
|
||||||
|
"The poll is created.": "The poll was created.",
|
||||||
"Vote added": "Vote added",
|
"Vote added": "Vote added",
|
||||||
"Vote deleted": "Vote deleted",
|
"Vote deleted": "Vote deleted",
|
||||||
"Vote updated": "تم تحديث التصويت",
|
"Vote updated": "تم تحديث التصويت",
|
||||||
"You can add a new scheduling date to your poll.": "You can add a new scheduling date to your poll.",
|
"You can add a new scheduling date to your poll.": "You can add a new scheduling date to your poll.",
|
||||||
"Your poll has been removed!": "Your poll has been removed!",
|
"Your poll has been removed!": "Your poll has been removed!",
|
||||||
"The poll is created." : "The poll is created.",
|
|
||||||
"and add a new column with": "and add a new column with",
|
"and add a new column with": "and add a new column with",
|
||||||
"remove a column or a line with": "remove a column or a line with"
|
"remove a column or a line with": "remove a column or a line with"
|
||||||
},
|
},
|
||||||
"studs": {
|
"studs": {
|
||||||
"Adding the vote succeeded": "Vote added",
|
"Adding the vote succeeded": "Vote added",
|
||||||
"Deletion date:": "Deletion date:",
|
"Deletion date:": "Deletion date:",
|
||||||
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "If you want to vote in this poll, you have to give your name, make your choice, and submit it with the plus button at the end of the line.",
|
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "If you want to vote in this poll, you have to give your name, make your choice, and submit it by selecting the save button at the end of the line.",
|
||||||
"POLL_LOCKED_WARNING": "The administrator locked this poll. Votes and comments are frozen, it is no longer possible to participate",
|
"POLL_LOCKED_WARNING": "The administrator locked this poll. Votes and comments are frozen, it is no longer possible to participate",
|
||||||
"The poll is expired, it will be deleted soon.": "The poll has expired, it will soon be deleted.",
|
"The poll is expired, it will be deleted soon.": "The poll has expired, it will soon be deleted.",
|
||||||
"Update vote succeeded": "Vote updated",
|
"Update vote succeeded": "Vote updated",
|
||||||
|
@ -31,8 +31,9 @@
|
|||||||
"Back to administration": "Distreiñ d'ar bajenn verañ",
|
"Back to administration": "Distreiñ d'ar bajenn verañ",
|
||||||
"Change the poll": "Kemmañ ar sontadeg",
|
"Change the poll": "Kemmañ ar sontadeg",
|
||||||
"Confirm removal of the poll": "Kadarnait dilemel ar sontadeg",
|
"Confirm removal of the poll": "Kadarnait dilemel ar sontadeg",
|
||||||
"Deleted the poll": "Dilemel ar sontadeg",
|
"Deleted the poll": "Poll deleted",
|
||||||
"Email": "Chomlec'h postel",
|
"Email": "Chomlec'h postel",
|
||||||
|
"Executed": "Executed",
|
||||||
"Expiration date": "Diamzeriñ",
|
"Expiration date": "Diamzeriñ",
|
||||||
"Fail": "C'hwitadenn",
|
"Fail": "C'hwitadenn",
|
||||||
"Failed:": "C'hwitadenn:",
|
"Failed:": "C'hwitadenn:",
|
||||||
@ -49,11 +50,13 @@
|
|||||||
"Purged:": "Spurjet:",
|
"Purged:": "Spurjet:",
|
||||||
"See the poll": "Sellet ar sontadeg",
|
"See the poll": "Sellet ar sontadeg",
|
||||||
"Skipped:": "Tremenet:",
|
"Skipped:": "Tremenet:",
|
||||||
|
"Status": "Status",
|
||||||
"Succeeded:": "Berzh:",
|
"Succeeded:": "Berzh:",
|
||||||
"Success": "Berzh",
|
"Success": "Berzh",
|
||||||
"Summary": "Diverradenn",
|
"Summary": "Diverradenn",
|
||||||
"Title": "Titl",
|
"Title": "Titl",
|
||||||
"Votes": "Mouezhioù",
|
"Votes": "Mouezhioù",
|
||||||
|
"Waiting": "Waiting",
|
||||||
"polls in the database at this time": "sontadeg er stlennvon"
|
"polls in the database at this time": "sontadeg er stlennvon"
|
||||||
},
|
},
|
||||||
"Check": {
|
"Check": {
|
||||||
@ -83,6 +86,7 @@
|
|||||||
"Comments of polled people": "Evezhiadennoù",
|
"Comments of polled people": "Evezhiadennoù",
|
||||||
"Remove the comment": "Dilemel an evezhiadenn",
|
"Remove the comment": "Dilemel an evezhiadenn",
|
||||||
"Send the comment": "Kas an evezhiadenn",
|
"Send the comment": "Kas an evezhiadenn",
|
||||||
|
"Type your name and a comment to send it": "Enter your name and comment prior to submitting the form",
|
||||||
"Your comment": "Hoc'h evezhiadenn",
|
"Your comment": "Hoc'h evezhiadenn",
|
||||||
"anonyme": "dizanv"
|
"anonyme": "dizanv"
|
||||||
},
|
},
|
||||||
@ -122,7 +126,7 @@
|
|||||||
"Enter a name and a comment!": "Enankit un anv hag un evezhiadenn!",
|
"Enter a name and a comment!": "Enankit un anv hag un evezhiadenn!",
|
||||||
"Enter a title": "Ret eo enankañ un titl!",
|
"Enter a title": "Ret eo enankañ un titl!",
|
||||||
"Enter an email address": "Ret eo enankañ ur chomlec'h postel",
|
"Enter an email address": "Ret eo enankañ ur chomlec'h postel",
|
||||||
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of voters limitation: Value must be an integer greater than 0",
|
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of votes limitation: Value must be an integer greater than 0",
|
||||||
"Error!": "Fazi!",
|
"Error!": "Fazi!",
|
||||||
"Failed to delete all comments": "C'hwitadenn en ur zilemel an holl evezhiadennoù",
|
"Failed to delete all comments": "C'hwitadenn en ur zilemel an holl evezhiadennoù",
|
||||||
"Failed to delete all votes": "C'hwitadenn en ur zilemel an holl vouezhioù",
|
"Failed to delete all votes": "C'hwitadenn en ur zilemel an holl vouezhioù",
|
||||||
@ -150,22 +154,39 @@
|
|||||||
"The name is invalid.": "Didalvoudek eo an anv.",
|
"The name is invalid.": "Didalvoudek eo an anv.",
|
||||||
"The name you've chosen already exist in this poll!": "An anv bet enanket ganeoc'h a zo dioutañ endeo!",
|
"The name you've chosen already exist in this poll!": "An anv bet enanket ganeoc'h a zo dioutañ endeo!",
|
||||||
"There is a problem with your choices": "Ur gudenn a zo gant ho tibaboù",
|
"There is a problem with your choices": "Ur gudenn a zo gant ho tibaboù",
|
||||||
|
"This id is not allowed": "This identifier is not allowed",
|
||||||
"This poll doesn't exist !": "N'eus ket eus ar sontadeg-mañ!",
|
"This poll doesn't exist !": "N'eus ket eus ar sontadeg-mañ!",
|
||||||
"Update vote failed": "C'hwitadenn war hizivadenn ar vouezh",
|
"Update vote failed": "C'hwitadenn war hizivadenn ar vouezh",
|
||||||
"You already voted": "Mouezhzt ho peus endeo",
|
"You already voted": "Mouezhzt ho peus endeo",
|
||||||
"You can't create a poll with hidden results with the following edition option:": "N'hallit ket krouiñ ur sontadeg gant respontoù kuzhet gant an dibarzhioù embann da heul:",
|
"You can't create a poll with hidden results with the following edition option:": "N'hallit ket krouiñ ur sontadeg gant respontoù kuzhet gant an dibarzhioù embann da heul:",
|
||||||
"You can't select more than %d dates": "N'hallit ket diuzañ ouzhpenn %d a zeiziadoù",
|
"You can't select more than %d dates": "N'hallit ket diuzañ ouzhpenn %d a zeiziadoù",
|
||||||
|
"You haven't filled the first section of the poll creation, or your session has expired.": "You haven't filled the first section of the poll creation, or your session has expired.",
|
||||||
"You haven't filled the first section of the poll creation.": "N'ho peus ket leuniet lodenn gentañ ar sontadeg",
|
"You haven't filled the first section of the poll creation.": "N'ho peus ket leuniet lodenn gentañ ar sontadeg",
|
||||||
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
||||||
},
|
},
|
||||||
"FindPolls": {
|
"FindPolls": {
|
||||||
|
"Address": "Address",
|
||||||
|
"Created polls": "Created polls",
|
||||||
"Have a good day!": "Devezh mat deoc'h!",
|
"Have a good day!": "Devezh mat deoc'h!",
|
||||||
"Here is the list of the polls that you manage on %s:": "Sed aze roll ho sontadegoù a verit war %s",
|
"Here is the list of the polls that you manage on %s:": "Sed aze roll ho sontadegoù a verit war %s",
|
||||||
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Ma n'ho peus ket savet ar goulenn ha ma soñj deoc'h eo un drougimplij eus ar gwazerezh kit e darempred gant merour %s.",
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Ma n'ho peus ket savet ar goulenn ha ma soñj deoc'h eo un drougimplij eus ar gwazerezh kit e darempred gant merour %s.",
|
||||||
|
"Last access date": "Last access date",
|
||||||
"List of your polls": "Roll ho sontadegoù",
|
"List of your polls": "Roll ho sontadegoù",
|
||||||
|
"Local Storage Help": "To help you find your previous polls, we save each poll you create or access inside your browser. This data is saved inside this browser only. The following data will be saved:",
|
||||||
|
"Local Storage Help Delete": "To delete this data click the trashcan on the according line or click the « delete my polls index » option. This won't delete your polls.",
|
||||||
|
"Local Storage Help Information Accessed": "The date you created or last accessed the poll",
|
||||||
|
"Local Storage Help Information Address": "It's address",
|
||||||
|
"Local Storage Help Information Title": "The title of the poll",
|
||||||
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: kaset eo bet ar postel-mañ deoc'h peogwir ho peus (pe unan bennak all) goulennet vefe kaset deoc'h roll ar sontadegoù krouet gant ar chomlec'h postel-mañ.",
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: kaset eo bet ar postel-mañ deoc'h peogwir ho peus (pe unan bennak all) goulennet vefe kaset deoc'h roll ar sontadegoù krouet gant ar chomlec'h postel-mañ.",
|
||||||
|
"Polls saved inside this browser": "Polls saved inside this browser",
|
||||||
"Polls sent": "Kaset eo bet ar sontadegoù",
|
"Polls sent": "Kaset eo bet ar sontadegoù",
|
||||||
"Send me my polls": "Kasit din ma sontadegoù"
|
"Remove all polls from this browser": "Remove all my polls from this browser's index",
|
||||||
|
"Remove poll from index": "Remove poll from index",
|
||||||
|
"Send me my polls": "Kasit din ma sontadegoù",
|
||||||
|
"Send my polls by email": "Send my polls by email",
|
||||||
|
"There are no polls saved inside your browser yet": "There are no polls saved inside your browser yet",
|
||||||
|
"Title": "Titl",
|
||||||
|
"Visited polls": "Visited polls"
|
||||||
},
|
},
|
||||||
"Generic": {
|
"Generic": {
|
||||||
"(in the format name@mail.com)": "(dindan ar stumm anv@postel.bzh)",
|
"(in the format name@mail.com)": "(dindan ar stumm anv@postel.bzh)",
|
||||||
@ -188,7 +209,7 @@
|
|||||||
"Ifneedbe": "Marteze",
|
"Ifneedbe": "Marteze",
|
||||||
"Legend:": "Alc'hwez:",
|
"Legend:": "Alc'hwez:",
|
||||||
"Link": "Ere",
|
"Link": "Ere",
|
||||||
"Make your polls": "Aozit emgavioù en un doare simpl ha dieub.",
|
"Make your polls": "Aozit emgavioù en un doare simpl ha dieub",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Next": "Kenderc'hel",
|
"Next": "Kenderc'hel",
|
||||||
"No": "Ket",
|
"No": "Ket",
|
||||||
@ -220,8 +241,11 @@
|
|||||||
"AppName": "Anv an arload",
|
"AppName": "Anv an arload",
|
||||||
"CleanUrl": "URL naet",
|
"CleanUrl": "URL naet",
|
||||||
"Database": "Stlennvon",
|
"Database": "Stlennvon",
|
||||||
"DbConnectionString": "Chadenn gennaskañ",
|
"DbDriver": "Database driver",
|
||||||
|
"DbHost": "Database hostname",
|
||||||
|
"DbName": "Database name",
|
||||||
"DbPassword": "Ger-tremen",
|
"DbPassword": "Ger-tremen",
|
||||||
|
"DbPort": "Database port",
|
||||||
"DbPrefix": "Rakger",
|
"DbPrefix": "Rakger",
|
||||||
"DbUser": "Arveriad",
|
"DbUser": "Arveriad",
|
||||||
"DefaultLanguage": "Yezh dre ziouer",
|
"DefaultLanguage": "Yezh dre ziouer",
|
||||||
@ -266,7 +290,9 @@
|
|||||||
"You have to provide a password to access the poll.": "Ret eo deoc'h reiñ ur ger-tremen evit mont d'ar sontadeg."
|
"You have to provide a password to access the poll.": "Ret eo deoc'h reiñ ur ger-tremen evit mont d'ar sontadeg."
|
||||||
},
|
},
|
||||||
"Poll results": {
|
"Poll results": {
|
||||||
|
"%s option": "%s option",
|
||||||
"Addition": "Sammad",
|
"Addition": "Sammad",
|
||||||
|
"Anyone will be able to access your email address after your vote": "Anyone will be able to see your email address after you voted",
|
||||||
"Best choice": "Dibab gwellañ",
|
"Best choice": "Dibab gwellañ",
|
||||||
"Best choices": "Dibaboù gwellañ",
|
"Best choices": "Dibaboù gwellañ",
|
||||||
"Chart": "Diervad",
|
"Chart": "Diervad",
|
||||||
@ -280,10 +306,11 @@
|
|||||||
"Scroll to the right": "Dibunañ d'an tu dehou",
|
"Scroll to the right": "Dibunañ d'an tu dehou",
|
||||||
"The best choice at this time is:": "Evit ar mare, an dibab gant ar muiañ a vouezhioù a zo:",
|
"The best choice at this time is:": "Evit ar mare, an dibab gant ar muiañ a vouezhioù a zo:",
|
||||||
"The bests choices at this time are:": "Evit ar mare, an dibaboù gant ar muiañ a vouezhioù a zo:",
|
"The bests choices at this time are:": "Evit ar mare, an dibaboù gant ar muiañ a vouezhioù a zo:",
|
||||||
"Vote ifneedbe for": "Vote under reserve for",
|
"Vote ifneedbe for": "Votes under reserve for",
|
||||||
"Vote no for": "Mouezhiañ « ket » evit",
|
"Vote no for": "Mouezhiañ « ket » evit",
|
||||||
"Vote yes for": "Mouezhiañ « ya » evit",
|
"Vote yes for": "Mouezhiañ « ya » evit",
|
||||||
"Votes of the poll": "Mouezhioù ar sontadeg",
|
"Votes of the poll": "Mouezhioù ar sontadeg",
|
||||||
|
"Warning : anyone can access to your email address after voting": "Warning: Anyone can see your email address after voting",
|
||||||
"polled user": "mouezhier",
|
"polled user": "mouezhier",
|
||||||
"polled users": "a vouezhierien"
|
"polled users": "a vouezhierien"
|
||||||
},
|
},
|
||||||
@ -295,6 +322,8 @@
|
|||||||
"Cancel the name edit": "Nullañ embann an anv",
|
"Cancel the name edit": "Nullañ embann an anv",
|
||||||
"Cancel the rules edit": "Nullañ embann an aotreoù",
|
"Cancel the rules edit": "Nullañ embann an aotreoù",
|
||||||
"Cancel the title edit": "Nullañ embann an titl",
|
"Cancel the title edit": "Nullañ embann an titl",
|
||||||
|
"Collect of the polled users email addresses": "Collec the polled users' email addresses",
|
||||||
|
"Collecting the polled users emails": "Collecting the polled users email addresses",
|
||||||
"Edit the description": "Embann an deskrivadur",
|
"Edit the description": "Embann an deskrivadur",
|
||||||
"Edit the email adress": "Embann ar chomlec'h postel",
|
"Edit the email adress": "Embann ar chomlec'h postel",
|
||||||
"Edit the expiration date": "Embann an deiziad diamzeriñ",
|
"Edit the expiration date": "Embann an deiziad diamzeriñ",
|
||||||
@ -305,6 +334,7 @@
|
|||||||
"Expiration date": "Deiziad diamzeriñ",
|
"Expiration date": "Deiziad diamzeriñ",
|
||||||
"Export to CSV": "Ezporzhiañ e CSV",
|
"Export to CSV": "Ezporzhiañ e CSV",
|
||||||
"Initiator of the poll": "Aozer ar sontadeg",
|
"Initiator of the poll": "Aozer ar sontadeg",
|
||||||
|
"No collect of the polled users email addresses": "The polled users' email addresses are not collected",
|
||||||
"No password": "Ger-tremen ebet",
|
"No password": "Ger-tremen ebet",
|
||||||
"Only votes are protected": "Only votes are protected",
|
"Only votes are protected": "Only votes are protected",
|
||||||
"Password protected": "Gwarezet gant ur ger-tremen",
|
"Password protected": "Gwarezet gant ur ger-tremen",
|
||||||
@ -326,12 +356,23 @@
|
|||||||
"Save the new title": "Enrollañ an titl nevez",
|
"Save the new title": "Enrollañ an titl nevez",
|
||||||
"Simple editor": "Embanner eeun",
|
"Simple editor": "Embanner eeun",
|
||||||
"Title": "Titl ar sontadeg",
|
"Title": "Titl ar sontadeg",
|
||||||
|
"Voters email adresses are collected": "Voters' email adresses are collected",
|
||||||
|
"Voters email adresses are collected and required": "Voters' email adresses are collected and required",
|
||||||
|
"Voters email adresses are collected, required and verified": "Voters' email adresses are collected, required and verified",
|
||||||
|
"Voters email adresses are not collected": "Voters' email adresses are not collected",
|
||||||
"Votes and comments are locked": "Prennet eo ar mouezhioù hag an evezhiadennoù",
|
"Votes and comments are locked": "Prennet eo ar mouezhioù hag an evezhiadennoù",
|
||||||
"Votes protected by password": "Gwarezet eo ar mouezhioù gant ur ger-tremen"
|
"Votes protected by password": "Gwarezet eo ar mouezhioù gant ur ger-tremen"
|
||||||
},
|
},
|
||||||
"Step 1": {
|
"Step 1": {
|
||||||
"All voters can modify any vote": "An holl vouezhierien a c'hall kemmañ an holl vouezhioù",
|
"All voters can modify any vote": "An holl vouezhierien a c'hall kemmañ an holl vouezhioù",
|
||||||
|
"Collect the polled users email addresses": "Collecting the polled users' email addresses",
|
||||||
|
"Collect users email": "Collect users' email addresses",
|
||||||
|
"Collect voters email": "Collect voters' email addresses",
|
||||||
"Customize the URL": "Personelaat an ere",
|
"Customize the URL": "Personelaat an ere",
|
||||||
|
"Email addresses are collected but not required": "Email addresses are collected but not required",
|
||||||
|
"Email addresses are not collected": "Email addresses are not collected",
|
||||||
|
"Email addresses are required": "Email addresses are required",
|
||||||
|
"Email addresses are required and verified": "Email addresses are required and verified",
|
||||||
"Go to step 2": "Mont d'ar bazenn 2",
|
"Go to step 2": "Mont d'ar bazenn 2",
|
||||||
"Limit the amount of voters per option": "Bevenniñ an niver a vouezhierien dre zibab",
|
"Limit the amount of voters per option": "Bevenniñ an niver a vouezhierien dre zibab",
|
||||||
"More informations here:": "Titouroù ouzhpenn amañ:",
|
"More informations here:": "Titouroù ouzhpenn amañ:",
|
||||||
@ -353,9 +394,11 @@
|
|||||||
"To receive an email for each new vote": "Degemer ur postel evit pep mouezh nevez",
|
"To receive an email for each new vote": "Degemer ur postel evit pep mouezh nevez",
|
||||||
"Use a password to restrict access": "Lakaat ur ger-tremen evit bevenniñ an haeziñ",
|
"Use a password to restrict access": "Lakaat ur ger-tremen evit bevenniñ an haeziñ",
|
||||||
"Value Max": "Talvoud uc'hek",
|
"Value Max": "Talvoud uc'hek",
|
||||||
"ValueMax instructions": "mouezhier dre zibab",
|
"ValueMax instructions": "votes per option",
|
||||||
"Voters can modify their vote themselves": "Pep mouezhier a c'hell kemmañ e vouezh",
|
"Voters can modify their vote themselves": "Pep mouezhier a c'hell kemmañ e vouezh",
|
||||||
"Votes cannot be modified": "N'hall ket ar mouezhioù bezañ kemmet",
|
"Votes cannot be modified": "N'hall ket ar mouezhioù bezañ kemmet",
|
||||||
|
"Warning : anyone can access to the polled users's email addresses.": "Warning: Anyone can see the polled users' email addresses.",
|
||||||
|
"Warning: anyone can access the polled users email addresses since all voters can modify any vote. You should restrict permission rules.": "Warning: Anyone can see the polled users' email addresses since all voters can modify any vote. You should restrict permission rules.",
|
||||||
"You are in the poll creation section.": "Dibabet ho peus krouiñ ur sontadeg nevez.",
|
"You are in the poll creation section.": "Dibabet ho peus krouiñ ur sontadeg nevez.",
|
||||||
"You can enable or disable the editor at will.": "Gallout a rit gweredekaat pe ziweredekaat an embanner diouzh ho tibab."
|
"You can enable or disable the editor at will.": "Gallout a rit gweredekaat pe ziweredekaat an embanner diouzh ho tibab."
|
||||||
},
|
},
|
||||||
@ -412,6 +455,8 @@
|
|||||||
"As poll administrator, you can change all the lines of this poll with this button": "Dre ma'z oc'h merour e c'hallit kemmañ holl linennoù ar sontadeg gant an afell-mañ",
|
"As poll administrator, you can change all the lines of this poll with this button": "Dre ma'z oc'h merour e c'hallit kemmañ holl linennoù ar sontadeg gant an afell-mañ",
|
||||||
"Back to the poll": "Distreiñ d'ar sontadeg",
|
"Back to the poll": "Distreiñ d'ar sontadeg",
|
||||||
"Choice added": "Dibab ouzhpennet",
|
"Choice added": "Dibab ouzhpennet",
|
||||||
|
"Collect the emails of the polled users for the choice": "Collect the emails of the polled users for the choice",
|
||||||
|
"Collect the emails of the polled users for this column": "Collect the email addresses of the polled users for this column",
|
||||||
"Column removed": "Bann dilamet",
|
"Column removed": "Bann dilamet",
|
||||||
"Column's adding": "Ouzhpennañ ur bann",
|
"Column's adding": "Ouzhpennañ ur bann",
|
||||||
"Comment deleted": "Dilamet eo bet an evezhiadenn",
|
"Comment deleted": "Dilamet eo bet an evezhiadenn",
|
||||||
@ -419,7 +464,7 @@
|
|||||||
"Confirm removal of all votes of the poll": "Kadarnaat dilemel holl vouezhioù ar sontadeg",
|
"Confirm removal of all votes of the poll": "Kadarnaat dilemel holl vouezhioù ar sontadeg",
|
||||||
"Confirm removal of the column.": "Kadarnaat dilemel ar bann.",
|
"Confirm removal of the column.": "Kadarnaat dilemel ar bann.",
|
||||||
"Confirm removal of the poll": "Kadarnaat dilemel ar sontadeg",
|
"Confirm removal of the poll": "Kadarnaat dilemel ar sontadeg",
|
||||||
"Delete the poll": "Dilemel ar sontadeg",
|
"Delete the poll": "Delete poll",
|
||||||
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Gallout a rit ivez kemmañ an titouroù a-zivout ar sontadeg evel an titl, an evezhiadennoù pe ho chomlec'h postel.",
|
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Gallout a rit ivez kemmañ an titouroù a-zivout ar sontadeg evel an titl, an evezhiadennoù pe ho chomlec'h postel.",
|
||||||
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Ma fell deoc'h ouzhpennañ un eur d'un deiziad a zo dioutañ endeo e c'hallit lakaat an hevelep deiziad ha dibab un eur all. Lakaet e vo er sontadeg.",
|
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Ma fell deoc'h ouzhpennañ un eur d'un deiziad a zo dioutañ endeo e c'hallit lakaat an hevelep deiziad ha dibab un eur all. Lakaet e vo er sontadeg.",
|
||||||
"Keep comments": "Mirout an evezhiadennoù",
|
"Keep comments": "Mirout an evezhiadennoù",
|
||||||
@ -442,6 +487,14 @@
|
|||||||
"and add a new column with": "ha m'ho peus disoñjet un dibab e c'hallit ouzhpennañ ur bann en ur glikañ war",
|
"and add a new column with": "ha m'ho peus disoñjet un dibab e c'hallit ouzhpennañ ur bann en ur glikañ war",
|
||||||
"remove a column or a line with": "dilemel ur bann pe ul linenn gant"
|
"remove a column or a line with": "dilemel ur bann pe ul linenn gant"
|
||||||
},
|
},
|
||||||
|
"display_mails": {
|
||||||
|
"People who have answered 'If need be' to this option have left those email addresses :": "Users who voted 'If need be' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'If need be' to this option have not left any email addresses.": "Users who voted 'If need be' for this option have not left any email addresses:",
|
||||||
|
"People who have answered 'No' to this option have left those email addresses :": "Users who voted 'No' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'No' to this option have not left any email addresses.": "Users who voted 'No' for this option have not left any email addresses.",
|
||||||
|
"People who have answered 'Yes' to this option have left those email addresses :": "Users who voted 'Yes' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'Yes' to this option have not left any email addresses.": "Users who voted 'Yes' for this option have not left any email addresses."
|
||||||
|
},
|
||||||
"studs": {
|
"studs": {
|
||||||
"Adding the vote succeeded": "Mouezh ouzhpennet",
|
"Adding the vote succeeded": "Mouezh ouzhpennet",
|
||||||
"Deletion date:": "Deiziad dilemel:",
|
"Deletion date:": "Deiziad dilemel:",
|
||||||
|
507
locale/ca.json
Normal file
507
locale/ca.json
Normal file
@ -0,0 +1,507 @@
|
|||||||
|
{
|
||||||
|
"1st section": {
|
||||||
|
"Define dates or subjects to choose": "Definir dates o temes per triar",
|
||||||
|
"Discuss and make a decision": "Discutir i prendre una decisió",
|
||||||
|
"Do you want to": "Vols",
|
||||||
|
"Framadate is an online service for planning an appointment or make a decision quickly and easily. No registration is required.": "Framadate és un servei en línia per planificar una cita o prendre una decisió de forma ràpida i senzilla. No cal registrar-se.",
|
||||||
|
"Here is how it works:": "Així és com funciona:",
|
||||||
|
"Make a poll": "Crea una enquesta",
|
||||||
|
"Send the poll link to your friends or colleagues": "Envia l'enllaç de l'enquesta als teus amics o col·legues",
|
||||||
|
"What is that?": "Què és Framadate?",
|
||||||
|
"view an example?": "veure un exemple?"
|
||||||
|
},
|
||||||
|
"2nd section": {
|
||||||
|
"CeCILL-B license": "Llicència CeCILL-B",
|
||||||
|
"Framadate was initially based on ": "Framadate es va basar inicialment en",
|
||||||
|
"It is governed by the": "Framadate està llicenciat sota la",
|
||||||
|
"The software": "El programari",
|
||||||
|
"This software needs javascript and cookies enabled. It is compatible with the following web browsers:": "Aquest programari necessita JavaScript i galetes habilitades. És compatible amb els següents navegadors web:",
|
||||||
|
"a software developed by the University of Strasbourg. Today, it is devevoped by the association Framasoft.": "programari desenvolupat per la Universitat d'Estrasburg. Actualment desenvolupat per l'associació Framasoft."
|
||||||
|
},
|
||||||
|
"3rd section": {
|
||||||
|
"Cultivate your garden": "Créixer el teu compte",
|
||||||
|
"If you want to install the software for your own use and thus increase your independence, we help you on:": "Si vols instal·lar el programari per al teu propi ús i, per tant, augmentar la teva independència, et podem ajudar a:",
|
||||||
|
"To participate in the software development, suggest improvements or simply download it, please visit ": "Per participar en el desenvolupament del programari, suggerir millores o simplement descarregar-lo, visita",
|
||||||
|
"the development site": "el lloc del desenvolupament"
|
||||||
|
},
|
||||||
|
"Admin": {
|
||||||
|
"Actions": "Accions",
|
||||||
|
"Administration": "Administració",
|
||||||
|
"Author": "Autor",
|
||||||
|
"Back to administration": "Tornar a l'administració",
|
||||||
|
"Change the poll": "Canvia l'enquesta",
|
||||||
|
"Confirm removal of the poll": "Confirma la supressió de l'enquesta",
|
||||||
|
"Deleted the poll": "Enquesta eliminada",
|
||||||
|
"Email": "Correu electrònic",
|
||||||
|
"Executed": "Executat",
|
||||||
|
"Expiration date": "Data de caducitat",
|
||||||
|
"Fail": "Suspens",
|
||||||
|
"Failed:": "Ha fallat:",
|
||||||
|
"Format": "Format de",
|
||||||
|
"Installation": "Instal·lació",
|
||||||
|
"Logs": "Registres",
|
||||||
|
"Migration": "Migració",
|
||||||
|
"Nothing": "Res",
|
||||||
|
"Pages:": "Pàgines:",
|
||||||
|
"Poll ID": "Enquesta ID",
|
||||||
|
"Polls": "Enquestes",
|
||||||
|
"Purge": "Purga",
|
||||||
|
"Purge the polls": "Purga les enquestes",
|
||||||
|
"Purged:": "Purgat:",
|
||||||
|
"See the poll": "Veure l'enquesta",
|
||||||
|
"Skipped:": "Omesos:",
|
||||||
|
"Status": "L'estat",
|
||||||
|
"Succeeded:": "Amb èxit",
|
||||||
|
"Success": "Èxit",
|
||||||
|
"Summary": "Resum",
|
||||||
|
"Title": "Títol",
|
||||||
|
"Votes": "Vots",
|
||||||
|
"Waiting": "Esperant",
|
||||||
|
"polls in the database at this time": "enquestes a la base de dades en aquest moment"
|
||||||
|
},
|
||||||
|
"Check": {
|
||||||
|
"Check again": "Comprova una altra vegada",
|
||||||
|
"Consider enabling the PHP extension OpenSSL for increased security.": "Per una major seguretat, considera habilitar l'extensió OpenSSL de PHP OpenSSL ",
|
||||||
|
"Consider setting the date.timezone in php.ini.": "Considera establir la date.timezone a php.ini.",
|
||||||
|
"Consider setting « session.cookie_httponly = 1 » inside your php.ini or add « php_value session.cookie_httponly 1 » to your .htaccess so that cookies can't be accessed through Javascript.": "Considera establir « session.cookie_httponly = 1 » a l'arxiu php.ini o afegeix « php_value session.cookie_httponly 1 » a l'arxiu .htaccess de forma que les galetes no siguin accessibles des de Javascript",
|
||||||
|
"Continue the installation": "Continuar la instal·lació",
|
||||||
|
"Cookies are served from HTTP only.": "Les galetes només es poden enviar des d'HTTP",
|
||||||
|
"Installation checking": "Comprovació de la instal·lació",
|
||||||
|
"OpenSSL extension loaded.": "Extensió OpenSSL carregada.",
|
||||||
|
"PHP Intl extension is enabled.": "L'extensió de PHP Intl està habilitada.",
|
||||||
|
"PHP version %s is enough (needed at least PHP %s).": "Versió %s PHP és suficient (almenys necessitava PHP %s).",
|
||||||
|
"The config file directory (%s) is not writable and the config file (%s) does not exists.": "El directori de fitxers de configuració (%s) no es pot escriure i el fitxer de configuració (%s) no existeix.",
|
||||||
|
"The config file directory (%s) is writable.": "El directori de fitxers de configuració (%s) es pot escriure.",
|
||||||
|
"The config file exists.": "Existeix el fitxer de configuració.",
|
||||||
|
"The template compile directory (%s) doesn't exist in \"%s\". Retry the installation process.": "El directori de compilació de plantilles (%s) no existeix al \"%s\". Torna a intentar el procés d'instal·lació.",
|
||||||
|
"The template compile directory (%s) is not writable.": "El directori de compilació de plantilla (%s) no es pot escriure.",
|
||||||
|
"The template compile directory (%s) is writable.": "El directori de compilació de la plantilla (%s) es pot escriure.",
|
||||||
|
"You need to enable the PHP Intl extension.": "Necessites habilitar l'extensió de PHP Intl.",
|
||||||
|
"Your PHP version (%s) is too old. This application needs at least PHP %s.": "La teva versió PHP (%s) és massa vella. Aquesta aplicació necessita almenys PHP %s.",
|
||||||
|
"date.timezone is set.": "date.timezone està establert."
|
||||||
|
},
|
||||||
|
"Comments": {
|
||||||
|
"Add a comment to the poll": "Afegeix un comentari a l'enquesta",
|
||||||
|
"Comment added": "S'ha desat el comentari",
|
||||||
|
"Comments of polled people": "Comentaris",
|
||||||
|
"Remove the comment": "Elimina el comentari",
|
||||||
|
"Send the comment": "Enviar Comentari",
|
||||||
|
"Type your name and a comment to send it": "Introdueix el teu nom i el comentari abans d'enviar el formulari",
|
||||||
|
"Your comment": "Comentari",
|
||||||
|
"anonyme": "Anònim"
|
||||||
|
},
|
||||||
|
"Date": {
|
||||||
|
"Add range dates": "Afegir rang",
|
||||||
|
"DATE": "%Y-%m-%d",
|
||||||
|
"DATETIME": "%m/%d/%Y %H:%M",
|
||||||
|
"DAY": "%a %e",
|
||||||
|
"End date": "Data final",
|
||||||
|
"FULL": "%A, %B %e, %Y",
|
||||||
|
"MONTH_YEAR": "%B %Y",
|
||||||
|
"Max dates count": "Pots seleccionar com a màxim 4 mesos",
|
||||||
|
"SHORT": "%A %e %B %Y",
|
||||||
|
"Start date": "Data d'inici",
|
||||||
|
"datepicker": "yyyy-mm-dd",
|
||||||
|
"datetime_parseformat": "Y-m-d",
|
||||||
|
"dd/mm/yyyy": "yyyy-mm-dd"
|
||||||
|
},
|
||||||
|
"EditLink": {
|
||||||
|
"Edit link for poll \"%s\"": "Edita l'enllaç de l'enquesta \"%s\"",
|
||||||
|
"Here is the link for editing your vote:": "Aquí tens l'enllaç per editar el vostre vot:",
|
||||||
|
"If you don't want to lose your personalized link, we can send it to your email.": "Si no vols perdre el teu enllaç personalitzat, te'l podem enviar per correu electrònic.",
|
||||||
|
"Please wait %d seconds before we can send an email to you then try again.": "Espera %d segons abans que et puguem enviar un correu electrònic i torna-ho a provar.",
|
||||||
|
"REMINDER": "RECORDATORI",
|
||||||
|
"Send": "Envia",
|
||||||
|
"The email address is not correct.": "L'adreça de correu electrònic no és correcta.",
|
||||||
|
"Your reminder has been successfully sent!": "El teu recordatori s'ha enviat amb èxit!"
|
||||||
|
},
|
||||||
|
"Error": {
|
||||||
|
"Adding vote failed": "S'ha produït un error en afegir el vot",
|
||||||
|
"CANT_CONNECT_TO_DATABASE": "No es pot connectar a la base de dades",
|
||||||
|
"Can't create an empty column.": "No es pot crear una columna buida.",
|
||||||
|
"Can't create the config.php file in '%s'.": "No es pot crear el fitxer config.php a '%s'.",
|
||||||
|
"Comment failed": "Error de comentari",
|
||||||
|
"Cookies are disabled on your browser. Theirs activation is required to create a poll.": "Les galetes estan desactivades al vostre navegador. Cal que estiguin activades per a crear una enquesta.",
|
||||||
|
"Enter a name": "Introdueix un nom",
|
||||||
|
"Enter a name and a comment!": "Introdueix un nom i un comentari.",
|
||||||
|
"Enter a title": "Introdueix un títol",
|
||||||
|
"Enter an email address": "Introdueix una adreça de correu electrònic",
|
||||||
|
"Error on amount of voters limitation : value must be an integer greater than 0": "Error en la limitació de la quantitat de vots: El valor ha de ser un enter més gran que 0",
|
||||||
|
"Error!": "Error!",
|
||||||
|
"Failed to delete all comments": "No s'han pogut eliminar tots els comentaris",
|
||||||
|
"Failed to delete all votes": "No s'han pogut eliminar tots els vots",
|
||||||
|
"Failed to delete column": "No s'ha pogut eliminar la columna",
|
||||||
|
"Failed to delete the comment": "No s'han pogut eliminar el comentari",
|
||||||
|
"Failed to delete the poll": "No s'ha pogut eliminar l'enquesta",
|
||||||
|
"Failed to delete the vote!": "No s'ha pogut eliminar el vot!",
|
||||||
|
"Failed to insert the comment!": "No s'ha pogut inserí el comentari",
|
||||||
|
"Failed to save poll": "No ha pogut desar l'enquesta",
|
||||||
|
"Forbidden!": "Prohibit!",
|
||||||
|
"Framadate is not properly installed, please check the \"INSTALL\" to setup the database before continuing.": "Framadate no està instal·lat correctament, si us plau, consulta el fitxer 'INSTALL' per obtenir instruccions sobre com configurar la base de dades abans de continuar.",
|
||||||
|
"Javascript is disabled on your browser. Its activation is required to create a poll.": "JavaScript està desactivat al vostre navegador. Cal activar-lo per a crear una enquesta.",
|
||||||
|
"MISSING_VALUES": "Valors que falten",
|
||||||
|
"No polls found": "No s'han trobat enquestes",
|
||||||
|
"Password is empty": "La contrasenya està buida.",
|
||||||
|
"Passwords do not match": "Les contrasenyes no coincideixen.",
|
||||||
|
"Poll has been updated before you vote": "L'enquesta s'ha actualitzat abans de votar",
|
||||||
|
"Poll id already used": "Ja s'utilitza l'identificador",
|
||||||
|
"Something is going wrong...": "Alguna cosa no ha anat bé...",
|
||||||
|
"Something is wrong with the format": "Alguna cosa està malament amb el format",
|
||||||
|
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Alguna cosa està malament amb el format: els URL personalitzats només han de consistir en caràcters alfanumèrics i guions.",
|
||||||
|
"Something is wrong with the format: name shouldn't have any spaces before or after": "Alguna cosa està malament amb el format: el nom no hauria de tenir cap espai abans o després",
|
||||||
|
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "L'adreça no és correcta. Has d'introduir una adreça de correu electrònic vàlida (com ara r.stallman@outlock.com) per rebre l'enllaç a la teva enquesta.",
|
||||||
|
"The column already exists": "La columna ja existeix",
|
||||||
|
"The name is invalid.": "El nom és invàlid.",
|
||||||
|
"The name you've chosen already exist in this poll!": "El nom que has introduït ja existeix!",
|
||||||
|
"There is a problem with your choices": "Hi ha un problema amb les teves eleccions",
|
||||||
|
"This id is not allowed": "Aquest identificador no està permès",
|
||||||
|
"This poll doesn't exist !": "Aquesta enquesta no existeix!",
|
||||||
|
"Update vote failed": "S'ha produït un error en afegir el vot",
|
||||||
|
"You already voted": "Ja has votat...",
|
||||||
|
"You can't create a poll with hidden results with the following edition option:": "No pots crear una enquesta amb resultats ocults amb la següent opció:",
|
||||||
|
"You can't select more than %d dates": "No pots seleccionar més que %d dates",
|
||||||
|
"You haven't filled the first section of the poll creation, or your session has expired.": "No has omplert la primera secció de la creació de l'enquesta, o la sessió ha expirat.",
|
||||||
|
"You haven't filled the first section of the poll creation.": "No has omplert la secció primera de l'enquesta.",
|
||||||
|
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "El teu vot no es tindrà en compte, perquè algú ha votat en el mateix moment i això entra en conflicte amb les teves opcions i les condicions de l'enquesta. Si us plau, torna a provar."
|
||||||
|
},
|
||||||
|
"FindPolls": {
|
||||||
|
"Address": "adreça",
|
||||||
|
"Created polls": "S'han creat les enquestes",
|
||||||
|
"Have a good day!": "Que tinguis un bon dia!",
|
||||||
|
"Here is the list of the polls that you manage on %s:": "Aquí tens la llista de les enquestes que gestioneu a%s:",
|
||||||
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Si no ets l'orígen d'aquesta acció i si creus que aquest és un abús del servei, notifica-ho a l'administrador a%s.",
|
||||||
|
"Last access date": "Última data d'accés",
|
||||||
|
"List of your polls": "Llista de les teves enquestes",
|
||||||
|
"Local Storage Help": "Per ajudar-te a trobar les teves enquestes anteriors, guardem cada enquesta que creeu o accediu al teu navegador. Aquestes dades només es guarden dins d'aquest navegador. Es guardaran les dades següents:",
|
||||||
|
"Local Storage Help Delete": "Per eliminar aquestes dades feu clic a la paperera a la línia corresponent o feu clic a l'opció «Eliminar els índexs d'enquestes». Això no suprimirà les enquestes.",
|
||||||
|
"Local Storage Help Information Accessed": "La data en què vas crear o vas accedir per darrer cop a l'enquesta",
|
||||||
|
"Local Storage Help Information Address": "És l'adreça",
|
||||||
|
"Local Storage Help Information Title": "El títol de l'enquesta",
|
||||||
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: aquest correu electrònic s'ha enviat perquè tu, o algú més, heu sol•licitat tornar les enquestes creades amb la vostra adreça de correu electrònic.",
|
||||||
|
"Polls saved inside this browser": "S'han desat les enquestes dins d'aquest navegador",
|
||||||
|
"Polls sent": "Enquestes enviades",
|
||||||
|
"Remove all polls from this browser": "Eliminar totes les meves enquestes de l'índex del aquest navegador",
|
||||||
|
"Remove poll from index": "Elimina l'enquesta de l'índex",
|
||||||
|
"Send me my polls": "Envia'm les enquestes",
|
||||||
|
"Send my polls by email": "Envia les meves enquestes per correu electrònic",
|
||||||
|
"There are no polls saved inside your browser yet": "Encara no hi ha enquestes desades al teu navegador",
|
||||||
|
"Title": "Títol",
|
||||||
|
"Visited polls": "Enquestes visites"
|
||||||
|
},
|
||||||
|
"Generic": {
|
||||||
|
"(in the format name@mail.com)": "(en format nom@mail.com)",
|
||||||
|
"ASTERISK": "*",
|
||||||
|
"Add": "Afegeix",
|
||||||
|
"Back": "Torna",
|
||||||
|
"Back to the homepage of": "Torna a la pàgina d'inici de",
|
||||||
|
"Cancel": "Cancel·lar",
|
||||||
|
"Caption": "Informació",
|
||||||
|
"Choice": "Elecció",
|
||||||
|
"Classic": "Clàssic",
|
||||||
|
"Close": "Tanca",
|
||||||
|
"Creation date:": "Data de creació:",
|
||||||
|
"Date": "Data",
|
||||||
|
"Day": "Dia",
|
||||||
|
"Description": "Descripció",
|
||||||
|
"Edit": "Edita",
|
||||||
|
"Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate és un servei en línia per planificar una cita o prendre una decisió de forma ràpida i senzilla.",
|
||||||
|
"Home": "Inici",
|
||||||
|
"Ifneedbe": "Sota reserva",
|
||||||
|
"Legend:": "Llegenda:",
|
||||||
|
"Link": "Enllaç",
|
||||||
|
"Make your polls": "Crea les teves pròpies enquestes",
|
||||||
|
"Markdown": "Markdown",
|
||||||
|
"Next": "Pròxim",
|
||||||
|
"No": "No",
|
||||||
|
"Page generated in": "Pàgina generada a",
|
||||||
|
"Poll": "Enquesta",
|
||||||
|
"Remove": "Elimina",
|
||||||
|
"Save": "Desa",
|
||||||
|
"Search": "Cerca",
|
||||||
|
"Time": "Temps",
|
||||||
|
"Validate": "Valida",
|
||||||
|
"Yes": "Sí",
|
||||||
|
"Your email address": "la teva adreça de correu electrònic",
|
||||||
|
"Your name": "El teu nom",
|
||||||
|
"days": "dies",
|
||||||
|
"for": "per a",
|
||||||
|
"months": "mesos",
|
||||||
|
"seconds": "segons",
|
||||||
|
"vote": "votar",
|
||||||
|
"votes": "vots",
|
||||||
|
"with": "amb"
|
||||||
|
},
|
||||||
|
"Homepage": {
|
||||||
|
"Make a classic poll": "Feu una enquesta estàndard",
|
||||||
|
"Schedule an event": "Programeu un esdeveniment",
|
||||||
|
"Where are my polls": "On són les meves enquestes?"
|
||||||
|
},
|
||||||
|
"Installation": {
|
||||||
|
"AppMail": "Adreça de correu d'administrador",
|
||||||
|
"AppName": "Nom de l'aplicació",
|
||||||
|
"CleanUrl": "Neteja URL",
|
||||||
|
"Database": "Nom de la base de dades",
|
||||||
|
"DbDriver": "Controlador de base de dades",
|
||||||
|
"DbHost": "Nom del servidor de base de dades",
|
||||||
|
"DbName": "Nom de la base de dades",
|
||||||
|
"DbPassword": "Contrasenya",
|
||||||
|
"DbPort": "Port de base de dades",
|
||||||
|
"DbPrefix": "Prefix",
|
||||||
|
"DbUser": "Usuari",
|
||||||
|
"DefaultLanguage": "Idioma per defecte",
|
||||||
|
"General": "General",
|
||||||
|
"Install": "Instal·lar",
|
||||||
|
"MigrationTable": "Taula de migració",
|
||||||
|
"ResponseMail": "Respon a l'adreça de correu"
|
||||||
|
},
|
||||||
|
"Language selector": {
|
||||||
|
"Change the language": "Canviar d'idioma",
|
||||||
|
"Select the language": "Escull l'idioma"
|
||||||
|
},
|
||||||
|
"Mail": {
|
||||||
|
"Author's message": "Missatge per a l'autor",
|
||||||
|
"FOOTER": "\"El camí és llarg, però el camí està clar ...\" <br/> Framasoft només viu de les vostres donacions. <br/> Gràcies per endavant pel vostre suport https://soutenir.framasoft.org",
|
||||||
|
"For sending to the polled users": "Enllaç del participant",
|
||||||
|
"Notification of poll: %s": "Notificació de l'enquesta: %s",
|
||||||
|
"Poll's participation: %s": "Participació en l'enquesta: %s",
|
||||||
|
"Someone just change your poll available at the following link %s.": "Algú ha canviat la teva enquesta al següent enllaç <a href=\"%1$s\">%1$s</a>.",
|
||||||
|
"Someone just delete your poll %s.": "Algú acaba d'eliminar la teva enquesta \"%s\".",
|
||||||
|
"Thanks for filling the poll at the link above": "Gràcies per participar a l'enquesta al següent enllaç",
|
||||||
|
"Thanks for your trust.": "Gràcies per la teva confiança.",
|
||||||
|
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Aquest és el missatge que es reenviarà als participants de l'enquesta.",
|
||||||
|
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Aquest missatge NO s'haurà d'enviar als participants de l'enquesta. Has de mantenir-lo privat. <br/> <br/> Pots modificar la teva enquesta al següent enllaç",
|
||||||
|
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Has canviat la configuració de la teva enquesta. <br/> Pots modificar aquesta enquesta amb aquest enllaç",
|
||||||
|
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRADOR] Nova configuració per a la teva enquesta",
|
||||||
|
"filled a vote.\nYou can find your poll at the link": "afegit un vot. <br/> Pots visitar la teva enquesta a l'enllaç",
|
||||||
|
"hast just created a poll called": "acaba de crear una enquesta anomenada",
|
||||||
|
"updated a vote.\nYou can find your poll at the link": "s'ha actualitzat una votació. <br/> Pots visitar la teva enquesta a l'enllaç",
|
||||||
|
"wrote a comment.\nYou can find your poll at the link": "s'ha escrit un comentari. <br/> Pots visitar la teva enquesta a l'enllaç"
|
||||||
|
},
|
||||||
|
"Maintenance": {
|
||||||
|
"Thank you for your understanding.": "Gràcies per la teva comprensió.",
|
||||||
|
"The application": "L'aplicació",
|
||||||
|
"is currently under maintenance.": "actualment està en manteniment"
|
||||||
|
},
|
||||||
|
"Password": {
|
||||||
|
"Password": "Contrasenya",
|
||||||
|
"Submit access": "Enviar accés",
|
||||||
|
"Wrong password": "Contrasenya ",
|
||||||
|
"You have to provide a password so you can participate to the poll.": "Has de proporcionar una contrasenya perquè puguis participar a l'enquesta.",
|
||||||
|
"You have to provide a password to access the poll.": "Has de proporcionar una contrasenya per accedir a l'enquesta."
|
||||||
|
},
|
||||||
|
"Poll results": {
|
||||||
|
"%s option": "%s opció",
|
||||||
|
"Addition": "Total",
|
||||||
|
"Anyone will be able to access your email address after your vote": "Qualsevol persona podrà veure la teva adreça de correu electrònic després de que hagis votat",
|
||||||
|
"Best choice": "Millor elecció",
|
||||||
|
"Best choices": "Millors eleccions",
|
||||||
|
"Chart": "Gràfic",
|
||||||
|
"Display the chart of the results": "Mostra el gràfic dels resultats",
|
||||||
|
"Edit the line: %s": "Edita la línia: %s",
|
||||||
|
"Link to edit this particular line": "Enllaça per editar aquesta línia en particular",
|
||||||
|
"Link to edit this particular line has been copied inside the clipboard!": "L'enllaç per editar aquesta línia en particular s'ha copiat al porta-retalls.",
|
||||||
|
"Remove the line:": "Suprimeix la línia:",
|
||||||
|
"Save the choices": "Desa les opcions",
|
||||||
|
"Scroll to the left": "Desplaça't cap a l'esquerra",
|
||||||
|
"Scroll to the right": "Desplaça't cap a la dreta",
|
||||||
|
"The best choice at this time is:": "La millor opció actual és:",
|
||||||
|
"The bests choices at this time are:": "Les millors opcions actuals són:",
|
||||||
|
"Vote ifneedbe for": "Vots sota reserva per a",
|
||||||
|
"Vote no for": "Vota \"no\" per a",
|
||||||
|
"Vote yes for": "Vota \"sí\" per a",
|
||||||
|
"Votes of the poll": "Vots",
|
||||||
|
"Warning : anyone can access to your email address after voting": "Compte: qualsevol pot accedir al teu correu electrònic després de vostar",
|
||||||
|
"polled user": "usuari enquestat",
|
||||||
|
"polled users": "usuaris enquestats"
|
||||||
|
},
|
||||||
|
"PollInfo": {
|
||||||
|
"Admin link of the poll": "Enllaç d'administració per a l'enquesta",
|
||||||
|
"Cancel the description edit": "Cancel·la l'edició de la descripció",
|
||||||
|
"Cancel the email address edit": "Cancel·la l'edició de l'adreça electrònica",
|
||||||
|
"Cancel the expiration date edit": "Cancel·la l'edició de la data de venciment",
|
||||||
|
"Cancel the name edit": "Cancel·la l'edició del nom",
|
||||||
|
"Cancel the rules edit": "Cancel·la l'edició de les regles",
|
||||||
|
"Cancel the title edit": "Cancel·la l'edició del títol",
|
||||||
|
"Collect of the polled users email addresses": "Recopilació de les adreces electròniques dels usuaris enquestats",
|
||||||
|
"Collecting the polled users emails": "Recopilació de les adreces electròniques dels usuaris enquestats",
|
||||||
|
"Edit the description": "Edita la descripció",
|
||||||
|
"Edit the email adress": "Edita l'adreça de correu electrònic",
|
||||||
|
"Edit the expiration date": "Edita la data de caducitat",
|
||||||
|
"Edit the name": "Edita el nom",
|
||||||
|
"Edit the poll rules": "Edita les regles d'enquesta",
|
||||||
|
"Edit the title": "Edita el títol",
|
||||||
|
"Email": "Correu electrònic",
|
||||||
|
"Expiration date": "Data de caducitat",
|
||||||
|
"Export to CSV": "Exporta a CSV",
|
||||||
|
"Initiator of the poll": "Creador de l'enquesta",
|
||||||
|
"No collect of the polled users email addresses": "No es recullen les adreces electròniques dels usuaris enquestats",
|
||||||
|
"No password": "Sense contrasenya",
|
||||||
|
"Only votes are protected": "Només els vots estan protegits",
|
||||||
|
"Password protected": "Contrasenya protegida",
|
||||||
|
"Poll rules": "Regles d'enquesta",
|
||||||
|
"Print": "Imprimir",
|
||||||
|
"Public link of the poll": "Enllaç públic a l'enquesta",
|
||||||
|
"Remove all the comments": "Elimina tots els comentaris",
|
||||||
|
"Remove all the votes": "Elimina tots els vots",
|
||||||
|
"Remove password": "Elimina la contrasenya",
|
||||||
|
"Remove the poll": "Elimina l'enquesta",
|
||||||
|
"Results are hidden": "Els resultats estan amagats",
|
||||||
|
"Results are visible": "Els resultats són visibles",
|
||||||
|
"Rich editor": "Editor enriquit",
|
||||||
|
"Save the description": "Desa la descripció",
|
||||||
|
"Save the email address": "Desa l'adreça de correu electrònic",
|
||||||
|
"Save the new expiration date": "Desa la nova data de venciment",
|
||||||
|
"Save the new name": "Desa el nom nou",
|
||||||
|
"Save the new rules": "Desa les noves regles",
|
||||||
|
"Save the new title": "Desa el títol nou",
|
||||||
|
"Simple editor": "Editor simple",
|
||||||
|
"Title": "Títol de l'enquesta",
|
||||||
|
"Voters email adresses are collected": "S'han recopilat les adreces de correu electrònic dels votants",
|
||||||
|
"Voters email adresses are collected and required": "S'han recopilat i requerit les adreces de correu electrònic dels votants",
|
||||||
|
"Voters email adresses are collected, required and verified": "S'han recopilat, requerit i verificat les adreces de correu electrònic dels votants",
|
||||||
|
"Voters email adresses are not collected": "No s'han recopilat les adreces de correu electrònic dels votants",
|
||||||
|
"Votes and comments are locked": "Els vots i els comentaris estan bloquejats",
|
||||||
|
"Votes protected by password": "Vots protegits per contrasenya"
|
||||||
|
},
|
||||||
|
"Step 1": {
|
||||||
|
"All voters can modify any vote": "Tots els votants poden modificar qualsevol vot",
|
||||||
|
"Collect the polled users email addresses": "Recopilació de les adreces de correu electrònic dels usuaris enquestats",
|
||||||
|
"Collect users email": "Recull les adreces de correu electrònic dels usuaris",
|
||||||
|
"Collect voters email": "Recull les adreces de correu electrònic dels votants",
|
||||||
|
"Customize the URL": "Personalitza l'URL",
|
||||||
|
"Email addresses are collected but not required": "Les adreces electròniques es recopilen però no es requereixen",
|
||||||
|
"Email addresses are not collected": "No s'han recopilat adreces de correu electrònic",
|
||||||
|
"Email addresses are required": "S'han requerit les adreces de correu electrònic",
|
||||||
|
"Email addresses are required and verified": "S'han requerit i verificat les adreces de correu electrònic",
|
||||||
|
"Go to step 2": "Ves al pas 2",
|
||||||
|
"Limit the amount of voters per option": "Limita la quantitat de votants per opció",
|
||||||
|
"More informations here:": "Més informació aquí:",
|
||||||
|
"Only the poll maker can see the poll's results": "Només el creador de l'enquesta pot veure els resultats de l'enquesta",
|
||||||
|
"Optional parameters": "Paràmetres opcionals",
|
||||||
|
"Password choice": "Elecció",
|
||||||
|
"Password confirmation": "Confirmació",
|
||||||
|
"Permissions": "Permisos",
|
||||||
|
"Poll creation (1 on 3)": "Creació d'enquestes (1 de 3)",
|
||||||
|
"Poll id": "Enllaç d'enquesta",
|
||||||
|
"Poll id rules": "L'identificador pot contenir lletres, números i guions \"-\".",
|
||||||
|
"Poll id warning": "Definint un identificador que podria facilitar l'accés a l'enquesta per a persones no desitjades. Es recomana protegir-lo amb una contrasenya.",
|
||||||
|
"Poll password": "Contrasenya",
|
||||||
|
"Poll title": "Títol de l'enquesta",
|
||||||
|
"Required fields cannot be left blank.": "Els camps obligatoris no es poden deixar en blanc.",
|
||||||
|
"The results are publicly visible": "Els resultats són públicament visibles",
|
||||||
|
"To make the description more attractive, you can use the Markdown format.": "Per fer que la descripció sigui més atractiva, pots utilitzar el format Markdown.",
|
||||||
|
"To receive an email for each new comment": "Reps un correu electrònic per a cada comentari nou",
|
||||||
|
"To receive an email for each new vote": "Reps un correu electrònic per a cada nou vot",
|
||||||
|
"Use a password to restrict access": "Utilitzeu una contrasenya per restringir l'accés",
|
||||||
|
"Value Max": "Valor màx",
|
||||||
|
"ValueMax instructions": "vots per opció",
|
||||||
|
"Voters can modify their vote themselves": "Els votants poden modificar el seu vot ells mateixos",
|
||||||
|
"Votes cannot be modified": "Els vots no es poden modificar",
|
||||||
|
"Warning : anyone can access to the polled users's email addresses.": "Advertència: Qualsevol pot veure les adreces de correu electrònic dels usuaris enquestats ",
|
||||||
|
"Warning: anyone can access the polled users email addresses since all voters can modify any vote. You should restrict permission rules.": "Advertència: Qualsevol pot veure les adreces de correu electrònic dels usuaris enquestats ja que tots els votants poden modificar qualsevol vot. Heu de restringir les regles de permís.",
|
||||||
|
"You are in the poll creation section.": "Sou a la secció de creació d'enquestes.",
|
||||||
|
"You can enable or disable the editor at will.": "Podeu habilitar o deshabilitar l'editor a voluntat."
|
||||||
|
},
|
||||||
|
"Step 2": {
|
||||||
|
"Back to step 1": "Torna al pas 1",
|
||||||
|
"Go to step 3": "Vés al pas 3"
|
||||||
|
},
|
||||||
|
"Step 2 classic": {
|
||||||
|
"Add a choice": "Afegir una elecció",
|
||||||
|
"Add a link or an image": "Afegiu un enllaç o una imatge",
|
||||||
|
"Alternative text": "Text alternatiu",
|
||||||
|
"It's possible to propose links or images by using": "Es poden incloure enllaços o imatges utilitzant",
|
||||||
|
"Poll subjects (2 on 3)": "Opcions de votació (2 de 3)",
|
||||||
|
"Remove a choice": "Elimina una elecció",
|
||||||
|
"These fields are optional. You can add a link, an image or both.": "Aquests camps són opcionals. Podeu afegir un enllaç, una imatge o ambdós.",
|
||||||
|
"To make a generic poll you need to propose at least two choices between differents subjects.": "Per crear una enquesta, heu de proporcionar almenys dues opcions diferents.",
|
||||||
|
"URL of the image": "URL de la imatge",
|
||||||
|
"You can add or remove additional choices with the buttons": "Pots afegir o eliminar opcions amb els botons",
|
||||||
|
"the Markdown syntax": "Sintaxi Markdown"
|
||||||
|
},
|
||||||
|
"Step 2 date": {
|
||||||
|
"Add a day": "Afegeix un dia",
|
||||||
|
"Add an hour": "Afegeix un espai horari",
|
||||||
|
"Choose the dates of your poll": "Tria dates per a la teva enquesta",
|
||||||
|
"Copy hours of the first day": "Copia els temps del primer dia",
|
||||||
|
"For each selected day, you can choose, or not, meeting hours (e.g.: \"8h\", \"8:30\", \"8h-10h\", \"evening\", etc.)": "Per cada dia seleccionat, pots suggerir temps de trobada (per exemple, \"8h\", \"8:30\", \"8h-10h\", \"tarda\", etc.).",
|
||||||
|
"Poll dates (2 on 3)": "Dates de l'enquesta (2 de 3)",
|
||||||
|
"Remove a day": "Treure un dia",
|
||||||
|
"Remove all days": "Treure tots els dies",
|
||||||
|
"Remove all hours": "Treure tots els temps",
|
||||||
|
"Remove an hour": "Treure un espai horari",
|
||||||
|
"Remove this day": "Treu aquest dia",
|
||||||
|
"To schedule an event you need to propose at least two choices (two hours for one day or two days).": "Per programar un esdeveniment, hauràs de proporcionar almenys dues opcions (per exemple, dos espais horaris en un o dos dies).",
|
||||||
|
"You can add or remove additionnal days and hours with the buttons": "Podeu afegir o treure dies i hores addicionals amb els botons"
|
||||||
|
},
|
||||||
|
"Step 3": {
|
||||||
|
"Archiving date:": "Data de caducitat:",
|
||||||
|
"Back to step 2": "Torna al pas 2",
|
||||||
|
"Confirm the creation of your poll": "Confirma la creació de la teva enquesta",
|
||||||
|
"Create the poll": "Crea l'enquesta",
|
||||||
|
"List of your choices": "Llista d'opcions",
|
||||||
|
"Once you have confirmed the creation of your poll, you will be automatically redirected on the administration page of your poll.": "Un cop hagis confirmat la creació de la teva enquesta, se't redirigirà automàticament a la pàgina d'administració de l'enquesta.",
|
||||||
|
"Removal date and confirmation (3 on 3)": "Data de supressió i confirmació (3 de 3)",
|
||||||
|
"Then, you will receive quickly two emails: one contening the link of your poll for sending it to the voters, the other contening the link to the administration page of your poll.": "A continuació, rebras dos correus electrònics: un que contindrà l'enllaç de la teva enquesta per enviar-la als participants i l'altre que contindrà l'enllaç a la pàgina d'administració de l'enquesta.",
|
||||||
|
"You can set a closer archiving date for it.": "Pots establir una data de caducitat específica de l'enquesta.",
|
||||||
|
"Your poll will automatically be archived": "La teva enquesta s'arxivarà automàticament",
|
||||||
|
"Your poll will be automatically archived in %d days.": "La teva enquesta s'arxivarà automàticament d'aquí a %d dies.",
|
||||||
|
"after the last date of your poll.": "després de l'última data de la teva enquesta."
|
||||||
|
},
|
||||||
|
"adminstuds": {
|
||||||
|
"Add a column": "Afegeix una columna",
|
||||||
|
"All comments deleted": "S'han suprimit tots els comentaris",
|
||||||
|
"All votes deleted": "Tots els vots suprimits",
|
||||||
|
"As poll administrator, you can change all the lines of this poll with this button": "Com a administrador, pots canviar totes les línies d'aquesta enquesta amb aquest botó",
|
||||||
|
"Back to the poll": "Torna a l'enquesta",
|
||||||
|
"Choice added": "Elecció afegida",
|
||||||
|
"Collect the emails of the polled users for the choice": "Recopila els correus electrònics dels usuaris enquestats per a l'elecció",
|
||||||
|
"Collect the emails of the polled users for this column": "Recopila els correus electrònics dels usuaris enquestats per aquesta columna",
|
||||||
|
"Column removed": "S'ha suprimit la columna",
|
||||||
|
"Column's adding": "Afegint una columna",
|
||||||
|
"Comment deleted": "Comentaris eliminats",
|
||||||
|
"Confirm removal of all comments of the poll": "Confirma l'eliminació de tots els comentaris",
|
||||||
|
"Confirm removal of all votes of the poll": "Confirma l'eliminació de tots els vots",
|
||||||
|
"Confirm removal of the column.": "Confirma l'eliminació de la columna.",
|
||||||
|
"Confirm removal of the poll": "Confirma l'eliminació de la vostra enquesta",
|
||||||
|
"Delete the poll": "Suprimeix l'enquesta",
|
||||||
|
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Finalment, pots canviar les propietats d'aquesta enquesta, com ara el títol, els comentaris o la teva adreça de correu electrònic.",
|
||||||
|
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Si només vols afegir un nou espai horari a una data existent, afegeix la data aquí i selecciona un nou espai horari.",
|
||||||
|
"Keep comments": "Mantenir comentaris",
|
||||||
|
"Keep the comments": "Conserva els comentaris",
|
||||||
|
"Keep the poll": "Conserva l'enquesta",
|
||||||
|
"Keep the votes": "Conserva els vots",
|
||||||
|
"Keep this poll": "Conserva aquesta enquesta",
|
||||||
|
"Keep votes": "Mantenir vots",
|
||||||
|
"Poll fully deleted": "Enquesta eliminada completament",
|
||||||
|
"Poll saved": "S'ha desat la votació",
|
||||||
|
"Remove the column": "Elimina la columna",
|
||||||
|
"Remove the comments": "Elimina els comentaris",
|
||||||
|
"Remove the votes": "Elimina els vots",
|
||||||
|
"The poll is created.": "S'ha creat l'enquesta.",
|
||||||
|
"Vote added": "Vot afegit",
|
||||||
|
"Vote deleted": "S'ha suprimit el vot",
|
||||||
|
"Vote updated": "Vot actualitzat",
|
||||||
|
"You can add a new scheduling date to your poll.": "Pots afegir una nova data de programació a la teva enquesta.",
|
||||||
|
"Your poll has been removed!": "S'ha eliminat la teva enquesta.",
|
||||||
|
"and add a new column with": "i afegeix una columna nova amb",
|
||||||
|
"remove a column or a line with": "treu una columna o una línia amb"
|
||||||
|
},
|
||||||
|
"display_mails": {
|
||||||
|
"People who have answered 'If need be' to this option have left those email addresses :": "Les persones que han respost 'Si és necessari' a aquesta opció, han deixat aquestes adreces de correu electrònic:",
|
||||||
|
"People who have answered 'If need be' to this option have not left any email addresses.": "Les persones que han respost 'Si és necessari' a aquesta opció, no han deixat cap adreça de correu electrònic.",
|
||||||
|
"People who have answered 'No' to this option have left those email addresses :": "Les persones que han respost 'No' a aquesta opció, han deixat aquestes adreces de correu electrònic:",
|
||||||
|
"People who have answered 'No' to this option have not left any email addresses.": "Les persones que han respost 'No' a aquesta opció, no han deixat cap adreça de correu electrònic.",
|
||||||
|
"People who have answered 'Yes' to this option have left those email addresses :": "Les persones que han respost 'Sí' a aquesta opció, han deixat aquestes adreces de correu electrònic:",
|
||||||
|
"People who have answered 'Yes' to this option have not left any email addresses.": "Les persones que han respost 'No' a aquesta opció, no han deixat cap adreça de correu electrònic."
|
||||||
|
},
|
||||||
|
"studs": {
|
||||||
|
"Adding the vote succeeded": "Vot afegit",
|
||||||
|
"Deletion date:": "Data de supressió:",
|
||||||
|
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "Si vols votar en aquesta enquesta, hauràs de donar el teu nom, fer la teva elecció i enviar-la seleccionant el botó de desar al final de la línia.",
|
||||||
|
"POLL_LOCKED_WARNING": "L'administrador va bloquejar aquesta enquesta. Els vots i els comentaris estan congelats, ja no és possible participar",
|
||||||
|
"The poll is expired, it will be deleted soon.": "L'enquesta ha caducat, aviat se suprimirà.",
|
||||||
|
"Update vote succeeded": "Vot actualitzat",
|
||||||
|
"Your vote has been registered successfully, but be careful: regarding this poll options, you need to keep this personal link to edit your own vote:": "El teu vot s'ha desat, però tingues en compte que has de conservar aquest enllaç personalitzat per poder-lo modificar."
|
||||||
|
}
|
||||||
|
}
|
161
locale/de.json
161
locale/de.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"1st section": {
|
"1st section": {
|
||||||
"Define dates or subjects to choose": "Zeitpunkte oder andere Alternativen zur Auswahl stellen",
|
"Define dates or subjects to choose": "Zeitpunkte oder andere Optionen zur Auswahl stellen",
|
||||||
"Discuss and make a decision": "Besprechen und Entscheidungen treffen",
|
"Discuss and make a decision": "Besprechen und Entscheidungen treffen",
|
||||||
"Do you want to": "Wollen Sie sich",
|
"Do you want to": "Wollen Sie sich",
|
||||||
"Framadate is an online service for planning an appointment or make a decision quickly and easily. No registration is required.": "Framadate ist ein Online-Dienst, der Ihnen bei der Absprache von Terminen oder der Entscheidungsfindung hilft. Es ist keine Registrierung erforderlich.",
|
"Framadate is an online service for planning an appointment or make a decision quickly and easily. No registration is required.": "Framadate ist ein Online-Dienst, der Ihnen bei der Absprache von Terminen oder der Entscheidungsfindung hilft. Es ist keine Registrierung erforderlich.",
|
||||||
@ -33,12 +33,13 @@
|
|||||||
"Confirm removal of the poll": "Bestätigen Sie die Löschung der Umfrage",
|
"Confirm removal of the poll": "Bestätigen Sie die Löschung der Umfrage",
|
||||||
"Deleted the poll": "Umfrage gelöscht",
|
"Deleted the poll": "Umfrage gelöscht",
|
||||||
"Email": "E-Mail-Adresse",
|
"Email": "E-Mail-Adresse",
|
||||||
|
"Executed": "Ausgeführt",
|
||||||
"Expiration date": "Verfallsdatum",
|
"Expiration date": "Verfallsdatum",
|
||||||
"Fail": "Gescheitert",
|
"Fail": "Fehler",
|
||||||
"Failed:": "Fehlgeschlagen:",
|
"Failed:": "Fehlgeschlagen:",
|
||||||
"Format": "Format",
|
"Format": "Format",
|
||||||
"Installation": "Installation",
|
"Installation": "Installation",
|
||||||
"Logs": "Verlauf",
|
"Logs": "Logs",
|
||||||
"Migration": "Migration",
|
"Migration": "Migration",
|
||||||
"Nothing": "Nichts",
|
"Nothing": "Nichts",
|
||||||
"Pages:": "Seiten:",
|
"Pages:": "Seiten:",
|
||||||
@ -49,11 +50,13 @@
|
|||||||
"Purged:": "Entfernt:",
|
"Purged:": "Entfernt:",
|
||||||
"See the poll": "Umfrage ansehen",
|
"See the poll": "Umfrage ansehen",
|
||||||
"Skipped:": "Übersprungene:",
|
"Skipped:": "Übersprungene:",
|
||||||
|
"Status": "Status",
|
||||||
"Succeeded:": "Erfolgreich:",
|
"Succeeded:": "Erfolgreich:",
|
||||||
"Success": "Erfolg",
|
"Success": "Erfolg",
|
||||||
"Summary": "Zusammenfassung",
|
"Summary": "Zusammenfassung",
|
||||||
"Title": "Titel",
|
"Title": "Titel",
|
||||||
"Votes": "Stimmen",
|
"Votes": "Stimmen",
|
||||||
|
"Waiting": "Wartend",
|
||||||
"polls in the database at this time": "Umfragen derzeit in der Datenbank"
|
"polls in the database at this time": "Umfragen derzeit in der Datenbank"
|
||||||
},
|
},
|
||||||
"Check": {
|
"Check": {
|
||||||
@ -83,6 +86,7 @@
|
|||||||
"Comments of polled people": "Kommentare der Teilnehmer",
|
"Comments of polled people": "Kommentare der Teilnehmer",
|
||||||
"Remove the comment": "Kommentar entfernen",
|
"Remove the comment": "Kommentar entfernen",
|
||||||
"Send the comment": "Kommentar abschicken",
|
"Send the comment": "Kommentar abschicken",
|
||||||
|
"Type your name and a comment to send it": "Geben Sie Ihren Namen und einen Kommentar ein bevor Sie das Formular abschicken",
|
||||||
"Your comment": "Ihr Kommentar",
|
"Your comment": "Ihr Kommentar",
|
||||||
"anonyme": "anonym"
|
"anonyme": "anonym"
|
||||||
},
|
},
|
||||||
@ -103,34 +107,34 @@
|
|||||||
},
|
},
|
||||||
"EditLink": {
|
"EditLink": {
|
||||||
"Edit link for poll \"%s\"": "Link für die Abstimmung \"%s\" bearbeiten",
|
"Edit link for poll \"%s\"": "Link für die Abstimmung \"%s\" bearbeiten",
|
||||||
"Here is the link for editing your vote:": "Hier ist der Link zum Ändern ihrer Wertung:",
|
"Here is the link for editing your vote:": "Hier ist der Link zum Ändern ihrer Stimme:",
|
||||||
"If you don't want to lose your personalized link, we can send it to your email.": "Wenn Sie ihren personalisierten Link nicht verlieren möchten, können wir ihn an Ihre E-Mail-Adresse senden.",
|
"If you don't want to lose your personalized link, we can send it to your email.": "Wenn Sie Ihren persönlichen Link nicht verlieren möchten, können wir Ihnen diesen per E-Mail zusenden.",
|
||||||
"Please wait %d seconds before we can send an email to you then try again.": "Bitte warten Sie %d Sekunden bis die E-Mail an Sie gesendet werden kann. Versuchen Sie es dann erneut.",
|
"Please wait %d seconds before we can send an email to you then try again.": "Bitte warten Sie %d Sekunden bis die E-Mail an Sie gesendet werden kann. Versuchen Sie es dann erneut.",
|
||||||
"REMINDER": "HINWEIS",
|
"REMINDER": "HINWEIS",
|
||||||
"Send": "Absenden",
|
"Send": "Absenden",
|
||||||
"The email address is not correct.": "Die E-Mail-Adresse ist fehlerhaft.",
|
"The email address is not correct.": "Die E-Mail-Adresse ist fehlerhaft.",
|
||||||
"Your reminder has been successfully sent!": "Ihre Erinnerungsnachricht wurde erfolgreich abgesendet."
|
"Your reminder has been successfully sent!": "Ihre Erinnerungsnachricht wurde erfolgreich abgesendet!"
|
||||||
},
|
},
|
||||||
"Error": {
|
"Error": {
|
||||||
"Adding vote failed": "Stimmabgabe fehlgeschlagen",
|
"Adding vote failed": "Stimmabgabe fehlgeschlagen",
|
||||||
"CANT_CONNECT_TO_DATABASE": "Kann nicht mit der Datenbank verbinden",
|
"CANT_CONNECT_TO_DATABASE": "Datenbankverbindung fehlgeschlagen",
|
||||||
"Can't create an empty column.": "Kann keine leere Spalte anlegen.",
|
"Can't create an empty column.": "Es kann keine leere Spalte angelegt werden.",
|
||||||
"Can't create the config.php file in '%s'.": "Kann die config.php nicht in '%s' angelegen.",
|
"Can't create the config.php file in '%s'.": "Die config.php kann nicht in '%s' angelegt werden.",
|
||||||
"Comment failed": "Abgabe des Kommentars gescheitert",
|
"Comment failed": "Abgabe des Kommentars gescheitert",
|
||||||
"Cookies are disabled on your browser. Theirs activation is required to create a poll.": "Cookies werden von Ihrem Browser abgelehnt. Um eine Umfrage zu erstellen, müssen Sie Cookies zulassen.",
|
"Cookies are disabled on your browser. Theirs activation is required to create a poll.": "Cookies werden von Ihrem Browser abgelehnt. Um eine Umfrage zu erstellen, müssen Sie Cookies zulassen.",
|
||||||
"Enter a name": "Geben Sie einen Namen ein",
|
"Enter a name": "Geben Sie einen Namen ein",
|
||||||
"Enter a name and a comment!": "Geben Sie einen Namen und einen Kommentar ein!",
|
"Enter a name and a comment!": "Geben Sie einen Namen und einen Kommentar ein!",
|
||||||
"Enter a title": "Titel eingeben",
|
"Enter a title": "Titel eingeben",
|
||||||
"Enter an email address": "Geben Sie eine E-Mail Adresse ein",
|
"Enter an email address": "Geben Sie eine E-Mail Adresse ein",
|
||||||
"Error on amount of voters limitation : value must be an integer greater than 0": "Fehler bei der Beschränkung der Anzahl der Wähler: Der Wert muss größer als 0 sein",
|
"Error on amount of voters limitation : value must be an integer greater than 0": "Fehler bei der Beschränkung der Anzahl der Stimmen: Der Wert muss größer als 0 sein",
|
||||||
"Error!": "Fehler!",
|
"Error!": "Fehler!",
|
||||||
"Failed to delete all comments": "Es konnten nicht alle Kommentare gelöscht werden",
|
"Failed to delete all comments": "Es konnten nicht alle Kommentare gelöscht werden",
|
||||||
"Failed to delete all votes": "Es konnten nicht alle Stimmen gelöscht werden",
|
"Failed to delete all votes": "Es konnten nicht alle Stimmen gelöscht werden",
|
||||||
"Failed to delete column": "Löschen der Spalte fehlgeschlagen",
|
"Failed to delete column": "Löschen der Spalte fehlgeschlagen",
|
||||||
"Failed to delete the comment": "Der Kommentar konnte nicht gelöscht werden",
|
"Failed to delete the comment": "Der Kommentar konnte nicht gelöscht werden",
|
||||||
"Failed to delete the poll": "Die Umfrage konnte nicht gelöscht werden",
|
"Failed to delete the poll": "Die Umfrage konnte nicht gelöscht werden",
|
||||||
"Failed to delete the vote!": "Löschen der Wertung gescheitert!",
|
"Failed to delete the vote!": "Löschen der Stimme gescheitert!",
|
||||||
"Failed to insert the comment!": "Einfügen des Kommentars gescheitert!",
|
"Failed to insert the comment!": "Speichern des Kommentars gescheitert!",
|
||||||
"Failed to save poll": "Speichern der Umfrage fehlgeschlagen",
|
"Failed to save poll": "Speichern der Umfrage fehlgeschlagen",
|
||||||
"Forbidden!": "Verboten!",
|
"Forbidden!": "Verboten!",
|
||||||
"Framadate is not properly installed, please check the \"INSTALL\" to setup the database before continuing.": "Framadate ist nicht richtig installiert. Bevor Sie fortfahren, beachten Sie bitte die Angaben zum Aufsetzen der Datenbank in der Datei \"INSTALL\".",
|
"Framadate is not properly installed, please check the \"INSTALL\" to setup the database before continuing.": "Framadate ist nicht richtig installiert. Bevor Sie fortfahren, beachten Sie bitte die Angaben zum Aufsetzen der Datenbank in der Datei \"INSTALL\".",
|
||||||
@ -143,29 +147,46 @@
|
|||||||
"Poll id already used": "Der Bezeichner ist bereits in Verwendung",
|
"Poll id already used": "Der Bezeichner ist bereits in Verwendung",
|
||||||
"Something is going wrong...": "Etwas ging schief ...",
|
"Something is going wrong...": "Etwas ging schief ...",
|
||||||
"Something is wrong with the format": "Mit dem Format stimmt etwas nicht",
|
"Something is wrong with the format": "Mit dem Format stimmt etwas nicht",
|
||||||
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Etwas ist falsch mit dem Format: Individuelle URLs dürfen nur aus alphanumerischen Zeichen und Bindestrichen bestehen.",
|
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Etwas stimmt mit dem Format nicht: Individuelle URLs dürfen nur aus alphanumerischen Zeichen und Bindestrichen bestehen.",
|
||||||
"Something is wrong with the format: name shouldn't have any spaces before or after": "Etwas ist falsch mit dem Format: Es sollte kein Leerzeichen vor oder nach dem Namen stehen.",
|
"Something is wrong with the format: name shouldn't have any spaces before or after": "Etwas ist falsch mit dem Format: Es darf kein Leerzeichen vor oder nach dem Namen stehen.",
|
||||||
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "Die Adresse ist nicht korrekt! Sie sollten eine gültige E-Mail-Adresse angeben, damit Ihnen der Link zur Umfrage zugeschickt werden kann.",
|
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "Die Adresse ist nicht korrekt! Sie sollten eine gültige E-Mail-Adresse angeben, damit Ihnen der Link zur Umfrage zugeschickt werden kann.",
|
||||||
"The column already exists": "Die Spalte existiert bereits",
|
"The column already exists": "Die Spalte existiert bereits",
|
||||||
"The name is invalid.": "Der Name ist ungültig.",
|
"The name is invalid.": "Der Name ist ungültig.",
|
||||||
"The name you've chosen already exist in this poll!": "Der von Ihnen eingegebene Name existiert schon in dieser Umfrage!",
|
"The name you've chosen already exist in this poll!": "Der von Ihnen eingegebene Name existiert schon in dieser Umfrage!",
|
||||||
"There is a problem with your choices": "Es gibt ein Problem mit Ihrer Auswahl",
|
"There is a problem with your choices": "Es gibt ein Problem mit Ihrer Auswahl",
|
||||||
|
"This id is not allowed": "Dieser Bezeichner ist nicht erlaubt",
|
||||||
"This poll doesn't exist !": "Diese Umfrage existiert nicht!",
|
"This poll doesn't exist !": "Diese Umfrage existiert nicht!",
|
||||||
"Update vote failed": "Aktualisierung der Stimme fehlgeschlagen",
|
"Update vote failed": "Aktualisierung der Stimme fehlgeschlagen",
|
||||||
"You already voted": "Sie haben bereits abgestimmt",
|
"You already voted": "Sie haben bereits abgestimmt",
|
||||||
"You can't create a poll with hidden results with the following edition option:": "Sie können mit der folgenden Editier-Option keine Umfrage mit versteckten Ergebnissen erzeugen:",
|
"You can't create a poll with hidden results with the following edition option:": "Sie können mit den folgenden Optionen keine Umfrage mit versteckten Ergebnissen erzeugen:",
|
||||||
"You can't select more than %d dates": "Es können nicht mehr als %d Termine ausgewählt werden",
|
"You can't select more than %d dates": "Es können nicht mehr als %d Termine ausgewählt werden",
|
||||||
|
"You haven't filled the first section of the poll creation, or your session has expired.": "Sie haben den ersten Teil der Umfrageerstellung nicht ausgefüllt oder Ihre Session ist abgelaufen.",
|
||||||
"You haven't filled the first section of the poll creation.": "Sie haben den ersten Teil der Umfrageerstellung nicht ausgefüllt.",
|
"You haven't filled the first section of the poll creation.": "Sie haben den ersten Teil der Umfrageerstellung nicht ausgefüllt.",
|
||||||
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Ihre Stimme wurde nicht gezählt, da jemand in der Zwischenzeit gewählt hat und dies mit Ihrer Abstimmung und den Umfrage-Bestimmungen in Konflikt stand. Bitte versuchen Sie es erneut."
|
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Ihre Stimme wurde nicht gezählt, da jemand in der Zwischenzeit gewählt hat und dies mit Ihrer Abstimmung und den Umfrage-Bestimmungen in Konflikt stand. Bitte versuchen Sie es erneut."
|
||||||
},
|
},
|
||||||
"FindPolls": {
|
"FindPolls": {
|
||||||
|
"Address": "Adresse",
|
||||||
|
"Created polls": "Erstellte Umfragen",
|
||||||
"Have a good day!": "Einen schönen Tag noch!",
|
"Have a good day!": "Einen schönen Tag noch!",
|
||||||
"Here is the list of the polls that you manage on %s:": "Hier ist die Liste der Umfragen die Sie auf %s verwalten:",
|
"Here is the list of the polls that you manage on %s:": "Hier ist die Liste der Umfragen, die Sie auf %s verwalten:",
|
||||||
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Wenn Sie diesen Vorgang nicht veranlasst haben und glauben, dass dieser Dienst missbraucht wurde, benachrichtigen Sie bitte den Administrator auf %s.",
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Wenn Sie diesen Vorgang nicht veranlasst haben und glauben, dass dieser Dienst missbraucht wurde, benachrichtigen Sie bitte den Administrator unter %s.",
|
||||||
|
"Last access date": "Letzter Zugriff",
|
||||||
"List of your polls": "Liste Ihrer Umfragen",
|
"List of your polls": "Liste Ihrer Umfragen",
|
||||||
|
"Local Storage Help": "Um Ihre bisherigen Umfragen leichter zu finden, speichern wir jede Umfrage, die Sie erstellt oder die Sie aufgerufen haben, in Ihrem Browser. Die folgenden Daten werden dabei gespeichert:",
|
||||||
|
"Local Storage Help Delete": "Um diese Daten zu löschen klicken Sie auf den Mülleimer in der entsprechenden Zeile oder klicken Sie auf « Umfrage vom Index entfernen ». Ihre Umfragen selbst werden dabei nicht gelöscht.",
|
||||||
|
"Local Storage Help Information Accessed": "Das Datum, an dem Sie die Umfrage erstellt oder auf sie zugegriffen haben",
|
||||||
|
"Local Storage Help Information Address": "Ihre Adresse",
|
||||||
|
"Local Storage Help Information Title": "Der Titel der Umfrage",
|
||||||
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: Diese E-Mail wurde abgeschickt weil Sie – oder jemand anderes – Zugriff auf die mit Ihrer E-Mail-Adresse angelegten Umfragen angefordert hat.",
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: Diese E-Mail wurde abgeschickt weil Sie – oder jemand anderes – Zugriff auf die mit Ihrer E-Mail-Adresse angelegten Umfragen angefordert hat.",
|
||||||
|
"Polls saved inside this browser": "Umfragen, die in diesem Browser gespeichert sind",
|
||||||
"Polls sent": "Umfragen abgeschickt",
|
"Polls sent": "Umfragen abgeschickt",
|
||||||
"Send me my polls": "Senden Sie mir meine Umfragen"
|
"Remove all polls from this browser": "Alle Umfragen aus dem Index dieses Browsers entfernen",
|
||||||
|
"Remove poll from index": "Umfrage vom Index entfernen",
|
||||||
|
"Send me my polls": "Senden Sie mir meine Umfragen",
|
||||||
|
"Send my polls by email": "Schicken Sie mir meine Umfragen per E-Mail",
|
||||||
|
"There are no polls saved inside your browser yet": "In Ihrem Browser wurden bisher noch keine Umfragen gespeichert",
|
||||||
|
"Title": "Titel",
|
||||||
|
"Visited polls": "Aufgerufene Umfragen"
|
||||||
},
|
},
|
||||||
"Generic": {
|
"Generic": {
|
||||||
"(in the format name@mail.com)": "(Format: name@mail.com)",
|
"(in the format name@mail.com)": "(Format: name@mail.com)",
|
||||||
@ -174,7 +195,7 @@
|
|||||||
"Back": "Zurück",
|
"Back": "Zurück",
|
||||||
"Back to the homepage of": "Zurück zur Startseite von ",
|
"Back to the homepage of": "Zurück zur Startseite von ",
|
||||||
"Cancel": "Abbrechen",
|
"Cancel": "Abbrechen",
|
||||||
"Caption": "Bildunterschrift",
|
"Caption": "Information",
|
||||||
"Choice": "Wahl",
|
"Choice": "Wahl",
|
||||||
"Classic": "Klassiker",
|
"Classic": "Klassiker",
|
||||||
"Close": "Schließen",
|
"Close": "Schließen",
|
||||||
@ -219,15 +240,18 @@
|
|||||||
"AppMail": "E-Mail-Adresse der Anwendung/des Datenbankadministrators",
|
"AppMail": "E-Mail-Adresse der Anwendung/des Datenbankadministrators",
|
||||||
"AppName": "Name der Anwendung",
|
"AppName": "Name der Anwendung",
|
||||||
"CleanUrl": "Säubere URLs (boolean)",
|
"CleanUrl": "Säubere URLs (boolean)",
|
||||||
"Database": "Datenbank",
|
"Database": "Datenbankname",
|
||||||
"DbConnectionString": "Name des Datenbankservers (leer lassen um eine lokale Socket-Verbindung zu nutzen)",
|
"DbDriver": "Datenbanktreiber",
|
||||||
|
"DbHost": "Datenbank-Hostname",
|
||||||
|
"DbName": "Datenbankname",
|
||||||
"DbPassword": "Datenbank-Passwort",
|
"DbPassword": "Datenbank-Passwort",
|
||||||
|
"DbPort": "Datenbank-Port",
|
||||||
"DbPrefix": "Tabellen-Präfix",
|
"DbPrefix": "Tabellen-Präfix",
|
||||||
"DbUser": "Datenbank-Nutzername",
|
"DbUser": "Datenbank-Benutzername",
|
||||||
"DefaultLanguage": "Standardsprache",
|
"DefaultLanguage": "Standardsprache",
|
||||||
"General": "Allgemeine Konfiguration",
|
"General": "Allgemeine Konfiguration",
|
||||||
"Install": "Installieren",
|
"Install": "Installieren",
|
||||||
"MigrationTable": "Name der Tabelle welche den Migrationsstatus speichert",
|
"MigrationTable": "Name der Tabelle, welche den Migrationsstatus speichert",
|
||||||
"ResponseMail": "E-Mail-Adresse für automatische Antworten (sollte auf \"no-reply\" gesetzt werden)"
|
"ResponseMail": "E-Mail-Adresse für automatische Antworten (sollte auf \"no-reply\" gesetzt werden)"
|
||||||
},
|
},
|
||||||
"Language selector": {
|
"Language selector": {
|
||||||
@ -235,22 +259,22 @@
|
|||||||
"Select the language": "Sprache wählen"
|
"Select the language": "Sprache wählen"
|
||||||
},
|
},
|
||||||
"Mail": {
|
"Mail": {
|
||||||
"Author's message": "Nachricht vom Autor ",
|
"Author's message": "Nachricht für den Autor",
|
||||||
"FOOTER": "„Die Strecke ist lang, aber der Weg ist frei… \"<br/>Framasoft besteht nur durch Ihre Spenden (in Frankreich von der Steuer absetzbar).<br/>Herzlichen Dank für Ihre Unterstützung https://soutenir.framasoft.org",
|
"FOOTER": "„Die Strecke ist lang, aber der Weg ist frei… \"<br/>Framasoft besteht nur durch Ihre Spenden (in Frankreich von der Steuer absetzbar).<br/>Herzlichen Dank für Ihre Unterstützung! https://soutenir.framasoft.org",
|
||||||
"For sending to the polled users": "Nachricht für die Teilnehmer",
|
"For sending to the polled users": "Nachricht für die Teilnehmer",
|
||||||
"Notification of poll: %s": "Mitteilung bezüglich der Umfrage: %s",
|
"Notification of poll: %s": "Mitteilung bezüglich der Umfrage: %s",
|
||||||
"Poll's participation: %s": "Beteiligung an der Umfrage: %s",
|
"Poll's participation: %s": "Beteiligung an der Umfrage: %s",
|
||||||
"Someone just change your poll available at the following link %s.": "Jemand hat gerade Ihre Umfrage auf <a href=\"%1$s\">%1$s</a> geändert.",
|
"Someone just change your poll available at the following link %s.": "Jemand hat gerade Ihre Umfrage auf <a href=\"%1$s\">%1$s</a> geändert.",
|
||||||
"Someone just delete your poll %s.": "Jemand hat gerade Ihre Umfrage auf %s gelöscht.",
|
"Someone just delete your poll %s.": "Jemand hat gerade Ihre Umfrage \"%s\" gelöscht.",
|
||||||
"Thanks for filling the poll at the link above": "Danke, dass Sie die Umfrage unter dem obigen Link ausgefüllt haben",
|
"Thanks for filling the poll at the link above": "Danke, dass Sie an der Umfrage unter folgendem Link teilnehmen",
|
||||||
"Thanks for your trust.": "Danke für Ihr Vertrauen.",
|
"Thanks for your trust.": "Danke für Ihr Vertrauen.",
|
||||||
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Dies ist die Nachricht an die Umfrageteilnehmer.",
|
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Dies ist die Nachricht an die Umfrageteilnehmer.",
|
||||||
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Diese Meldung sollte NICHT an die befragten Personen gesendet werden. Sie sollten sie für sich behalten. <br/><br/>Sie können Ihre Umfrage über den oben genannten Link abändern",
|
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Diese Meldung sollte NICHT an die befragten Personen gesendet werden. Sie sollten sie für sich behalten. <br/><br/>Sie können Ihre Umfrage über den folgenden Link abändern",
|
||||||
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Sie haben die Einstellungen Ihrer Umfrage verändert.<br/>Sie können diese Umfrage über diesen Link ändern",
|
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Sie haben die Einstellungen Ihrer Umfrage verändert.<br/>Sie können diese Umfrage über diesen Link ändern",
|
||||||
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] Neue Einstellungen für Ihre Umfrage ",
|
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] Neue Einstellungen für Ihre Umfrage ",
|
||||||
"filled a vote.\nYou can find your poll at the link": "hat abgestimmt.<br/>Sie finden Ihre Umfrage über den Link",
|
"filled a vote.\nYou can find your poll at the link": "hat abgestimmt.<br/>Sie finden Ihre Umfrage über den Link",
|
||||||
"hast just created a poll called": " hat gerade eine Umfrage erstellt. Sie trägt den Titel",
|
"hast just created a poll called": " hat gerade eine Umfrage erstellt. Sie trägt den Titel",
|
||||||
"updated a vote.\nYou can find your poll at the link": "hat eine Wertung aktualisiert.<br/>Sie finden Ihre Umfrage über den Link",
|
"updated a vote.\nYou can find your poll at the link": "hat eine Stimme aktualisiert.<br/>Sie finden Ihre Umfrage über den Link",
|
||||||
"wrote a comment.\nYou can find your poll at the link": "hat einen Kommentar geschrieben.<br/>Sie finden Ihre Umfrage über den Link"
|
"wrote a comment.\nYou can find your poll at the link": "hat einen Kommentar geschrieben.<br/>Sie finden Ihre Umfrage über den Link"
|
||||||
},
|
},
|
||||||
"Maintenance": {
|
"Maintenance": {
|
||||||
@ -266,7 +290,9 @@
|
|||||||
"You have to provide a password to access the poll.": "Sie müssen ein Passwort eingeben um auf die Abstimmung zuzugreifen."
|
"You have to provide a password to access the poll.": "Sie müssen ein Passwort eingeben um auf die Abstimmung zuzugreifen."
|
||||||
},
|
},
|
||||||
"Poll results": {
|
"Poll results": {
|
||||||
"Addition": "Hinzufügen",
|
"%s option": "%s Option",
|
||||||
|
"Addition": "Insgesamt",
|
||||||
|
"Anyone will be able to access your email address after your vote": "Jeder wird Ihre E-Mail-Adresse sehen können nachdem Sie abgestimmt haben",
|
||||||
"Best choice": "Beste Alternative",
|
"Best choice": "Beste Alternative",
|
||||||
"Best choices": "Beste Alternativen",
|
"Best choices": "Beste Alternativen",
|
||||||
"Chart": "Grafik",
|
"Chart": "Grafik",
|
||||||
@ -284,6 +310,7 @@
|
|||||||
"Vote no for": "Nein-Stimmen für",
|
"Vote no for": "Nein-Stimmen für",
|
||||||
"Vote yes for": "Ja-Stimmen für",
|
"Vote yes for": "Ja-Stimmen für",
|
||||||
"Votes of the poll": "Stimmabgaben zur Umfrage",
|
"Votes of the poll": "Stimmabgaben zur Umfrage",
|
||||||
|
"Warning : anyone can access to your email address after voting": "Achtung: Jeder kann nach der Stimmabgabe Ihre E-Mail-Adresse einsehen ",
|
||||||
"polled user": "Stimme",
|
"polled user": "Stimme",
|
||||||
"polled users": "Stimmen"
|
"polled users": "Stimmen"
|
||||||
},
|
},
|
||||||
@ -295,18 +322,21 @@
|
|||||||
"Cancel the name edit": "Abbruch, Namen nicht ändern",
|
"Cancel the name edit": "Abbruch, Namen nicht ändern",
|
||||||
"Cancel the rules edit": "Abbruch, Regeln nicht ändern",
|
"Cancel the rules edit": "Abbruch, Regeln nicht ändern",
|
||||||
"Cancel the title edit": "Abbruch, Titel nicht ändern",
|
"Cancel the title edit": "Abbruch, Titel nicht ändern",
|
||||||
|
"Collect of the polled users email addresses": "Sammeln der E-Mail-Adressen der zur Umfrage eingeladenen Benutzer",
|
||||||
|
"Collecting the polled users emails": "Sammeln der E-Mail-Adressen der zur Umfrage eingeladenen Benutzer",
|
||||||
"Edit the description": "Beschreibung bearbeiten",
|
"Edit the description": "Beschreibung bearbeiten",
|
||||||
"Edit the email adress": "E-Mail-Adresse ändern",
|
"Edit the email adress": "E-Mail-Adresse ändern",
|
||||||
"Edit the expiration date": "Bearbeiten Sie das Ablaufdatum",
|
"Edit the expiration date": "Das Ablaufdatum bearbeiten",
|
||||||
"Edit the name": "Bearbeiten Sie den Namen",
|
"Edit the name": "Den Namen bearbeiten",
|
||||||
"Edit the poll rules": "Regeln der Umfrage bearbeiten",
|
"Edit the poll rules": "Regeln der Umfrage bearbeiten",
|
||||||
"Edit the title": "Titel bearbeiten",
|
"Edit the title": "Titel bearbeiten",
|
||||||
"Email": "E-Mail-Adresse",
|
"Email": "E-Mail-Adresse",
|
||||||
"Expiration date": "Ablaufdatum",
|
"Expiration date": "Ablaufdatum",
|
||||||
"Export to CSV": "CSV-Export",
|
"Export to CSV": "CSV-Export",
|
||||||
"Initiator of the poll": "Autor der Umfrage",
|
"Initiator of the poll": "Autor der Umfrage",
|
||||||
|
"No collect of the polled users email addresses": "Kein Sammeln der E-Mail-Adressen der zur Umfrage eingeladenen Benutzer",
|
||||||
"No password": "Kein Passwort",
|
"No password": "Kein Passwort",
|
||||||
"Only votes are protected": "Only votes are protected",
|
"Only votes are protected": "Nur Abstimmungen sind geschützt",
|
||||||
"Password protected": "Passwortgeschützt",
|
"Password protected": "Passwortgeschützt",
|
||||||
"Poll rules": "Regeln der Umfrage",
|
"Poll rules": "Regeln der Umfrage",
|
||||||
"Print": "Drucken",
|
"Print": "Drucken",
|
||||||
@ -319,19 +349,30 @@
|
|||||||
"Results are visible": "Ergebnisse sind sichtbar",
|
"Results are visible": "Ergebnisse sind sichtbar",
|
||||||
"Rich editor": "Rich Text Editor",
|
"Rich editor": "Rich Text Editor",
|
||||||
"Save the description": "Beschreibung speichern",
|
"Save the description": "Beschreibung speichern",
|
||||||
"Save the email address": "Speichern Sie die E-Mail-Adresse",
|
"Save the email address": "Die neue E-Mail-Adresse speichern",
|
||||||
"Save the new expiration date": "Speichern Sie das neue Ablaufdatum",
|
"Save the new expiration date": "Das neue Ablaufdatum speichern",
|
||||||
"Save the new name": "Speichern Sie den neuen Namen",
|
"Save the new name": "Den neuen Namen speichern",
|
||||||
"Save the new rules": "Neue Regeln speichern",
|
"Save the new rules": "Neue Regeln speichern",
|
||||||
"Save the new title": "Den neuen Titel speichern",
|
"Save the new title": "Den neuen Titel speichern",
|
||||||
"Simple editor": "Einfacher Editor",
|
"Simple editor": "Einfacher Editor",
|
||||||
"Title": "Titel",
|
"Title": "Titel der Umfrage",
|
||||||
"Votes and comments are locked": "Wertungen und Kommentare sind gesperrt",
|
"Voters email adresses are collected": "Die E-Mail-Adressen, der zur Umfrage eingeladenen Benutzer, werden gesammelt",
|
||||||
"Votes protected by password": "Wertungen sind passwortgeschützt"
|
"Voters email adresses are collected and required": "Die E-Mail-Adressen, der zur Umfrage eingeladenen Benutzer, werden gesammelt und werden benötigt",
|
||||||
|
"Voters email adresses are collected, required and verified": "Die E-Mail-Adressen, der zur Umfrage eingeladenen Benutzer, werden gesammelt, werden benötigt und werden überprüft",
|
||||||
|
"Voters email adresses are not collected": "Die E-Mail-Adressen, der zur Umfrage eingeladenen Benutzer, werden nicht gesammelt",
|
||||||
|
"Votes and comments are locked": "Abstimmungen und Kommentare sind gesperrt",
|
||||||
|
"Votes protected by password": "Abstimmungen sind passwortgeschützt"
|
||||||
},
|
},
|
||||||
"Step 1": {
|
"Step 1": {
|
||||||
"All voters can modify any vote": "Jeder Teilnehmer kann jede abgegebene Wertung ändern",
|
"All voters can modify any vote": "Jeder Teilnehmer kann jede abgegebene Stimme ändern",
|
||||||
|
"Collect the polled users email addresses": "Sammeln der E-Mail-Adressen der zur Umfrage eingeladenen Benutzer",
|
||||||
|
"Collect users email": "Sammeln der E-Mail-Adressen der Benutzer",
|
||||||
|
"Collect voters email": "Sammeln der E-Mail-Adressen der Benutzer",
|
||||||
"Customize the URL": "Link anpassen",
|
"Customize the URL": "Link anpassen",
|
||||||
|
"Email addresses are collected but not required": "E-Mail-Adressen werden gesammelt aber sind nicht benötigt",
|
||||||
|
"Email addresses are not collected": "E-Mail-Adressen werden nicht gesammelt",
|
||||||
|
"Email addresses are required": "E-Mail-Adressen werden benötigt",
|
||||||
|
"Email addresses are required and verified": "E-Mail-Adressen werden benötigt und überprüft",
|
||||||
"Go to step 2": "Weiter zum 2. Schritt",
|
"Go to step 2": "Weiter zum 2. Schritt",
|
||||||
"Limit the amount of voters per option": "Anzahl der Stimmen pro Option begrenzen",
|
"Limit the amount of voters per option": "Anzahl der Stimmen pro Option begrenzen",
|
||||||
"More informations here:": "Weitere Informationen gibt es hier:",
|
"More informations here:": "Weitere Informationen gibt es hier:",
|
||||||
@ -350,12 +391,14 @@
|
|||||||
"The results are publicly visible": "Die Ergebnisse sind öffentlich einsehbar",
|
"The results are publicly visible": "Die Ergebnisse sind öffentlich einsehbar",
|
||||||
"To make the description more attractive, you can use the Markdown format.": "Sie können das Markdown Format nutzen um die Beschreibung attraktiver zu gestalten.",
|
"To make the description more attractive, you can use the Markdown format.": "Sie können das Markdown Format nutzen um die Beschreibung attraktiver zu gestalten.",
|
||||||
"To receive an email for each new comment": "Bei jedem neuen Kommentar eine E-Mail erhalten",
|
"To receive an email for each new comment": "Bei jedem neuen Kommentar eine E-Mail erhalten",
|
||||||
"To receive an email for each new vote": "Bei jeder neuen Wertung eine E-Mail erhalten",
|
"To receive an email for each new vote": "Bei jeder neuen Stimme eine E-Mail erhalten",
|
||||||
"Use a password to restrict access": "Verwende ein Passwort um den Zugriff zu beschänken",
|
"Use a password to restrict access": "Ein Passwort verwenden um den Zugriff zu beschränken",
|
||||||
"Value Max": "Wert Max",
|
"Value Max": "Wert Max",
|
||||||
"ValueMax instructions": "Stimmen pro Option ",
|
"ValueMax instructions": "Stimmen pro Option",
|
||||||
"Voters can modify their vote themselves": "Teilnehmer können ihre Wertungen verändern",
|
"Voters can modify their vote themselves": "Teilnehmer können ihre Stimmen verändern",
|
||||||
"Votes cannot be modified": "Wertungen können nicht verändert werden",
|
"Votes cannot be modified": "Stimmen können nicht verändert werden",
|
||||||
|
"Warning : anyone can access to the polled users's email addresses.": "Achtung: Jeder kann die E-Mail-Adressen der zur Umfrage eingeladenen Benutzer sehen.",
|
||||||
|
"Warning: anyone can access the polled users email addresses since all voters can modify any vote. You should restrict permission rules.": "Achtung: Jeder kann die E-Mail-Adressen der zur Umfrage eingeladenen Benutzer sehen da jeder Wähler jede Stimme verändern kann. Sie sollten die Zugriffsrechte beschränken.",
|
||||||
"You are in the poll creation section.": "Hier erstellen Sie die Umfrage",
|
"You are in the poll creation section.": "Hier erstellen Sie die Umfrage",
|
||||||
"You can enable or disable the editor at will.": "Sie können den Editor nach Belieben ein- und wieder ausschalten."
|
"You can enable or disable the editor at will.": "Sie können den Editor nach Belieben ein- und wieder ausschalten."
|
||||||
},
|
},
|
||||||
@ -371,7 +414,7 @@
|
|||||||
"Poll subjects (2 on 3)": "Umfrageoptionen (2 von 3)",
|
"Poll subjects (2 on 3)": "Umfrageoptionen (2 von 3)",
|
||||||
"Remove a choice": "Eine Auswahlmöglichkeit entfernen",
|
"Remove a choice": "Eine Auswahlmöglichkeit entfernen",
|
||||||
"These fields are optional. You can add a link, an image or both.": "Diese Felder sind optional. Sie können einen Link, ein Bild oder beides hinzufügen.",
|
"These fields are optional. You can add a link, an image or both.": "Diese Felder sind optional. Sie können einen Link, ein Bild oder beides hinzufügen.",
|
||||||
"To make a generic poll you need to propose at least two choices between differents subjects.": "Um eine gewöhnliche Umfrage zu erstellen, müssen Sie mindestens zwei Alternativen zur Auswahl stellen.",
|
"To make a generic poll you need to propose at least two choices between differents subjects.": "Beim Erstellen einer Umfrage müssen mindestens zwei Alternativen zur Auswahl gestellt werden.",
|
||||||
"URL of the image": "URL des Bildes",
|
"URL of the image": "URL des Bildes",
|
||||||
"You can add or remove additional choices with the buttons": "Um Auswahlmöglichkeiten hinzuzufügen oder zu entfernen, verwenden Sie die Buttons",
|
"You can add or remove additional choices with the buttons": "Um Auswahlmöglichkeiten hinzuzufügen oder zu entfernen, verwenden Sie die Buttons",
|
||||||
"the Markdown syntax": "Markdown Syntax"
|
"the Markdown syntax": "Markdown Syntax"
|
||||||
@ -379,7 +422,7 @@
|
|||||||
"Step 2 date": {
|
"Step 2 date": {
|
||||||
"Add a day": "Einen Tag hinzufügen",
|
"Add a day": "Einen Tag hinzufügen",
|
||||||
"Add an hour": "Eine Uhrzeit hinzufügen",
|
"Add an hour": "Eine Uhrzeit hinzufügen",
|
||||||
"Choose the dates of your poll": "Machen Sie Terminvorschläge für Ihre Umfrage",
|
"Choose the dates of your poll": "Terminvorschläge für Ihre Umfrage machen",
|
||||||
"Copy hours of the first day": "Uhrzeiten des ersten Tags kopieren",
|
"Copy hours of the first day": "Uhrzeiten des ersten Tags kopieren",
|
||||||
"For each selected day, you can choose, or not, meeting hours (e.g.: \"8h\", \"8:30\", \"8h-10h\", \"evening\", etc.)": "Für jeden ausgewählten Tag können Sie fakultativ Uhrzeiten vorschlagen (z. B.: \"8h\", \"8:30\", \"8h-10h\", \"abends\", usw.)",
|
"For each selected day, you can choose, or not, meeting hours (e.g.: \"8h\", \"8:30\", \"8h-10h\", \"evening\", etc.)": "Für jeden ausgewählten Tag können Sie fakultativ Uhrzeiten vorschlagen (z. B.: \"8h\", \"8:30\", \"8h-10h\", \"abends\", usw.)",
|
||||||
"Poll dates (2 on 3)": "Umfragedaten (2 von 3)",
|
"Poll dates (2 on 3)": "Umfragedaten (2 von 3)",
|
||||||
@ -389,7 +432,7 @@
|
|||||||
"Remove an hour": "Eine Uhrzeit entfernen",
|
"Remove an hour": "Eine Uhrzeit entfernen",
|
||||||
"Remove this day": "Diesen Tag entfernen",
|
"Remove this day": "Diesen Tag entfernen",
|
||||||
"To schedule an event you need to propose at least two choices (two hours for one day or two days).": "Um eine Terminabsprache zu konfigurieren, müssen Sie mindestens zwei alternative Zeitpunkte vorschlagen (zwei Uhrzeiten am gleichen Tag oder verschiedene Tage).",
|
"To schedule an event you need to propose at least two choices (two hours for one day or two days).": "Um eine Terminabsprache zu konfigurieren, müssen Sie mindestens zwei alternative Zeitpunkte vorschlagen (zwei Uhrzeiten am gleichen Tag oder verschiedene Tage).",
|
||||||
"You can add or remove additionnal days and hours with the buttons": "Sie können weitere Tage und Uhrzeiten über diesen Button hinzufügen oder entfernen"
|
"You can add or remove additionnal days and hours with the buttons": "Sie können weitere Tage und Uhrzeiten über die Buttons hinzufügen oder entfernen"
|
||||||
},
|
},
|
||||||
"Step 3": {
|
"Step 3": {
|
||||||
"Archiving date:": "Tag der Archivierung:",
|
"Archiving date:": "Tag der Archivierung:",
|
||||||
@ -412,6 +455,8 @@
|
|||||||
"As poll administrator, you can change all the lines of this poll with this button": "Als Administrator der Umfrage können Sie alle Zeilen der Umfrage über diesen Button ändern",
|
"As poll administrator, you can change all the lines of this poll with this button": "Als Administrator der Umfrage können Sie alle Zeilen der Umfrage über diesen Button ändern",
|
||||||
"Back to the poll": "Zurück zur Umfrage",
|
"Back to the poll": "Zurück zur Umfrage",
|
||||||
"Choice added": "Option hinzugefügt",
|
"Choice added": "Option hinzugefügt",
|
||||||
|
"Collect the emails of the polled users for the choice": "Sammeln der E-Mail-Adressen der zur Abstimmung eingeladenen Benutzer für die Auswahl",
|
||||||
|
"Collect the emails of the polled users for this column": "Sammeln der E-Mail-Adressen der zur Umfrage eingeladenen Benutzer dieser Spalte",
|
||||||
"Column removed": "Spalte entfernt",
|
"Column removed": "Spalte entfernt",
|
||||||
"Column's adding": "Spalte hinzufügen",
|
"Column's adding": "Spalte hinzufügen",
|
||||||
"Comment deleted": "Kommentar gelöscht",
|
"Comment deleted": "Kommentar gelöscht",
|
||||||
@ -427,12 +472,12 @@
|
|||||||
"Keep the poll": "Umfrage beibehalten",
|
"Keep the poll": "Umfrage beibehalten",
|
||||||
"Keep the votes": "Wertungen beibehalten",
|
"Keep the votes": "Wertungen beibehalten",
|
||||||
"Keep this poll": "Diese Umfrage beibehalten",
|
"Keep this poll": "Diese Umfrage beibehalten",
|
||||||
"Keep votes": "Wertungen beibehalten",
|
"Keep votes": "Stimmabgaben beibehalten",
|
||||||
"Poll fully deleted": "Umfrage vollständig gelöscht",
|
"Poll fully deleted": "Umfrage vollständig gelöscht",
|
||||||
"Poll saved": "Umfrage gespeichert",
|
"Poll saved": "Umfrage gespeichert",
|
||||||
"Remove the column": "Spalte entfernen",
|
"Remove the column": "Spalte entfernen",
|
||||||
"Remove the comments": "Kommentare entfernen",
|
"Remove the comments": "Kommentare entfernen",
|
||||||
"Remove the votes": "Entfernen Sie die Stimmen",
|
"Remove the votes": "Stimmen entfernen",
|
||||||
"The poll is created.": "Die Umfrage wurde erstellt.",
|
"The poll is created.": "Die Umfrage wurde erstellt.",
|
||||||
"Vote added": "Stimme hinzugefügt",
|
"Vote added": "Stimme hinzugefügt",
|
||||||
"Vote deleted": "Stimme gelöscht",
|
"Vote deleted": "Stimme gelöscht",
|
||||||
@ -442,13 +487,21 @@
|
|||||||
"and add a new column with": "und neue Spalte hinzufügen mit",
|
"and add a new column with": "und neue Spalte hinzufügen mit",
|
||||||
"remove a column or a line with": "Zeile oder Spalte entfernen mit"
|
"remove a column or a line with": "Zeile oder Spalte entfernen mit"
|
||||||
},
|
},
|
||||||
|
"display_mails": {
|
||||||
|
"People who have answered 'If need be' to this option have left those email addresses :": "E-Mail-Adressen aller Benutzer, die mit \"Ja - unter Vorbehalt\" für diese Option abgestimmt haben:",
|
||||||
|
"People who have answered 'If need be' to this option have not left any email addresses.": "Benutzer, die mit \"Ja - unter Vorbehalt\" für diese Option abgestimmt haben, haben keine E-Mail-Adresse angegeben.",
|
||||||
|
"People who have answered 'No' to this option have left those email addresses :": "E-Mail-Adressen aller Benutzer, die mit \"Nein\" für diese Option abgestimmt haben:",
|
||||||
|
"People who have answered 'No' to this option have not left any email addresses.": "Benutzer, die mit \"Nein\" für diese Option abgestimmt haben, haben keine E-Mail-Adresse angegeben.",
|
||||||
|
"People who have answered 'Yes' to this option have left those email addresses :": "E-Mail-Adressen aller Benutzer, die mit \"Ja\" für diese Option abgestimmt haben:",
|
||||||
|
"People who have answered 'Yes' to this option have not left any email addresses.": "Benutzer, die mit \"Ja\" für diese Option abgestimmt haben, haben keine E-Mail-Adresse angegeben."
|
||||||
|
},
|
||||||
"studs": {
|
"studs": {
|
||||||
"Adding the vote succeeded": "Die Wertung wurde hinzugefügt",
|
"Adding the vote succeeded": "Die Stimme wurde hinzugefügt",
|
||||||
"Deletion date:": "Löschdatum:",
|
"Deletion date:": "Löschdatum:",
|
||||||
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "Wenn Sie an dieser Umfrage teilnehmen möchten, müssen Sie ihren Namen angeben, die Auswahl treffen, die Ihnen am ehesten zusagt und mit dem Plus-Button am Ende der Zeile bestätigen.",
|
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "Wenn Sie an dieser Umfrage teilnehmen möchten, müssen Sie ihren Namen angeben, die Auswahl treffen, die Ihnen am ehesten zusagt und mit dem Speichern-Button am Ende der Zeile bestätigen.",
|
||||||
"POLL_LOCKED_WARNING": "Die Abstimmung wurde vom Administrator gesperrt. Bewertungen und Kommentare werden eingefroren; es ist nicht mehr möglich teilzunehmen",
|
"POLL_LOCKED_WARNING": "Die Abstimmung wurde vom Administrator gesperrt. Bewertungen und Kommentare wurden eingefroren; es ist nicht mehr möglich teilzunehmen",
|
||||||
"The poll is expired, it will be deleted soon.": "Der Zeitraum für die Umfrage ist überschritten, sie wird bald gelöscht werden.",
|
"The poll is expired, it will be deleted soon.": "Der Zeitraum für die Umfrage ist überschritten, sie wird bald gelöscht werden.",
|
||||||
"Update vote succeeded": "Die Wertung wurde geändert",
|
"Update vote succeeded": "Die Stimme wurde geändert",
|
||||||
"Your vote has been registered successfully, but be careful: regarding this poll options, you need to keep this personal link to edit your own vote:": "Ihre Stimme wurde gezählt, aber beachten Sie, dass diese Umfrage die nachträgliche Änderung Ihrer Wertung nur über den nachfolgend genannten, personalisierten Link erlaubt; verwahren Sie ihn an einem sicheren Ort!"
|
"Your vote has been registered successfully, but be careful: regarding this poll options, you need to keep this personal link to edit your own vote:": "Ihre Stimme wurde gezählt, aber beachten Sie, dass diese Umfrage die nachträgliche Änderung Ihrer Wertung nur über den nachfolgend genannten, personalisierten Link erlaubt; verwahren Sie ihn an einem sicheren Ort!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,8 +31,9 @@
|
|||||||
"Back to administration": "Back to administration",
|
"Back to administration": "Back to administration",
|
||||||
"Change the poll": "Change the poll",
|
"Change the poll": "Change the poll",
|
||||||
"Confirm removal of the poll": "Confirm removal of the poll ",
|
"Confirm removal of the poll": "Confirm removal of the poll ",
|
||||||
"Deleted the poll": "Deleted the poll",
|
"Deleted the poll": "Poll deleted",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
|
"Executed": "Executed",
|
||||||
"Expiration date": "Expiry date",
|
"Expiration date": "Expiry date",
|
||||||
"Fail": "Fail",
|
"Fail": "Fail",
|
||||||
"Failed:": "Failed:",
|
"Failed:": "Failed:",
|
||||||
@ -49,11 +50,13 @@
|
|||||||
"Purged:": "Purged:",
|
"Purged:": "Purged:",
|
||||||
"See the poll": "See the poll",
|
"See the poll": "See the poll",
|
||||||
"Skipped:": "Skipped:",
|
"Skipped:": "Skipped:",
|
||||||
|
"Status": "Status",
|
||||||
"Succeeded:": "Succeeded:",
|
"Succeeded:": "Succeeded:",
|
||||||
"Success": "Success",
|
"Success": "Success",
|
||||||
"Summary": "Summary",
|
"Summary": "Summary",
|
||||||
"Title": "Title",
|
"Title": "Title",
|
||||||
"Votes": "Votes",
|
"Votes": "Votes",
|
||||||
|
"Waiting": "Waiting",
|
||||||
"polls in the database at this time": "polls in the database at this time"
|
"polls in the database at this time": "polls in the database at this time"
|
||||||
},
|
},
|
||||||
"Check": {
|
"Check": {
|
||||||
@ -83,8 +86,9 @@
|
|||||||
"Comments of polled people": "Comments",
|
"Comments of polled people": "Comments",
|
||||||
"Remove the comment": "Remove comment",
|
"Remove the comment": "Remove comment",
|
||||||
"Send the comment": "Submit comment",
|
"Send the comment": "Submit comment",
|
||||||
|
"Type your name and a comment to send it": "Enter your name and comment prior to submitting the form",
|
||||||
"Your comment": "Comment",
|
"Your comment": "Comment",
|
||||||
"anonyme": "anonyme"
|
"anonyme": "anonymous"
|
||||||
},
|
},
|
||||||
"Date": {
|
"Date": {
|
||||||
"Add range dates": "Add range dates",
|
"Add range dates": "Add range dates",
|
||||||
@ -104,7 +108,7 @@
|
|||||||
"EditLink": {
|
"EditLink": {
|
||||||
"Edit link for poll \"%s\"": "Edit link for poll \"%s\"",
|
"Edit link for poll \"%s\"": "Edit link for poll \"%s\"",
|
||||||
"Here is the link for editing your vote:": "Here is the link for editing your vote:",
|
"Here is the link for editing your vote:": "Here is the link for editing your vote:",
|
||||||
"If you don't want to lose your personalized link, we can send it to your email.": "If you don't want to lose your personalized link, we can send it to your email.",
|
"If you don't want to lose your personalized link, we can send it to your email.": "If you don't want to lose your personalized link, we can send it to you by email.",
|
||||||
"Please wait %d seconds before we can send an email to you then try again.": "Please wait %d seconds before we can send an email to you then try again.",
|
"Please wait %d seconds before we can send an email to you then try again.": "Please wait %d seconds before we can send an email to you then try again.",
|
||||||
"REMINDER": "REMINDER",
|
"REMINDER": "REMINDER",
|
||||||
"Send": "Send",
|
"Send": "Send",
|
||||||
@ -122,7 +126,7 @@
|
|||||||
"Enter a name and a comment!": "Enter a name and a comment!",
|
"Enter a name and a comment!": "Enter a name and a comment!",
|
||||||
"Enter a title": "Enter a title",
|
"Enter a title": "Enter a title",
|
||||||
"Enter an email address": "Enter an email address",
|
"Enter an email address": "Enter an email address",
|
||||||
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of voters limitation: Value must be an integer greater than 0",
|
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of votes limitation: Value must be an integer greater than 0",
|
||||||
"Error!": "Error!",
|
"Error!": "Error!",
|
||||||
"Failed to delete all comments": "Failed to delete all comments",
|
"Failed to delete all comments": "Failed to delete all comments",
|
||||||
"Failed to delete all votes": "Failed to delete all votes",
|
"Failed to delete all votes": "Failed to delete all votes",
|
||||||
@ -150,23 +154,39 @@
|
|||||||
"The name is invalid.": "The name is invalid.",
|
"The name is invalid.": "The name is invalid.",
|
||||||
"The name you've chosen already exist in this poll!": "The name you've chosen already exists in this poll!",
|
"The name you've chosen already exist in this poll!": "The name you've chosen already exists in this poll!",
|
||||||
"There is a problem with your choices": "There is a problem with your choices",
|
"There is a problem with your choices": "There is a problem with your choices",
|
||||||
"This id is not allowed": "This id is not allowed",
|
"This id is not allowed": "This identifier is not allowed",
|
||||||
"This poll doesn't exist !": "This poll doesn't exist!",
|
"This poll doesn't exist !": "This poll doesn't exist!",
|
||||||
"Update vote failed": "Update vote failed",
|
"Update vote failed": "Update vote failed",
|
||||||
"You already voted": "You already voted",
|
"You already voted": "You already voted",
|
||||||
"You can't create a poll with hidden results with the following edition option:": "You can't create a poll with hidden results with the following option: ",
|
"You can't create a poll with hidden results with the following edition option:": "You can't create a poll with hidden results with the following option: ",
|
||||||
"You can't select more than %d dates": "You can't select more than %d dates",
|
"You can't select more than %d dates": "You can't select more than %d dates",
|
||||||
|
"You haven't filled the first section of the poll creation, or your session has expired.": "You haven't filled the first section of the poll creation, or your session has expired.",
|
||||||
"You haven't filled the first section of the poll creation.": "You haven't filled in the first section of the poll.",
|
"You haven't filled the first section of the poll creation.": "You haven't filled in the first section of the poll.",
|
||||||
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
||||||
},
|
},
|
||||||
"FindPolls": {
|
"FindPolls": {
|
||||||
|
"Address": "Address",
|
||||||
|
"Created polls": "Created polls",
|
||||||
"Have a good day!": "Have a good day!",
|
"Have a good day!": "Have a good day!",
|
||||||
"Here is the list of the polls that you manage on %s:": "Here is the list of the polls that you manage on %s:",
|
"Here is the list of the polls that you manage on %s:": "Here is the list of the polls that you manage on %s:",
|
||||||
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.",
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator at %s.",
|
||||||
|
"Last access date": "Last access date",
|
||||||
"List of your polls": "List of your polls",
|
"List of your polls": "List of your polls",
|
||||||
|
"Local Storage Help": "To help you find your previous polls, we save each poll you create or access inside your browser. This data is saved inside this browser only. The following data will be saved:",
|
||||||
|
"Local Storage Help Delete": "To delete this data click the trashcan on the according line or click the « delete my polls index » option. This won't delete your polls.",
|
||||||
|
"Local Storage Help Information Accessed": "The date you created or last accessed the poll",
|
||||||
|
"Local Storage Help Information Address": "It's address",
|
||||||
|
"Local Storage Help Information Title": "The title of the poll",
|
||||||
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.",
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.",
|
||||||
|
"Polls saved inside this browser": "Polls saved inside this browser",
|
||||||
"Polls sent": "Polls sent",
|
"Polls sent": "Polls sent",
|
||||||
"Send me my polls": "Send me my polls"
|
"Remove all polls from this browser": "Remove all my polls from this browser's index",
|
||||||
|
"Remove poll from index": "Remove poll from index",
|
||||||
|
"Send me my polls": "Send me my polls",
|
||||||
|
"Send my polls by email": "Send my polls by email",
|
||||||
|
"There are no polls saved inside your browser yet": "There are no polls saved inside your browser yet",
|
||||||
|
"Title": "Title",
|
||||||
|
"Visited polls": "Visited polls"
|
||||||
},
|
},
|
||||||
"Generic": {
|
"Generic": {
|
||||||
"(in the format name@mail.com)": "(in the format name@mail.com)",
|
"(in the format name@mail.com)": "(in the format name@mail.com)",
|
||||||
@ -175,7 +195,7 @@
|
|||||||
"Back": "Back",
|
"Back": "Back",
|
||||||
"Back to the homepage of": "Back to the homepage of",
|
"Back to the homepage of": "Back to the homepage of",
|
||||||
"Cancel": "Cancel",
|
"Cancel": "Cancel",
|
||||||
"Caption": "Caption",
|
"Caption": "Information",
|
||||||
"Choice": "Choice",
|
"Choice": "Choice",
|
||||||
"Classic": "Classic",
|
"Classic": "Classic",
|
||||||
"Close": "Close",
|
"Close": "Close",
|
||||||
@ -189,7 +209,7 @@
|
|||||||
"Ifneedbe": "Under reserve",
|
"Ifneedbe": "Under reserve",
|
||||||
"Legend:": "Legend:",
|
"Legend:": "Legend:",
|
||||||
"Link": "Link",
|
"Link": "Link",
|
||||||
"Make your polls": "Make your polls",
|
"Make your polls": "Create your own polls",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Next": "Next",
|
"Next": "Next",
|
||||||
"No": "No",
|
"No": "No",
|
||||||
@ -221,8 +241,11 @@
|
|||||||
"AppName": "Application name",
|
"AppName": "Application name",
|
||||||
"CleanUrl": "Clean URL",
|
"CleanUrl": "Clean URL",
|
||||||
"Database": "Database name",
|
"Database": "Database name",
|
||||||
"DbConnectionString": "Connection string",
|
"DbDriver": "Database driver",
|
||||||
|
"DbHost": "Database hostname",
|
||||||
|
"DbName": "Database name",
|
||||||
"DbPassword": "Password",
|
"DbPassword": "Password",
|
||||||
|
"DbPort": "Database port",
|
||||||
"DbPrefix": "Prefix",
|
"DbPrefix": "Prefix",
|
||||||
"DbUser": "User",
|
"DbUser": "User",
|
||||||
"DefaultLanguage": "Default language",
|
"DefaultLanguage": "Default language",
|
||||||
@ -236,17 +259,17 @@
|
|||||||
"Select the language": "Select language"
|
"Select the language": "Select language"
|
||||||
},
|
},
|
||||||
"Mail": {
|
"Mail": {
|
||||||
"Author's message": "Author's message",
|
"Author's message": "Message for the author",
|
||||||
"FOOTER": "\"The road is long, but the way is clear…\"<br/>Framasoft lives only by your donations.<br/>Thank you in advance for your support https://soutenir.framasoft.org",
|
"FOOTER": "\"The road is long, but the way is clear…\"<br/>Framasoft lives only by your donations.<br/>Thank you in advance for your support https://soutenir.framasoft.org",
|
||||||
"For sending to the polled users": "Participant link",
|
"For sending to the polled users": "Participant link",
|
||||||
"Notification of poll: %s": "Notification of poll: %s",
|
"Notification of poll: %s": "Notification of poll: %s",
|
||||||
"Poll's participation: %s": "Poll participation: %s",
|
"Poll's participation: %s": "Poll participation: %s",
|
||||||
"Someone just change your poll available at the following link %s.": "Someone just changed your poll at the following link <a href=\"%1$s\">%1$s</a>.",
|
"Someone just change your poll available at the following link %s.": "Someone just changed your poll at the following link <a href=\"%1$s\">%1$s</a>.",
|
||||||
"Someone just delete your poll %s.": "Someone just deleted your poll \"%s\".",
|
"Someone just delete your poll %s.": "Someone just deleted your poll \"%s\".",
|
||||||
"Thanks for filling the poll at the link above": "Please fill in the poll at the link above",
|
"Thanks for filling the poll at the link above": "Thank you for participating in the poll at the following link",
|
||||||
"Thanks for your trust.": "Thank you for your trust.",
|
"Thanks for your trust.": "Thank you for your trust.",
|
||||||
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "This is the message to forward to the poll participants.",
|
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "This is the message to forward to the poll participants.",
|
||||||
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "This message should NOT be sent to the poll participants. You should keep it private. <br/><br/>You can modify your poll at the link above",
|
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "This message should NOT be sent to the poll participants. You should keep it private. <br/><br/>You can modify your poll at the following link",
|
||||||
"You have changed the settings of your poll. \nYou can modify this poll with this link": "You have changed the settings of your poll.<br/>You can modify this poll with this link",
|
"You have changed the settings of your poll. \nYou can modify this poll with this link": "You have changed the settings of your poll.<br/>You can modify this poll with this link",
|
||||||
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] New settings for your poll",
|
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] New settings for your poll",
|
||||||
"filled a vote.\nYou can find your poll at the link": "added a vote.<br/>You can visit your poll at the link",
|
"filled a vote.\nYou can find your poll at the link": "added a vote.<br/>You can visit your poll at the link",
|
||||||
@ -267,7 +290,9 @@
|
|||||||
"You have to provide a password to access the poll.": "You have to provide a password to access the poll."
|
"You have to provide a password to access the poll.": "You have to provide a password to access the poll."
|
||||||
},
|
},
|
||||||
"Poll results": {
|
"Poll results": {
|
||||||
|
"%s option": "%s option",
|
||||||
"Addition": "Total",
|
"Addition": "Total",
|
||||||
|
"Anyone will be able to access your email address after your vote": "Anyone will be able to see your email address after you voted",
|
||||||
"Best choice": "Best choice",
|
"Best choice": "Best choice",
|
||||||
"Best choices": "Best choices",
|
"Best choices": "Best choices",
|
||||||
"Chart": "Chart",
|
"Chart": "Chart",
|
||||||
@ -281,10 +306,11 @@
|
|||||||
"Scroll to the right": "Scroll to the right",
|
"Scroll to the right": "Scroll to the right",
|
||||||
"The best choice at this time is:": "The current best choice is:",
|
"The best choice at this time is:": "The current best choice is:",
|
||||||
"The bests choices at this time are:": "The current best choices are:",
|
"The bests choices at this time are:": "The current best choices are:",
|
||||||
"Vote ifneedbe for": "Vote under reserve for",
|
"Vote ifneedbe for": "Votes under reserve for",
|
||||||
"Vote no for": "Vote \"no\" for",
|
"Vote no for": "Vote \"no\" for",
|
||||||
"Vote yes for": "Vote \"yes\" for",
|
"Vote yes for": "Vote \"yes\" for",
|
||||||
"Votes of the poll": "Votes",
|
"Votes of the poll": "Votes",
|
||||||
|
"Warning : anyone can access to your email address after voting": "Warning: Anyone can see your email address after voting",
|
||||||
"polled user": "polled user",
|
"polled user": "polled user",
|
||||||
"polled users": "polled users"
|
"polled users": "polled users"
|
||||||
},
|
},
|
||||||
@ -296,6 +322,8 @@
|
|||||||
"Cancel the name edit": "Cancel the name edit",
|
"Cancel the name edit": "Cancel the name edit",
|
||||||
"Cancel the rules edit": "Cancel the rules edit",
|
"Cancel the rules edit": "Cancel the rules edit",
|
||||||
"Cancel the title edit": "Cancel the title edit",
|
"Cancel the title edit": "Cancel the title edit",
|
||||||
|
"Collect of the polled users email addresses": "Collec the polled users' email addresses",
|
||||||
|
"Collecting the polled users emails": "Collecting the polled users email addresses",
|
||||||
"Edit the description": "Edit the description",
|
"Edit the description": "Edit the description",
|
||||||
"Edit the email adress": "Edit the email address",
|
"Edit the email adress": "Edit the email address",
|
||||||
"Edit the expiration date": "Edit the expiry date",
|
"Edit the expiration date": "Edit the expiry date",
|
||||||
@ -306,6 +334,7 @@
|
|||||||
"Expiration date": "Expiry date",
|
"Expiration date": "Expiry date",
|
||||||
"Export to CSV": "Export to CSV",
|
"Export to CSV": "Export to CSV",
|
||||||
"Initiator of the poll": "Creator of the poll",
|
"Initiator of the poll": "Creator of the poll",
|
||||||
|
"No collect of the polled users email addresses": "The polled users' email addresses are not collected",
|
||||||
"No password": "No password",
|
"No password": "No password",
|
||||||
"Only votes are protected": "Only votes are protected",
|
"Only votes are protected": "Only votes are protected",
|
||||||
"Password protected": "Password protected",
|
"Password protected": "Password protected",
|
||||||
@ -327,12 +356,23 @@
|
|||||||
"Save the new title": "Save the new title",
|
"Save the new title": "Save the new title",
|
||||||
"Simple editor": "Simple editor",
|
"Simple editor": "Simple editor",
|
||||||
"Title": "Title of the poll",
|
"Title": "Title of the poll",
|
||||||
|
"Voters email adresses are collected": "Voters' email adresses are collected",
|
||||||
|
"Voters email adresses are collected and required": "Voters' email adresses are collected and required",
|
||||||
|
"Voters email adresses are collected, required and verified": "Voters' email adresses are collected, required and verified",
|
||||||
|
"Voters email adresses are not collected": "Voters' email adresses are not collected",
|
||||||
"Votes and comments are locked": "Votes and comments are locked",
|
"Votes and comments are locked": "Votes and comments are locked",
|
||||||
"Votes protected by password": "Votes protected by password"
|
"Votes protected by password": "Votes protected by password"
|
||||||
},
|
},
|
||||||
"Step 1": {
|
"Step 1": {
|
||||||
"All voters can modify any vote": "All voters can modify any vote",
|
"All voters can modify any vote": "All voters can modify any vote",
|
||||||
|
"Collect the polled users email addresses": "Collecting the polled users' email addresses",
|
||||||
|
"Collect users email": "Collect users' email addresses",
|
||||||
|
"Collect voters email": "Collect voters' email addresses",
|
||||||
"Customize the URL": "Customize the URL",
|
"Customize the URL": "Customize the URL",
|
||||||
|
"Email addresses are collected but not required": "Email addresses are collected but not required",
|
||||||
|
"Email addresses are not collected": "Email addresses are not collected",
|
||||||
|
"Email addresses are required": "Email addresses are required",
|
||||||
|
"Email addresses are required and verified": "Email addresses are required and verified",
|
||||||
"Go to step 2": "Go to step 2",
|
"Go to step 2": "Go to step 2",
|
||||||
"Limit the amount of voters per option": "Limit the amount of voters per option",
|
"Limit the amount of voters per option": "Limit the amount of voters per option",
|
||||||
"More informations here:": "More informations here:",
|
"More informations here:": "More informations here:",
|
||||||
@ -354,9 +394,11 @@
|
|||||||
"To receive an email for each new vote": "Receive an email for each new vote",
|
"To receive an email for each new vote": "Receive an email for each new vote",
|
||||||
"Use a password to restrict access": "Use a password to restrict access",
|
"Use a password to restrict access": "Use a password to restrict access",
|
||||||
"Value Max": "Value Max",
|
"Value Max": "Value Max",
|
||||||
"ValueMax instructions": "voters per options ",
|
"ValueMax instructions": "votes per option",
|
||||||
"Voters can modify their vote themselves": "Voters can modify their vote themselves",
|
"Voters can modify their vote themselves": "Voters can modify their vote themselves",
|
||||||
"Votes cannot be modified": "Votes cannot be modified",
|
"Votes cannot be modified": "Votes cannot be modified",
|
||||||
|
"Warning : anyone can access to the polled users's email addresses.": "Warning: Anyone can see the polled users' email addresses.",
|
||||||
|
"Warning: anyone can access the polled users email addresses since all voters can modify any vote. You should restrict permission rules.": "Warning: Anyone can see the polled users' email addresses since all voters can modify any vote. You should restrict permission rules.",
|
||||||
"You are in the poll creation section.": "You are in the poll creation section.",
|
"You are in the poll creation section.": "You are in the poll creation section.",
|
||||||
"You can enable or disable the editor at will.": "You can enable or disable the editor at will."
|
"You can enable or disable the editor at will.": "You can enable or disable the editor at will."
|
||||||
},
|
},
|
||||||
@ -413,6 +455,8 @@
|
|||||||
"As poll administrator, you can change all the lines of this poll with this button": "As poll administrator, you can change all the lines of this poll with this button",
|
"As poll administrator, you can change all the lines of this poll with this button": "As poll administrator, you can change all the lines of this poll with this button",
|
||||||
"Back to the poll": "Back to the poll",
|
"Back to the poll": "Back to the poll",
|
||||||
"Choice added": "Choice added",
|
"Choice added": "Choice added",
|
||||||
|
"Collect the emails of the polled users for the choice": "Collect the emails of the polled users for the choice",
|
||||||
|
"Collect the emails of the polled users for this column": "Collect the email addresses of the polled users for this column",
|
||||||
"Column removed": "Column deleted",
|
"Column removed": "Column deleted",
|
||||||
"Column's adding": "Adding a column",
|
"Column's adding": "Adding a column",
|
||||||
"Comment deleted": "Comment deleted",
|
"Comment deleted": "Comment deleted",
|
||||||
@ -420,7 +464,7 @@
|
|||||||
"Confirm removal of all votes of the poll": "Confirm removal of all votes",
|
"Confirm removal of all votes of the poll": "Confirm removal of all votes",
|
||||||
"Confirm removal of the column.": "Confirm removal of the column.",
|
"Confirm removal of the column.": "Confirm removal of the column.",
|
||||||
"Confirm removal of the poll": "Confirm removal of your poll",
|
"Confirm removal of the poll": "Confirm removal of your poll",
|
||||||
"Delete the poll": "Delete the poll",
|
"Delete the poll": "Delete poll",
|
||||||
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Finally, you can change the properties of this poll such as the title, the comments or your email address.",
|
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Finally, you can change the properties of this poll such as the title, the comments or your email address.",
|
||||||
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "If you just want to add a new time slot to an existing date, add that date here and choose a new time slot.",
|
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "If you just want to add a new time slot to an existing date, add that date here and choose a new time slot.",
|
||||||
"Keep comments": "Keep comments",
|
"Keep comments": "Keep comments",
|
||||||
@ -443,10 +487,18 @@
|
|||||||
"and add a new column with": "and add a new column with",
|
"and add a new column with": "and add a new column with",
|
||||||
"remove a column or a line with": "remove a column or a line with"
|
"remove a column or a line with": "remove a column or a line with"
|
||||||
},
|
},
|
||||||
|
"display_mails": {
|
||||||
|
"People who have answered 'If need be' to this option have left those email addresses :": "Users who voted 'If need be' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'If need be' to this option have not left any email addresses.": "Users who voted 'If need be' for this option have not left any email addresses:",
|
||||||
|
"People who have answered 'No' to this option have left those email addresses :": "Users who voted 'No' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'No' to this option have not left any email addresses.": "Users who voted 'No' for this option have not left any email addresses.",
|
||||||
|
"People who have answered 'Yes' to this option have left those email addresses :": "Users who voted 'Yes' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'Yes' to this option have not left any email addresses.": "Users who voted 'Yes' for this option have not left any email addresses."
|
||||||
|
},
|
||||||
"studs": {
|
"studs": {
|
||||||
"Adding the vote succeeded": "Vote added",
|
"Adding the vote succeeded": "Vote added",
|
||||||
"Deletion date:": "Deletion date:",
|
"Deletion date:": "Deletion date:",
|
||||||
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "If you want to vote in this poll, you have to give your name, make your choice, and submit it with the plus button at the end of the line.",
|
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "If you want to vote in this poll, you have to give your name, make your choice, and submit it by selecting the save button at the end of the line.",
|
||||||
"POLL_LOCKED_WARNING": "The administrator locked this poll. Votes and comments are frozen, it is no longer possible to participate",
|
"POLL_LOCKED_WARNING": "The administrator locked this poll. Votes and comments are frozen, it is no longer possible to participate",
|
||||||
"The poll is expired, it will be deleted soon.": "The poll has expired, it will soon be deleted.",
|
"The poll is expired, it will be deleted soon.": "The poll has expired, it will soon be deleted.",
|
||||||
"Update vote succeeded": "Vote updated",
|
"Update vote succeeded": "Vote updated",
|
||||||
|
@ -31,8 +31,9 @@
|
|||||||
"Back to administration": "Back to administration",
|
"Back to administration": "Back to administration",
|
||||||
"Change the poll": "Change the poll",
|
"Change the poll": "Change the poll",
|
||||||
"Confirm removal of the poll": "Confirm removal of the poll ",
|
"Confirm removal of the poll": "Confirm removal of the poll ",
|
||||||
"Deleted the poll": "Deleted the poll",
|
"Deleted the poll": "Poll deleted",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
|
"Executed": "Executed",
|
||||||
"Expiration date": "Expiry date",
|
"Expiration date": "Expiry date",
|
||||||
"Fail": "Fail",
|
"Fail": "Fail",
|
||||||
"Failed:": "Failed:",
|
"Failed:": "Failed:",
|
||||||
@ -49,11 +50,13 @@
|
|||||||
"Purged:": "Purged:",
|
"Purged:": "Purged:",
|
||||||
"See the poll": "See the poll",
|
"See the poll": "See the poll",
|
||||||
"Skipped:": "Skipped:",
|
"Skipped:": "Skipped:",
|
||||||
|
"Status": "Status",
|
||||||
"Succeeded:": "Succeeded:",
|
"Succeeded:": "Succeeded:",
|
||||||
"Success": "Success",
|
"Success": "Success",
|
||||||
"Summary": "Summary",
|
"Summary": "Summary",
|
||||||
"Title": "Title",
|
"Title": "Title",
|
||||||
"Votes": "Votes",
|
"Votes": "Votes",
|
||||||
|
"Waiting": "Waiting",
|
||||||
"polls in the database at this time": "polls in the database at this time"
|
"polls in the database at this time": "polls in the database at this time"
|
||||||
},
|
},
|
||||||
"Check": {
|
"Check": {
|
||||||
@ -83,8 +86,9 @@
|
|||||||
"Comments of polled people": "Comments",
|
"Comments of polled people": "Comments",
|
||||||
"Remove the comment": "Remove comment",
|
"Remove the comment": "Remove comment",
|
||||||
"Send the comment": "Submit comment",
|
"Send the comment": "Submit comment",
|
||||||
|
"Type your name and a comment to send it": "Enter your name and comment prior to submitting the form",
|
||||||
"Your comment": "Comment",
|
"Your comment": "Comment",
|
||||||
"anonyme": "anonyme"
|
"anonyme": "anonymous"
|
||||||
},
|
},
|
||||||
"Date": {
|
"Date": {
|
||||||
"Add range dates": "Add range dates",
|
"Add range dates": "Add range dates",
|
||||||
@ -104,7 +108,7 @@
|
|||||||
"EditLink": {
|
"EditLink": {
|
||||||
"Edit link for poll \"%s\"": "Edit link for poll \"%s\"",
|
"Edit link for poll \"%s\"": "Edit link for poll \"%s\"",
|
||||||
"Here is the link for editing your vote:": "Here is the link for editing your vote:",
|
"Here is the link for editing your vote:": "Here is the link for editing your vote:",
|
||||||
"If you don't want to lose your personalized link, we can send it to your email.": "If you don't want to lose your personalized link, we can send it to your email.",
|
"If you don't want to lose your personalized link, we can send it to your email.": "If you don't want to lose your personalized link, we can send it to you by email.",
|
||||||
"Please wait %d seconds before we can send an email to you then try again.": "Please wait %d seconds before we can send an email to you then try again.",
|
"Please wait %d seconds before we can send an email to you then try again.": "Please wait %d seconds before we can send an email to you then try again.",
|
||||||
"REMINDER": "REMINDER",
|
"REMINDER": "REMINDER",
|
||||||
"Send": "Send",
|
"Send": "Send",
|
||||||
@ -122,7 +126,7 @@
|
|||||||
"Enter a name and a comment!": "Enter a name and a comment!",
|
"Enter a name and a comment!": "Enter a name and a comment!",
|
||||||
"Enter a title": "Enter a title",
|
"Enter a title": "Enter a title",
|
||||||
"Enter an email address": "Enter an email address",
|
"Enter an email address": "Enter an email address",
|
||||||
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of voters limitation: Value must be an integer greater than 0",
|
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of votes limitation: Value must be an integer greater than 0",
|
||||||
"Error!": "Error!",
|
"Error!": "Error!",
|
||||||
"Failed to delete all comments": "Failed to delete all comments",
|
"Failed to delete all comments": "Failed to delete all comments",
|
||||||
"Failed to delete all votes": "Failed to delete all votes",
|
"Failed to delete all votes": "Failed to delete all votes",
|
||||||
@ -150,22 +154,39 @@
|
|||||||
"The name is invalid.": "The name is invalid.",
|
"The name is invalid.": "The name is invalid.",
|
||||||
"The name you've chosen already exist in this poll!": "The name you've chosen already exists in this poll!",
|
"The name you've chosen already exist in this poll!": "The name you've chosen already exists in this poll!",
|
||||||
"There is a problem with your choices": "There is a problem with your choices",
|
"There is a problem with your choices": "There is a problem with your choices",
|
||||||
|
"This id is not allowed": "This identifier is not allowed",
|
||||||
"This poll doesn't exist !": "This poll doesn't exist!",
|
"This poll doesn't exist !": "This poll doesn't exist!",
|
||||||
"Update vote failed": "Update vote failed",
|
"Update vote failed": "Update vote failed",
|
||||||
"You already voted": "You already voted",
|
"You already voted": "You already voted",
|
||||||
"You can't create a poll with hidden results with the following edition option:": "You can't create a poll with hidden results with the following option: ",
|
"You can't create a poll with hidden results with the following edition option:": "You can't create a poll with hidden results with the following option: ",
|
||||||
"You can't select more than %d dates": "You can't select more than %d dates",
|
"You can't select more than %d dates": "You can't select more than %d dates",
|
||||||
|
"You haven't filled the first section of the poll creation, or your session has expired.": "You haven't filled the first section of the poll creation, or your session has expired.",
|
||||||
"You haven't filled the first section of the poll creation.": "You haven't filled in the first section of the poll.",
|
"You haven't filled the first section of the poll creation.": "You haven't filled in the first section of the poll.",
|
||||||
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
||||||
},
|
},
|
||||||
"FindPolls": {
|
"FindPolls": {
|
||||||
|
"Address": "Address",
|
||||||
|
"Created polls": "Created polls",
|
||||||
"Have a good day!": "Have a good day!",
|
"Have a good day!": "Have a good day!",
|
||||||
"Here is the list of the polls that you manage on %s:": "Here is the list of the polls that you manage on %s:",
|
"Here is the list of the polls that you manage on %s:": "Here is the list of the polls that you manage on %s:",
|
||||||
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.",
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator at %s.",
|
||||||
|
"Last access date": "Last access date",
|
||||||
"List of your polls": "List of your polls",
|
"List of your polls": "List of your polls",
|
||||||
|
"Local Storage Help": "To help you find your previous polls, we save each poll you create or access inside your browser. This data is saved inside this browser only. The following data will be saved:",
|
||||||
|
"Local Storage Help Delete": "To delete this data click the trashcan on the according line or click the « delete my polls index » option. This won't delete your polls.",
|
||||||
|
"Local Storage Help Information Accessed": "The date you created or last accessed the poll",
|
||||||
|
"Local Storage Help Information Address": "It's address",
|
||||||
|
"Local Storage Help Information Title": "The title of the poll",
|
||||||
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.",
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.",
|
||||||
|
"Polls saved inside this browser": "Polls saved inside this browser",
|
||||||
"Polls sent": "Polls sent",
|
"Polls sent": "Polls sent",
|
||||||
"Send me my polls": "Send me my polls"
|
"Remove all polls from this browser": "Remove all my polls from this browser's index",
|
||||||
|
"Remove poll from index": "Remove poll from index",
|
||||||
|
"Send me my polls": "Send me my polls",
|
||||||
|
"Send my polls by email": "Send my polls by email",
|
||||||
|
"There are no polls saved inside your browser yet": "There are no polls saved inside your browser yet",
|
||||||
|
"Title": "Title",
|
||||||
|
"Visited polls": "Visited polls"
|
||||||
},
|
},
|
||||||
"Generic": {
|
"Generic": {
|
||||||
"(in the format name@mail.com)": "(in the format name@mail.com)",
|
"(in the format name@mail.com)": "(in the format name@mail.com)",
|
||||||
@ -174,7 +195,7 @@
|
|||||||
"Back": "Back",
|
"Back": "Back",
|
||||||
"Back to the homepage of": "Back to the homepage of",
|
"Back to the homepage of": "Back to the homepage of",
|
||||||
"Cancel": "Cancel",
|
"Cancel": "Cancel",
|
||||||
"Caption": "Caption",
|
"Caption": "Information",
|
||||||
"Choice": "Choice",
|
"Choice": "Choice",
|
||||||
"Classic": "Classic",
|
"Classic": "Classic",
|
||||||
"Close": "Close",
|
"Close": "Close",
|
||||||
@ -188,7 +209,7 @@
|
|||||||
"Ifneedbe": "Under reserve",
|
"Ifneedbe": "Under reserve",
|
||||||
"Legend:": "Legend:",
|
"Legend:": "Legend:",
|
||||||
"Link": "Link",
|
"Link": "Link",
|
||||||
"Make your polls": "Make your polls",
|
"Make your polls": "Create your own polls",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Next": "Next",
|
"Next": "Next",
|
||||||
"No": "No",
|
"No": "No",
|
||||||
@ -220,8 +241,11 @@
|
|||||||
"AppName": "Application name",
|
"AppName": "Application name",
|
||||||
"CleanUrl": "Clean URL",
|
"CleanUrl": "Clean URL",
|
||||||
"Database": "Database name",
|
"Database": "Database name",
|
||||||
"DbConnectionString": "Connection string",
|
"DbDriver": "Database driver",
|
||||||
|
"DbHost": "Database hostname",
|
||||||
|
"DbName": "Database name",
|
||||||
"DbPassword": "Password",
|
"DbPassword": "Password",
|
||||||
|
"DbPort": "Database port",
|
||||||
"DbPrefix": "Prefix",
|
"DbPrefix": "Prefix",
|
||||||
"DbUser": "User",
|
"DbUser": "User",
|
||||||
"DefaultLanguage": "Default language",
|
"DefaultLanguage": "Default language",
|
||||||
@ -235,17 +259,17 @@
|
|||||||
"Select the language": "Select language"
|
"Select the language": "Select language"
|
||||||
},
|
},
|
||||||
"Mail": {
|
"Mail": {
|
||||||
"Author's message": "Author's message",
|
"Author's message": "Message for the author",
|
||||||
"FOOTER": "\"The road is long, but the way is clear…\"<br/>Framasoft lives only by your donations.<br/>Thank you in advance for your support https://soutenir.framasoft.org",
|
"FOOTER": "\"The road is long, but the way is clear…\"<br/>Framasoft lives only by your donations.<br/>Thank you in advance for your support https://soutenir.framasoft.org",
|
||||||
"For sending to the polled users": "Participant link",
|
"For sending to the polled users": "Participant link",
|
||||||
"Notification of poll: %s": "Notification of poll: %s",
|
"Notification of poll: %s": "Notification of poll: %s",
|
||||||
"Poll's participation: %s": "Poll participation: %s",
|
"Poll's participation: %s": "Poll participation: %s",
|
||||||
"Someone just change your poll available at the following link %s.": "Someone just changed your poll at the following link <a href=\"%1$s\">%1$s</a>.",
|
"Someone just change your poll available at the following link %s.": "Someone just changed your poll at the following link <a href=\"%1$s\">%1$s</a>.",
|
||||||
"Someone just delete your poll %s.": "Someone just deleted your poll \"%s\".",
|
"Someone just delete your poll %s.": "Someone just deleted your poll \"%s\".",
|
||||||
"Thanks for filling the poll at the link above": "Please fill in the poll at the link above",
|
"Thanks for filling the poll at the link above": "Thank you for participating in the poll at the following link",
|
||||||
"Thanks for your trust.": "Thank you for your trust.",
|
"Thanks for your trust.": "Thank you for your trust.",
|
||||||
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "This is the message to forward to the poll participants.",
|
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "This is the message to forward to the poll participants.",
|
||||||
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "This message should NOT be sent to the poll participants. You should keep it private. <br/><br/>You can modify your poll at the link above",
|
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "This message should NOT be sent to the poll participants. You should keep it private. <br/><br/>You can modify your poll at the following link",
|
||||||
"You have changed the settings of your poll. \nYou can modify this poll with this link": "You have changed the settings of your poll.<br/>You can modify this poll with this link",
|
"You have changed the settings of your poll. \nYou can modify this poll with this link": "You have changed the settings of your poll.<br/>You can modify this poll with this link",
|
||||||
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] New settings for your poll",
|
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] New settings for your poll",
|
||||||
"filled a vote.\nYou can find your poll at the link": "added a vote.<br/>You can visit your poll at the link",
|
"filled a vote.\nYou can find your poll at the link": "added a vote.<br/>You can visit your poll at the link",
|
||||||
@ -266,7 +290,9 @@
|
|||||||
"You have to provide a password to access the poll.": "You have to provide a password to access the poll."
|
"You have to provide a password to access the poll.": "You have to provide a password to access the poll."
|
||||||
},
|
},
|
||||||
"Poll results": {
|
"Poll results": {
|
||||||
|
"%s option": "%s option",
|
||||||
"Addition": "Total",
|
"Addition": "Total",
|
||||||
|
"Anyone will be able to access your email address after your vote": "Anyone will be able to see your email address after you voted",
|
||||||
"Best choice": "Best choice",
|
"Best choice": "Best choice",
|
||||||
"Best choices": "Best choices",
|
"Best choices": "Best choices",
|
||||||
"Chart": "Chart",
|
"Chart": "Chart",
|
||||||
@ -280,10 +306,11 @@
|
|||||||
"Scroll to the right": "Scroll to the right",
|
"Scroll to the right": "Scroll to the right",
|
||||||
"The best choice at this time is:": "The current best choice is:",
|
"The best choice at this time is:": "The current best choice is:",
|
||||||
"The bests choices at this time are:": "The current best choices are:",
|
"The bests choices at this time are:": "The current best choices are:",
|
||||||
"Vote ifneedbe for": "Vote under reserve for",
|
"Vote ifneedbe for": "Votes under reserve for",
|
||||||
"Vote no for": "Vote \"no\" for",
|
"Vote no for": "Vote \"no\" for",
|
||||||
"Vote yes for": "Vote \"yes\" for",
|
"Vote yes for": "Vote \"yes\" for",
|
||||||
"Votes of the poll": "Votes",
|
"Votes of the poll": "Votes",
|
||||||
|
"Warning : anyone can access to your email address after voting": "Warning: Anyone can see your email address after voting",
|
||||||
"polled user": "polled user",
|
"polled user": "polled user",
|
||||||
"polled users": "polled users"
|
"polled users": "polled users"
|
||||||
},
|
},
|
||||||
@ -295,6 +322,8 @@
|
|||||||
"Cancel the name edit": "Cancel the name edit",
|
"Cancel the name edit": "Cancel the name edit",
|
||||||
"Cancel the rules edit": "Cancel the rules edit",
|
"Cancel the rules edit": "Cancel the rules edit",
|
||||||
"Cancel the title edit": "Cancel the title edit",
|
"Cancel the title edit": "Cancel the title edit",
|
||||||
|
"Collect of the polled users email addresses": "Collec the polled users' email addresses",
|
||||||
|
"Collecting the polled users emails": "Collecting the polled users email addresses",
|
||||||
"Edit the description": "Edit the description",
|
"Edit the description": "Edit the description",
|
||||||
"Edit the email adress": "Edit the email address",
|
"Edit the email adress": "Edit the email address",
|
||||||
"Edit the expiration date": "Edit the expiry date",
|
"Edit the expiration date": "Edit the expiry date",
|
||||||
@ -305,6 +334,7 @@
|
|||||||
"Expiration date": "Expiry date",
|
"Expiration date": "Expiry date",
|
||||||
"Export to CSV": "Export to CSV",
|
"Export to CSV": "Export to CSV",
|
||||||
"Initiator of the poll": "Creator of the poll",
|
"Initiator of the poll": "Creator of the poll",
|
||||||
|
"No collect of the polled users email addresses": "The polled users' email addresses are not collected",
|
||||||
"No password": "No password",
|
"No password": "No password",
|
||||||
"Only votes are protected": "Only votes are protected",
|
"Only votes are protected": "Only votes are protected",
|
||||||
"Password protected": "Password protected",
|
"Password protected": "Password protected",
|
||||||
@ -326,12 +356,23 @@
|
|||||||
"Save the new title": "Save the new title",
|
"Save the new title": "Save the new title",
|
||||||
"Simple editor": "Simple editor",
|
"Simple editor": "Simple editor",
|
||||||
"Title": "Title of the poll",
|
"Title": "Title of the poll",
|
||||||
|
"Voters email adresses are collected": "Voters' email adresses are collected",
|
||||||
|
"Voters email adresses are collected and required": "Voters' email adresses are collected and required",
|
||||||
|
"Voters email adresses are collected, required and verified": "Voters' email adresses are collected, required and verified",
|
||||||
|
"Voters email adresses are not collected": "Voters' email adresses are not collected",
|
||||||
"Votes and comments are locked": "Votes and comments are locked",
|
"Votes and comments are locked": "Votes and comments are locked",
|
||||||
"Votes protected by password": "Votes protected by password"
|
"Votes protected by password": "Votes protected by password"
|
||||||
},
|
},
|
||||||
"Step 1": {
|
"Step 1": {
|
||||||
"All voters can modify any vote": "All voters can modify any vote",
|
"All voters can modify any vote": "All voters can modify any vote",
|
||||||
|
"Collect the polled users email addresses": "Collecting the polled users' email addresses",
|
||||||
|
"Collect users email": "Collect users' email addresses",
|
||||||
|
"Collect voters email": "Collect voters' email addresses",
|
||||||
"Customize the URL": "Customize the URL",
|
"Customize the URL": "Customize the URL",
|
||||||
|
"Email addresses are collected but not required": "Email addresses are collected but not required",
|
||||||
|
"Email addresses are not collected": "Email addresses are not collected",
|
||||||
|
"Email addresses are required": "Email addresses are required",
|
||||||
|
"Email addresses are required and verified": "Email addresses are required and verified",
|
||||||
"Go to step 2": "Go to step 2",
|
"Go to step 2": "Go to step 2",
|
||||||
"Limit the amount of voters per option": "Limit the amount of voters per option",
|
"Limit the amount of voters per option": "Limit the amount of voters per option",
|
||||||
"More informations here:": "More informations here:",
|
"More informations here:": "More informations here:",
|
||||||
@ -353,9 +394,11 @@
|
|||||||
"To receive an email for each new vote": "Receive an email for each new vote",
|
"To receive an email for each new vote": "Receive an email for each new vote",
|
||||||
"Use a password to restrict access": "Use a password to restrict access",
|
"Use a password to restrict access": "Use a password to restrict access",
|
||||||
"Value Max": "Value Max",
|
"Value Max": "Value Max",
|
||||||
"ValueMax instructions": "voters per options ",
|
"ValueMax instructions": "votes per option",
|
||||||
"Voters can modify their vote themselves": "Voters can modify their vote themselves",
|
"Voters can modify their vote themselves": "Voters can modify their vote themselves",
|
||||||
"Votes cannot be modified": "Votes cannot be modified",
|
"Votes cannot be modified": "Votes cannot be modified",
|
||||||
|
"Warning : anyone can access to the polled users's email addresses.": "Warning: Anyone can see the polled users' email addresses.",
|
||||||
|
"Warning: anyone can access the polled users email addresses since all voters can modify any vote. You should restrict permission rules.": "Warning: Anyone can see the polled users' email addresses since all voters can modify any vote. You should restrict permission rules.",
|
||||||
"You are in the poll creation section.": "You are in the poll creation section.",
|
"You are in the poll creation section.": "You are in the poll creation section.",
|
||||||
"You can enable or disable the editor at will.": "You can enable or disable the editor at will."
|
"You can enable or disable the editor at will.": "You can enable or disable the editor at will."
|
||||||
},
|
},
|
||||||
@ -412,6 +455,8 @@
|
|||||||
"As poll administrator, you can change all the lines of this poll with this button": "As poll administrator, you can change all the lines of this poll with this button",
|
"As poll administrator, you can change all the lines of this poll with this button": "As poll administrator, you can change all the lines of this poll with this button",
|
||||||
"Back to the poll": "Back to the poll",
|
"Back to the poll": "Back to the poll",
|
||||||
"Choice added": "Choice added",
|
"Choice added": "Choice added",
|
||||||
|
"Collect the emails of the polled users for the choice": "Collect the emails of the polled users for the choice",
|
||||||
|
"Collect the emails of the polled users for this column": "Collect the email addresses of the polled users for this column",
|
||||||
"Column removed": "Column deleted",
|
"Column removed": "Column deleted",
|
||||||
"Column's adding": "Adding a column",
|
"Column's adding": "Adding a column",
|
||||||
"Comment deleted": "Comment deleted",
|
"Comment deleted": "Comment deleted",
|
||||||
@ -419,7 +464,7 @@
|
|||||||
"Confirm removal of all votes of the poll": "Confirm removal of all votes",
|
"Confirm removal of all votes of the poll": "Confirm removal of all votes",
|
||||||
"Confirm removal of the column.": "Confirm removal of the column.",
|
"Confirm removal of the column.": "Confirm removal of the column.",
|
||||||
"Confirm removal of the poll": "Confirm removal of your poll",
|
"Confirm removal of the poll": "Confirm removal of your poll",
|
||||||
"Delete the poll": "Delete the poll",
|
"Delete the poll": "Delete poll",
|
||||||
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Finally, you can change the properties of this poll such as the title, the comments or your email address.",
|
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Finally, you can change the properties of this poll such as the title, the comments or your email address.",
|
||||||
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "If you just want to add a new time slot to an existing date, add that date here and choose a new time slot.",
|
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "If you just want to add a new time slot to an existing date, add that date here and choose a new time slot.",
|
||||||
"Keep comments": "Keep comments",
|
"Keep comments": "Keep comments",
|
||||||
@ -442,10 +487,18 @@
|
|||||||
"and add a new column with": "and add a new column with",
|
"and add a new column with": "and add a new column with",
|
||||||
"remove a column or a line with": "remove a column or a line with"
|
"remove a column or a line with": "remove a column or a line with"
|
||||||
},
|
},
|
||||||
|
"display_mails": {
|
||||||
|
"People who have answered 'If need be' to this option have left those email addresses :": "Users who voted 'If need be' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'If need be' to this option have not left any email addresses.": "Users who voted 'If need be' for this option have not left any email addresses:",
|
||||||
|
"People who have answered 'No' to this option have left those email addresses :": "Users who voted 'No' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'No' to this option have not left any email addresses.": "Users who voted 'No' for this option have not left any email addresses.",
|
||||||
|
"People who have answered 'Yes' to this option have left those email addresses :": "Users who voted 'Yes' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'Yes' to this option have not left any email addresses.": "Users who voted 'Yes' for this option have not left any email addresses."
|
||||||
|
},
|
||||||
"studs": {
|
"studs": {
|
||||||
"Adding the vote succeeded": "Vote added",
|
"Adding the vote succeeded": "Vote added",
|
||||||
"Deletion date:": "Deletion date:",
|
"Deletion date:": "Deletion date:",
|
||||||
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "If you want to vote in this poll, you have to give your name, make your choice, and submit it with the plus button at the end of the line.",
|
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "If you want to vote in this poll, you have to give your name, make your choice, and submit it by selecting the save button at the end of the line.",
|
||||||
"POLL_LOCKED_WARNING": "The administrator locked this poll. Votes and comments are frozen, it is no longer possible to participate",
|
"POLL_LOCKED_WARNING": "The administrator locked this poll. Votes and comments are frozen, it is no longer possible to participate",
|
||||||
"The poll is expired, it will be deleted soon.": "The poll has expired, it will soon be deleted.",
|
"The poll is expired, it will be deleted soon.": "The poll has expired, it will soon be deleted.",
|
||||||
"Update vote succeeded": "Vote updated",
|
"Update vote succeeded": "Vote updated",
|
||||||
|
@ -31,8 +31,9 @@
|
|||||||
"Back to administration": "Volver a la administración",
|
"Back to administration": "Volver a la administración",
|
||||||
"Change the poll": "Cambiar la encuesta",
|
"Change the poll": "Cambiar la encuesta",
|
||||||
"Confirm removal of the poll": "Confirmar la eliminación de la encuesta",
|
"Confirm removal of the poll": "Confirmar la eliminación de la encuesta",
|
||||||
"Deleted the poll": "Borrar la encuesta",
|
"Deleted the poll": "Poll deleted",
|
||||||
"Email": "Correo electrónico",
|
"Email": "Correo electrónico",
|
||||||
|
"Executed": "Executed",
|
||||||
"Expiration date": "Fecha de expiración",
|
"Expiration date": "Fecha de expiración",
|
||||||
"Fail": "Error",
|
"Fail": "Error",
|
||||||
"Failed:": "Con error:",
|
"Failed:": "Con error:",
|
||||||
@ -49,11 +50,13 @@
|
|||||||
"Purged:": "Purgados:",
|
"Purged:": "Purgados:",
|
||||||
"See the poll": "Ver la encuesta",
|
"See the poll": "Ver la encuesta",
|
||||||
"Skipped:": "Omitidos:",
|
"Skipped:": "Omitidos:",
|
||||||
|
"Status": "Status",
|
||||||
"Succeeded:": "Con éxito:",
|
"Succeeded:": "Con éxito:",
|
||||||
"Success": "Éxito",
|
"Success": "Éxito",
|
||||||
"Summary": "Resumen",
|
"Summary": "Resumen",
|
||||||
"Title": "Título",
|
"Title": "Title",
|
||||||
"Votes": "Votos",
|
"Votes": "Votos",
|
||||||
|
"Waiting": "Waiting",
|
||||||
"polls in the database at this time": "encuestas en la base de datos a la fecha"
|
"polls in the database at this time": "encuestas en la base de datos a la fecha"
|
||||||
},
|
},
|
||||||
"Check": {
|
"Check": {
|
||||||
@ -83,8 +86,9 @@
|
|||||||
"Comments of polled people": "Comentarios de los votantes",
|
"Comments of polled people": "Comentarios de los votantes",
|
||||||
"Remove the comment": "Borrar el comentario",
|
"Remove the comment": "Borrar el comentario",
|
||||||
"Send the comment": "Enviar el comentario",
|
"Send the comment": "Enviar el comentario",
|
||||||
|
"Type your name and a comment to send it": "Enter your name and comment prior to submitting the form",
|
||||||
"Your comment": "Su comentario",
|
"Your comment": "Su comentario",
|
||||||
"anonyme": "anónimo"
|
"anonyme": "anonymous"
|
||||||
},
|
},
|
||||||
"Date": {
|
"Date": {
|
||||||
"Add range dates": "Agregar rango de fechas",
|
"Add range dates": "Agregar rango de fechas",
|
||||||
@ -104,7 +108,7 @@
|
|||||||
"EditLink": {
|
"EditLink": {
|
||||||
"Edit link for poll \"%s\"": "Enlace para edición de encuesta \"%s\"",
|
"Edit link for poll \"%s\"": "Enlace para edición de encuesta \"%s\"",
|
||||||
"Here is the link for editing your vote:": "Este es el enlace para editar su votación:",
|
"Here is the link for editing your vote:": "Este es el enlace para editar su votación:",
|
||||||
"If you don't want to lose your personalized link, we can send it to your email.": "Si no desea extraviar su enlace personalizado podemos enviárselo a su correo electrónico.",
|
"If you don't want to lose your personalized link, we can send it to your email.": "If you don't want to lose your personalized link, we can send it to you by email.",
|
||||||
"Please wait %d seconds before we can send an email to you then try again.": "Por favor espere %d segundos antes de que podamos enviar nuevamente un correo electrónico, y luego vuelva a intentarlo.",
|
"Please wait %d seconds before we can send an email to you then try again.": "Por favor espere %d segundos antes de que podamos enviar nuevamente un correo electrónico, y luego vuelva a intentarlo.",
|
||||||
"REMINDER": "RECORDATORIO",
|
"REMINDER": "RECORDATORIO",
|
||||||
"Send": "Enviar",
|
"Send": "Enviar",
|
||||||
@ -122,7 +126,7 @@
|
|||||||
"Enter a name and a comment!": "Introduzca su nombre y un comentario",
|
"Enter a name and a comment!": "Introduzca su nombre y un comentario",
|
||||||
"Enter a title": "Introducza un título",
|
"Enter a title": "Introducza un título",
|
||||||
"Enter an email address": "Introduzca un correo electrónico",
|
"Enter an email address": "Introduzca un correo electrónico",
|
||||||
"Error on amount of voters limitation : value must be an integer greater than 0": "Error en el límite en la cantidad de votantes: el valor debe ser un número entero mayor a 0",
|
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of votes limitation: Value must be an integer greater than 0",
|
||||||
"Error!": "¡Error!",
|
"Error!": "¡Error!",
|
||||||
"Failed to delete all comments": "No se han eliminado todos los comentarios",
|
"Failed to delete all comments": "No se han eliminado todos los comentarios",
|
||||||
"Failed to delete all votes": "No se han eliminado todos los votos",
|
"Failed to delete all votes": "No se han eliminado todos los votos",
|
||||||
@ -150,22 +154,39 @@
|
|||||||
"The name is invalid.": "Este nombre es invalido.",
|
"The name is invalid.": "Este nombre es invalido.",
|
||||||
"The name you've chosen already exist in this poll!": "El nombre que eligió ya existe en la encuesta",
|
"The name you've chosen already exist in this poll!": "El nombre que eligió ya existe en la encuesta",
|
||||||
"There is a problem with your choices": "Existe un problema con sus opciones",
|
"There is a problem with your choices": "Existe un problema con sus opciones",
|
||||||
|
"This id is not allowed": "This identifier is not allowed",
|
||||||
"This poll doesn't exist !": "Esta encuesta no existe",
|
"This poll doesn't exist !": "Esta encuesta no existe",
|
||||||
"Update vote failed": "Error al actualizar el voto",
|
"Update vote failed": "Error al actualizar el voto",
|
||||||
"You already voted": "Usted ya votó",
|
"You already voted": "Usted ya votó",
|
||||||
"You can't create a poll with hidden results with the following edition option:": "No puede crear una encuesta con resultados no visibles con los siguientes opciones de edición",
|
"You can't create a poll with hidden results with the following edition option:": "No puede crear una encuesta con resultados no visibles con los siguientes opciones de edición",
|
||||||
"You can't select more than %d dates": "No puede seleccionar más de %d fechas",
|
"You can't select more than %d dates": "No puede seleccionar más de %d fechas",
|
||||||
|
"You haven't filled the first section of the poll creation, or your session has expired.": "You haven't filled the first section of the poll creation, or your session has expired.",
|
||||||
"You haven't filled the first section of the poll creation.": "Usted no llenó la primera parte de la encuesta",
|
"You haven't filled the first section of the poll creation.": "Usted no llenó la primera parte de la encuesta",
|
||||||
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
||||||
},
|
},
|
||||||
"FindPolls": {
|
"FindPolls": {
|
||||||
|
"Address": "Address",
|
||||||
|
"Created polls": "Created polls",
|
||||||
"Have a good day!": "¡Que tenga un buen dia!",
|
"Have a good day!": "¡Que tenga un buen dia!",
|
||||||
"Here is the list of the polls that you manage on %s:": "Esta es la lista de encuestas que puede manejar en %s:",
|
"Here is the list of the polls that you manage on %s:": "Esta es la lista de encuestas que puede manejar en %s:",
|
||||||
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Si usted no realizó esta acción, y cree que puede ser debido a un abuso del servicio, por favor notifique al administrador en %s.",
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator at %s.",
|
||||||
|
"Last access date": "Last access date",
|
||||||
"List of your polls": "Listado de sus encuestas",
|
"List of your polls": "Listado de sus encuestas",
|
||||||
|
"Local Storage Help": "To help you find your previous polls, we save each poll you create or access inside your browser. This data is saved inside this browser only. The following data will be saved:",
|
||||||
|
"Local Storage Help Delete": "To delete this data click the trashcan on the according line or click the « delete my polls index » option. This won't delete your polls.",
|
||||||
|
"Local Storage Help Information Accessed": "The date you created or last accessed the poll",
|
||||||
|
"Local Storage Help Information Address": "It's address",
|
||||||
|
"Local Storage Help Information Title": "The title of the poll",
|
||||||
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "P.D.: Este correo electrónico se envió porque usted - o alguien más - solicitó recuperar todas las encuestas realizadas con esta dirección de corre electrónico.",
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "P.D.: Este correo electrónico se envió porque usted - o alguien más - solicitó recuperar todas las encuestas realizadas con esta dirección de corre electrónico.",
|
||||||
|
"Polls saved inside this browser": "Polls saved inside this browser",
|
||||||
"Polls sent": "Encuestas enviadas",
|
"Polls sent": "Encuestas enviadas",
|
||||||
"Send me my polls": "Enviarme mis encuestas"
|
"Remove all polls from this browser": "Remove all my polls from this browser's index",
|
||||||
|
"Remove poll from index": "Remove poll from index",
|
||||||
|
"Send me my polls": "Enviarme mis encuestas",
|
||||||
|
"Send my polls by email": "Send my polls by email",
|
||||||
|
"There are no polls saved inside your browser yet": "There are no polls saved inside your browser yet",
|
||||||
|
"Title": "Title",
|
||||||
|
"Visited polls": "Visited polls"
|
||||||
},
|
},
|
||||||
"Generic": {
|
"Generic": {
|
||||||
"(in the format name@mail.com)": "(en el formato nombre@correo.com)",
|
"(in the format name@mail.com)": "(en el formato nombre@correo.com)",
|
||||||
@ -174,7 +195,7 @@
|
|||||||
"Back": "Volver",
|
"Back": "Volver",
|
||||||
"Back to the homepage of": "Retroceder al inicio de",
|
"Back to the homepage of": "Retroceder al inicio de",
|
||||||
"Cancel": "Cancelar",
|
"Cancel": "Cancelar",
|
||||||
"Caption": "Leyenda",
|
"Caption": "Information",
|
||||||
"Choice": "Opción",
|
"Choice": "Opción",
|
||||||
"Classic": "Clásico",
|
"Classic": "Clásico",
|
||||||
"Close": "Cerrar",
|
"Close": "Cerrar",
|
||||||
@ -188,7 +209,7 @@
|
|||||||
"Ifneedbe": "En caso de ser necesario",
|
"Ifneedbe": "En caso de ser necesario",
|
||||||
"Legend:": "Leyenda:",
|
"Legend:": "Leyenda:",
|
||||||
"Link": "Enlace",
|
"Link": "Enlace",
|
||||||
"Make your polls": "Cree sus encuestas",
|
"Make your polls": "Create your own polls",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Next": "Seguir",
|
"Next": "Seguir",
|
||||||
"No": "No",
|
"No": "No",
|
||||||
@ -219,9 +240,12 @@
|
|||||||
"AppMail": "Correo electrónico del administrador",
|
"AppMail": "Correo electrónico del administrador",
|
||||||
"AppName": "Nombre de la aplicación",
|
"AppName": "Nombre de la aplicación",
|
||||||
"CleanUrl": "URL Limpia",
|
"CleanUrl": "URL Limpia",
|
||||||
"Database": "Nombre de la base de datos",
|
"Database": "Database name",
|
||||||
"DbConnectionString": "'String' de conexión",
|
"DbDriver": "Database driver",
|
||||||
|
"DbHost": "Database hostname",
|
||||||
|
"DbName": "Database name",
|
||||||
"DbPassword": "Contraseña",
|
"DbPassword": "Contraseña",
|
||||||
|
"DbPort": "Database port",
|
||||||
"DbPrefix": "Prefijo",
|
"DbPrefix": "Prefijo",
|
||||||
"DbUser": "Usuario",
|
"DbUser": "Usuario",
|
||||||
"DefaultLanguage": "Lenguaje por defecto",
|
"DefaultLanguage": "Lenguaje por defecto",
|
||||||
@ -235,17 +259,17 @@
|
|||||||
"Select the language": "Elegir el idioma"
|
"Select the language": "Elegir el idioma"
|
||||||
},
|
},
|
||||||
"Mail": {
|
"Mail": {
|
||||||
"Author's message": "Reservado al autor",
|
"Author's message": "Message for the author",
|
||||||
"FOOTER": "\"El camino es largo, pero el camino está despejado...\"<br/>Framasoft vive sólo de sus donaciones<br/>Gracias de antemano por su apoyo https://soutenir.framasoft.org",
|
"FOOTER": "\"El camino es largo, pero el camino está despejado...\"<br/>Framasoft vive sólo de sus donaciones<br/>Gracias de antemano por su apoyo https://soutenir.framasoft.org",
|
||||||
"For sending to the polled users": "Para difusión a los votantes",
|
"For sending to the polled users": "Para difusión a los votantes",
|
||||||
"Notification of poll: %s": "Notificación de la encuesta: %s",
|
"Notification of poll: %s": "Notificación de la encuesta: %s",
|
||||||
"Poll's participation: %s": "Participación a la encuesta: %s",
|
"Poll's participation: %s": "Participación a la encuesta: %s",
|
||||||
"Someone just change your poll available at the following link %s.": "Alguien acaba de modificar su encuesta, disponible en el siguiente enlace <a href=\"%1$s\">%1$s</a>.",
|
"Someone just change your poll available at the following link %s.": "Alguien acaba de modificar su encuesta, disponible en el siguiente enlace <a href=\"%1$s\">%1$s</a>.",
|
||||||
"Someone just delete your poll %s.": "Alguien acaba de borrar su encuesta \"%s\".",
|
"Someone just delete your poll %s.": "Alguien acaba de borrar su encuesta \"%s\".",
|
||||||
"Thanks for filling the poll at the link above": "Gracias por ir a llenar la encuesta siguiendo este enlace",
|
"Thanks for filling the poll at the link above": "Thank you for participating in the poll at the following link",
|
||||||
"Thanks for your trust.": "Gracias por su confianza.",
|
"Thanks for your trust.": "Gracias por su confianza.",
|
||||||
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Este es el mensaje que puede enviar a todos los votantes.",
|
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Este es el mensaje que puede enviar a todos los votantes.",
|
||||||
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Este mensaje NO tiene que ser difundido a los votantes. Es reservado para el autor de la encuesta.<br/><br/>Puede modificar esta encuesta en el enlace siguiente ",
|
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "This message should NOT be sent to the poll participants. You should keep it private. <br/><br/>You can modify your poll at the following link",
|
||||||
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Acaba de cambiar los parámetros de su encuestra.<br/>Puede seguir modificando la encuesta siguiendo este enlace",
|
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Acaba de cambiar los parámetros de su encuestra.<br/>Puede seguir modificando la encuesta siguiendo este enlace",
|
||||||
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRACIÓN] Cambio de configuración de la encuesta",
|
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRACIÓN] Cambio de configuración de la encuesta",
|
||||||
"filled a vote.\nYou can find your poll at the link": "acaba de votar.<br/>Puede acceder a la encuesta siguiendo este enlace",
|
"filled a vote.\nYou can find your poll at the link": "acaba de votar.<br/>Puede acceder a la encuesta siguiendo este enlace",
|
||||||
@ -266,7 +290,9 @@
|
|||||||
"You have to provide a password to access the poll.": "Debe ingresar una contraseña para acceder a la encuesta."
|
"You have to provide a password to access the poll.": "Debe ingresar una contraseña para acceder a la encuesta."
|
||||||
},
|
},
|
||||||
"Poll results": {
|
"Poll results": {
|
||||||
|
"%s option": "%s option",
|
||||||
"Addition": "Suma",
|
"Addition": "Suma",
|
||||||
|
"Anyone will be able to access your email address after your vote": "Anyone will be able to see your email address after you voted",
|
||||||
"Best choice": "Mejor elección",
|
"Best choice": "Mejor elección",
|
||||||
"Best choices": "Mejores elecciones",
|
"Best choices": "Mejores elecciones",
|
||||||
"Chart": "Gráfico",
|
"Chart": "Gráfico",
|
||||||
@ -280,10 +306,11 @@
|
|||||||
"Scroll to the right": "Hacer desfilar hacia la derecha",
|
"Scroll to the right": "Hacer desfilar hacia la derecha",
|
||||||
"The best choice at this time is:": "La mejor elección a la fecha es:",
|
"The best choice at this time is:": "La mejor elección a la fecha es:",
|
||||||
"The bests choices at this time are:": "Las mejores elecciones a la fecha son:",
|
"The bests choices at this time are:": "Las mejores elecciones a la fecha son:",
|
||||||
"Vote ifneedbe for": "Votar « si es necesario » para",
|
"Vote ifneedbe for": "Votes under reserve for",
|
||||||
"Vote no for": "Votar « no » para",
|
"Vote no for": "Votar « no » para",
|
||||||
"Vote yes for": "Votar « si » para",
|
"Vote yes for": "Votar « si » para",
|
||||||
"Votes of the poll": "Votos de la encuesta",
|
"Votes of the poll": "Votos de la encuesta",
|
||||||
|
"Warning : anyone can access to your email address after voting": "Warning: Anyone can see your email address after voting",
|
||||||
"polled user": "Votante",
|
"polled user": "Votante",
|
||||||
"polled users": "Votantes"
|
"polled users": "Votantes"
|
||||||
},
|
},
|
||||||
@ -295,6 +322,8 @@
|
|||||||
"Cancel the name edit": "Cancelar el cambio de autor",
|
"Cancel the name edit": "Cancelar el cambio de autor",
|
||||||
"Cancel the rules edit": "Cancelar los cambios en las reglas",
|
"Cancel the rules edit": "Cancelar los cambios en las reglas",
|
||||||
"Cancel the title edit": "Cancelar el cambio de título",
|
"Cancel the title edit": "Cancelar el cambio de título",
|
||||||
|
"Collect of the polled users email addresses": "Collec the polled users' email addresses",
|
||||||
|
"Collecting the polled users emails": "Collecting the polled users email addresses",
|
||||||
"Edit the description": "Modificar la descripción",
|
"Edit the description": "Modificar la descripción",
|
||||||
"Edit the email adress": "Modificar el correo electrónico",
|
"Edit the email adress": "Modificar el correo electrónico",
|
||||||
"Edit the expiration date": "Modificar la fecha de expiración",
|
"Edit the expiration date": "Modificar la fecha de expiración",
|
||||||
@ -305,6 +334,7 @@
|
|||||||
"Expiration date": "Fecha de expiración",
|
"Expiration date": "Fecha de expiración",
|
||||||
"Export to CSV": "Exportar en CSV",
|
"Export to CSV": "Exportar en CSV",
|
||||||
"Initiator of the poll": "Autor de la encuesta",
|
"Initiator of the poll": "Autor de la encuesta",
|
||||||
|
"No collect of the polled users email addresses": "The polled users' email addresses are not collected",
|
||||||
"No password": "Sin contraseña",
|
"No password": "Sin contraseña",
|
||||||
"Only votes are protected": "Only votes are protected",
|
"Only votes are protected": "Only votes are protected",
|
||||||
"Password protected": "Protegido por contraseña",
|
"Password protected": "Protegido por contraseña",
|
||||||
@ -326,12 +356,23 @@
|
|||||||
"Save the new title": "Guardar el nuevo título",
|
"Save the new title": "Guardar el nuevo título",
|
||||||
"Simple editor": "Editor simple",
|
"Simple editor": "Editor simple",
|
||||||
"Title": "Título de la encuesta",
|
"Title": "Título de la encuesta",
|
||||||
|
"Voters email adresses are collected": "Voters' email adresses are collected",
|
||||||
|
"Voters email adresses are collected and required": "Voters' email adresses are collected and required",
|
||||||
|
"Voters email adresses are collected, required and verified": "Voters' email adresses are collected, required and verified",
|
||||||
|
"Voters email adresses are not collected": "Voters' email adresses are not collected",
|
||||||
"Votes and comments are locked": "Los votos y comentarios están bloqueados",
|
"Votes and comments are locked": "Los votos y comentarios están bloqueados",
|
||||||
"Votes protected by password": "Votos protegidos por contraseña"
|
"Votes protected by password": "Votos protegidos por contraseña"
|
||||||
},
|
},
|
||||||
"Step 1": {
|
"Step 1": {
|
||||||
"All voters can modify any vote": "Los votos pueden ser modificados por cualquiera",
|
"All voters can modify any vote": "Los votos pueden ser modificados por cualquiera",
|
||||||
|
"Collect the polled users email addresses": "Collecting the polled users' email addresses",
|
||||||
|
"Collect users email": "Collect users' email addresses",
|
||||||
|
"Collect voters email": "Collect voters' email addresses",
|
||||||
"Customize the URL": "Personalizar la URL",
|
"Customize the URL": "Personalizar la URL",
|
||||||
|
"Email addresses are collected but not required": "Email addresses are collected but not required",
|
||||||
|
"Email addresses are not collected": "Email addresses are not collected",
|
||||||
|
"Email addresses are required": "Email addresses are required",
|
||||||
|
"Email addresses are required and verified": "Email addresses are required and verified",
|
||||||
"Go to step 2": "Ir al paso número 2",
|
"Go to step 2": "Ir al paso número 2",
|
||||||
"Limit the amount of voters per option": "Limitar el número de votantes por opción",
|
"Limit the amount of voters per option": "Limitar el número de votantes por opción",
|
||||||
"More informations here:": "Más información aqui:",
|
"More informations here:": "Más información aqui:",
|
||||||
@ -353,9 +394,11 @@
|
|||||||
"To receive an email for each new vote": "Recibir un correo electrónico para cada nuevo voto",
|
"To receive an email for each new vote": "Recibir un correo electrónico para cada nuevo voto",
|
||||||
"Use a password to restrict access": "Utilice una contraseña para restringir el acceso",
|
"Use a password to restrict access": "Utilice una contraseña para restringir el acceso",
|
||||||
"Value Max": "Valor max",
|
"Value Max": "Valor max",
|
||||||
"ValueMax instructions": "votantes por opciones ",
|
"ValueMax instructions": "votes per option",
|
||||||
"Voters can modify their vote themselves": "Los votos peuden ser modificados por su autor",
|
"Voters can modify their vote themselves": "Los votos peuden ser modificados por su autor",
|
||||||
"Votes cannot be modified": "Los votos no pueden ser modificados",
|
"Votes cannot be modified": "Los votos no pueden ser modificados",
|
||||||
|
"Warning : anyone can access to the polled users's email addresses.": "Warning: Anyone can see the polled users' email addresses.",
|
||||||
|
"Warning: anyone can access the polled users email addresses since all voters can modify any vote. You should restrict permission rules.": "Warning: Anyone can see the polled users' email addresses since all voters can modify any vote. You should restrict permission rules.",
|
||||||
"You are in the poll creation section.": "Usted ha eligido crear una nueva encuesta",
|
"You are in the poll creation section.": "Usted ha eligido crear una nueva encuesta",
|
||||||
"You can enable or disable the editor at will.": "Puede activar o desactivar el editor cuando lo desee."
|
"You can enable or disable the editor at will.": "Puede activar o desactivar el editor cuando lo desee."
|
||||||
},
|
},
|
||||||
@ -412,6 +455,8 @@
|
|||||||
"As poll administrator, you can change all the lines of this poll with this button": "Como administrador, Usted puede cambiar todas las filas de la encuesta con este botón",
|
"As poll administrator, you can change all the lines of this poll with this button": "Como administrador, Usted puede cambiar todas las filas de la encuesta con este botón",
|
||||||
"Back to the poll": "Volver a la encuesta",
|
"Back to the poll": "Volver a la encuesta",
|
||||||
"Choice added": "Elección añadida",
|
"Choice added": "Elección añadida",
|
||||||
|
"Collect the emails of the polled users for the choice": "Collect the emails of the polled users for the choice",
|
||||||
|
"Collect the emails of the polled users for this column": "Collect the email addresses of the polled users for this column",
|
||||||
"Column removed": "Columna borrado",
|
"Column removed": "Columna borrado",
|
||||||
"Column's adding": "Añadir una columna",
|
"Column's adding": "Añadir una columna",
|
||||||
"Comment deleted": "Comentario borrado",
|
"Comment deleted": "Comentario borrado",
|
||||||
@ -419,7 +464,7 @@
|
|||||||
"Confirm removal of all votes of the poll": "Confirma la supresión de todos los votos de la encuesta",
|
"Confirm removal of all votes of the poll": "Confirma la supresión de todos los votos de la encuesta",
|
||||||
"Confirm removal of the column.": "Confirmar la eliminación de la columna.",
|
"Confirm removal of the column.": "Confirmar la eliminación de la columna.",
|
||||||
"Confirm removal of the poll": "Confirmar la supresión de la encuesta",
|
"Confirm removal of the poll": "Confirmar la supresión de la encuesta",
|
||||||
"Delete the poll": "Borrar la encuesta",
|
"Delete the poll": "Delete poll",
|
||||||
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Finalmente, puede cambiar las informaciones de esta encuesta, como el título, los comentarios o la dirección de correo electrónico.",
|
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Finalmente, puede cambiar las informaciones de esta encuesta, como el título, los comentarios o la dirección de correo electrónico.",
|
||||||
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Si solo quiere añadir una nueva hora para una fecha existente, ponga la misma fecha y elija una nueva hora.",
|
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Si solo quiere añadir una nueva hora para una fecha existente, ponga la misma fecha y elija una nueva hora.",
|
||||||
"Keep comments": "Conservar los comentarios",
|
"Keep comments": "Conservar los comentarios",
|
||||||
@ -442,10 +487,18 @@
|
|||||||
"and add a new column with": "y se puede añadir una columna con",
|
"and add a new column with": "y se puede añadir una columna con",
|
||||||
"remove a column or a line with": "borrar una columna o una fila con"
|
"remove a column or a line with": "borrar una columna o una fila con"
|
||||||
},
|
},
|
||||||
|
"display_mails": {
|
||||||
|
"People who have answered 'If need be' to this option have left those email addresses :": "Users who voted 'If need be' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'If need be' to this option have not left any email addresses.": "Users who voted 'If need be' for this option have not left any email addresses:",
|
||||||
|
"People who have answered 'No' to this option have left those email addresses :": "Users who voted 'No' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'No' to this option have not left any email addresses.": "Users who voted 'No' for this option have not left any email addresses.",
|
||||||
|
"People who have answered 'Yes' to this option have left those email addresses :": "Users who voted 'Yes' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'Yes' to this option have not left any email addresses.": "Users who voted 'Yes' for this option have not left any email addresses."
|
||||||
|
},
|
||||||
"studs": {
|
"studs": {
|
||||||
"Adding the vote succeeded": "Voto guardado con exíto",
|
"Adding the vote succeeded": "Voto guardado con exíto",
|
||||||
"Deletion date:": "Fecha de supresión:",
|
"Deletion date:": "Fecha de supresión:",
|
||||||
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "Para participar a esta encuesta, introduzca su nombre, elija las opciones que le parezcan más adecuadas, y valide con el botón MÁS al fin de fila.",
|
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "If you want to vote in this poll, you have to give your name, make your choice, and submit it by selecting the save button at the end of the line.",
|
||||||
"POLL_LOCKED_WARNING": "La persona a cargo de la administración bloqueó esta encuesta. Los votos y comentarios están bloqueados, ya no se permite participar.",
|
"POLL_LOCKED_WARNING": "La persona a cargo de la administración bloqueó esta encuesta. Los votos y comentarios están bloqueados, ya no se permite participar.",
|
||||||
"The poll is expired, it will be deleted soon.": "La encuesta expiró, pronto desaparecerá.",
|
"The poll is expired, it will be deleted soon.": "La encuesta expiró, pronto desaparecerá.",
|
||||||
"Update vote succeeded": "Actualización exítosa de su voto",
|
"Update vote succeeded": "Actualización exítosa de su voto",
|
||||||
|
@ -31,8 +31,9 @@
|
|||||||
"Back to administration": "Retour à l'administration",
|
"Back to administration": "Retour à l'administration",
|
||||||
"Change the poll": "Modifier le sondage",
|
"Change the poll": "Modifier le sondage",
|
||||||
"Confirm removal of the poll": "Confirmer la suppression du sondage",
|
"Confirm removal of the poll": "Confirmer la suppression du sondage",
|
||||||
"Deleted the poll": "Supprimer le sondage",
|
"Deleted the poll": "Sondage complètement supprimé",
|
||||||
"Email": "Courriel",
|
"Email": "Courriel",
|
||||||
|
"Executed": "Exécutées",
|
||||||
"Expiration date": "Expiration",
|
"Expiration date": "Expiration",
|
||||||
"Fail": "Échec",
|
"Fail": "Échec",
|
||||||
"Failed:": "Échec :",
|
"Failed:": "Échec :",
|
||||||
@ -49,11 +50,13 @@
|
|||||||
"Purged:": "Purgés :",
|
"Purged:": "Purgés :",
|
||||||
"See the poll": "Voir le sondage",
|
"See the poll": "Voir le sondage",
|
||||||
"Skipped:": "Passé :",
|
"Skipped:": "Passé :",
|
||||||
|
"Status": "Statut",
|
||||||
"Succeeded:": "Succès :",
|
"Succeeded:": "Succès :",
|
||||||
"Success": "Réussite",
|
"Success": "Réussite",
|
||||||
"Summary": "Résumé",
|
"Summary": "Résumé",
|
||||||
"Title": "Titre",
|
"Title": "Titre",
|
||||||
"Votes": "Votes",
|
"Votes": "Votes",
|
||||||
|
"Waiting": "En attente",
|
||||||
"polls in the database at this time": "sondages dans la base actuellement"
|
"polls in the database at this time": "sondages dans la base actuellement"
|
||||||
},
|
},
|
||||||
"Check": {
|
"Check": {
|
||||||
@ -83,6 +86,7 @@
|
|||||||
"Comments of polled people": "Commentaires de sondé·e·s",
|
"Comments of polled people": "Commentaires de sondé·e·s",
|
||||||
"Remove the comment": "Supprimer le commentaire",
|
"Remove the comment": "Supprimer le commentaire",
|
||||||
"Send the comment": "Envoyer le commentaire",
|
"Send the comment": "Envoyer le commentaire",
|
||||||
|
"Type your name and a comment to send it": "Entrez votre nom et commentaire avant de soumettre le formulaire",
|
||||||
"Your comment": "Votre commentaire",
|
"Your comment": "Votre commentaire",
|
||||||
"anonyme": "anonyme"
|
"anonyme": "anonyme"
|
||||||
},
|
},
|
||||||
@ -150,22 +154,39 @@
|
|||||||
"The name is invalid.": "Le nom n'est pas valide.",
|
"The name is invalid.": "Le nom n'est pas valide.",
|
||||||
"The name you've chosen already exist in this poll!": "Le nom que vous avez choisi existe déjà !",
|
"The name you've chosen already exist in this poll!": "Le nom que vous avez choisi existe déjà !",
|
||||||
"There is a problem with your choices": "Il y a un problème avec vos choix",
|
"There is a problem with your choices": "Il y a un problème avec vos choix",
|
||||||
|
"This id is not allowed": "Cet id n'est pas autorisé",
|
||||||
"This poll doesn't exist !": "Ce sondage n'existe pas !",
|
"This poll doesn't exist !": "Ce sondage n'existe pas !",
|
||||||
"Update vote failed": "Échec de de la mise à jour du vote",
|
"Update vote failed": "Échec de de la mise à jour du vote",
|
||||||
"You already voted": "Vous avez déjà voté",
|
"You already voted": "Vous avez déjà voté",
|
||||||
"You can't create a poll with hidden results with the following edition option:": "Vous ne pouvez pas créer de sondage avec résulats cachés avec les options d'édition suivantes : ",
|
"You can't create a poll with hidden results with the following edition option:": "Vous ne pouvez pas créer de sondage avec résulats cachés avec les options d'édition suivantes : ",
|
||||||
"You can't select more than %d dates": "Vous ne pouvez pas choisir plus de %d dates",
|
"You can't select more than %d dates": "Vous ne pouvez pas choisir plus de %d dates",
|
||||||
|
"You haven't filled the first section of the poll creation, or your session has expired.": "Vous n'avez pas renseigné la première page du sondage, ou bien votre session a expiré.",
|
||||||
"You haven't filled the first section of the poll creation.": "Vous n'avez pas renseigné la première page du sondage",
|
"You haven't filled the first section of the poll creation.": "Vous n'avez pas renseigné la première page du sondage",
|
||||||
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Votre vote n'a pas été pris en compte, car quelqu'un a voté entre temps et cela entre en conflit avec vos choix et les conditions du sondage. Merci de réessayer."
|
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Votre vote n'a pas été pris en compte, car quelqu'un a voté entre temps et cela entre en conflit avec vos choix et les conditions du sondage. Merci de réessayer."
|
||||||
},
|
},
|
||||||
"FindPolls": {
|
"FindPolls": {
|
||||||
|
"Address": "Adresse",
|
||||||
|
"Created polls": "Sondages créés",
|
||||||
"Have a good day!": "Bonne journée !",
|
"Have a good day!": "Bonne journée !",
|
||||||
"Here is the list of the polls that you manage on %s:": "Voici la liste des sondages que vous administrez sur %s :",
|
"Here is the list of the polls that you manage on %s:": "Voici la liste des sondages que vous administrez sur %s :",
|
||||||
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Si jamais vous n'étiez pas à l'origine de cette action et que vous pensez qu'il s'agit d'un abus, vous pouvez nous le signaler à l'administrateur·rice sur %s.",
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Si jamais vous n'étiez pas à l'origine de cette action et que vous pensez qu'il s'agit d'un abus, vous pouvez nous le signaler à l'administrateur·rice sur %s.",
|
||||||
|
"Last access date": "Date de dernier accès",
|
||||||
"List of your polls": "Liste de vos sondages",
|
"List of your polls": "Liste de vos sondages",
|
||||||
|
"Local Storage Help": "Pour vous aider à trouver vos sondages précédents, nous enregistrons des informations sur chaque sondage que vous effectuez ou auquel vous accédez dans votre navigateur. Ces données sont sauvegardées uniquement dans votre navigateur. Les données suivantes seront enregistrées:",
|
||||||
|
"Local Storage Help Delete": "Pour supprimer ces données, cliquez sur l'icône en forme de poubelle en face de chaque ligne ou cliquez sur le bouton « Supprimer l'index de mes sondages ». Cela ne supprimera pas vos sondages.",
|
||||||
|
"Local Storage Help Information Accessed": "La date à laquelle vous avez créé ou accédé en dernier le sondage",
|
||||||
|
"Local Storage Help Information Address": "Son adresse",
|
||||||
|
"Local Storage Help Information Title": "Le titre du sondage",
|
||||||
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS : ce mail a été envoyé parce que vous – ou quelqu'un d'autre – avez demandé la récupération des sondages créés à l'aide de votre adresse email.",
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS : ce mail a été envoyé parce que vous – ou quelqu'un d'autre – avez demandé la récupération des sondages créés à l'aide de votre adresse email.",
|
||||||
|
"Polls saved inside this browser": "Sondages stockés dans ce navigateur",
|
||||||
"Polls sent": "Sondages envoyés",
|
"Polls sent": "Sondages envoyés",
|
||||||
"Send me my polls": "Envoyer mes sondages"
|
"Remove all polls from this browser": "Supprimer tous mes sondages de l'index de ce navigateur",
|
||||||
|
"Remove poll from index": "Supprimer le sondage de l'index",
|
||||||
|
"Send me my polls": "Envoyer mes sondages",
|
||||||
|
"Send my polls by email": "Envoyer mes sondages par courriel",
|
||||||
|
"There are no polls saved inside your browser yet": "Il n'y a pas encore de sondages sauvegardés dans votre navigateur",
|
||||||
|
"Title": "Titre",
|
||||||
|
"Visited polls": "Sondages accédés"
|
||||||
},
|
},
|
||||||
"Generic": {
|
"Generic": {
|
||||||
"(in the format name@mail.com)": "(au format nom@mail.com)",
|
"(in the format name@mail.com)": "(au format nom@mail.com)",
|
||||||
@ -188,7 +209,7 @@
|
|||||||
"Ifneedbe": "Si nécessaire",
|
"Ifneedbe": "Si nécessaire",
|
||||||
"Legend:": "Légende :",
|
"Legend:": "Légende :",
|
||||||
"Link": "Lien",
|
"Link": "Lien",
|
||||||
"Make your polls": "Organiser des rendez-vous simplement, librement.",
|
"Make your polls": "Créez vos propres sondages",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Next": "Continuer",
|
"Next": "Continuer",
|
||||||
"No": "Non",
|
"No": "Non",
|
||||||
@ -220,8 +241,11 @@
|
|||||||
"AppName": "Nom de l'application",
|
"AppName": "Nom de l'application",
|
||||||
"CleanUrl": "URL propres",
|
"CleanUrl": "URL propres",
|
||||||
"Database": "Base de données",
|
"Database": "Base de données",
|
||||||
"DbConnectionString": "Chaîne de connexion",
|
"DbDriver": "Pilote de la base de données",
|
||||||
|
"DbHost": "Nom d'hôte",
|
||||||
|
"DbName": "Nom de la base de données",
|
||||||
"DbPassword": "Mot de passe",
|
"DbPassword": "Mot de passe",
|
||||||
|
"DbPort": "Port de la base de données",
|
||||||
"DbPrefix": "Préfixe",
|
"DbPrefix": "Préfixe",
|
||||||
"DbUser": "Utilisateur·rice",
|
"DbUser": "Utilisateur·rice",
|
||||||
"DefaultLanguage": "Langue par défaut",
|
"DefaultLanguage": "Langue par défaut",
|
||||||
@ -242,7 +266,7 @@
|
|||||||
"Poll's participation: %s": "Participation au sondage : %s",
|
"Poll's participation: %s": "Participation au sondage : %s",
|
||||||
"Someone just change your poll available at the following link %s.": "Quelqu'un·e vient de modifier votre sondage accessible au lien suivant <a href=\"%1$s\">%1$s</a>.",
|
"Someone just change your poll available at the following link %s.": "Quelqu'un·e vient de modifier votre sondage accessible au lien suivant <a href=\"%1$s\">%1$s</a>.",
|
||||||
"Someone just delete your poll %s.": "Quelqu'un·e vient de supprimer votre sondage \"%s\".",
|
"Someone just delete your poll %s.": "Quelqu'un·e vient de supprimer votre sondage \"%s\".",
|
||||||
"Thanks for filling the poll at the link above": "Merci de bien vouloir participer au sondage à l'adresse suivante",
|
"Thanks for filling the poll at the link above": "Merci de bien vouloir participer au sondage à l'adresse suivante ",
|
||||||
"Thanks for your trust.": "Merci de votre confiance.",
|
"Thanks for your trust.": "Merci de votre confiance.",
|
||||||
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Ceci est le message qui doit être envoyé aux sondé·e·s.<br/>Vous pouvez maintenant transmettre ce message à toutes les personnes susceptibles de participer au vote.",
|
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Ceci est le message qui doit être envoyé aux sondé·e·s.<br/>Vous pouvez maintenant transmettre ce message à toutes les personnes susceptibles de participer au vote.",
|
||||||
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Ce message ne doit PAS être diffusé aux sondé·e·s. Il est réservé à l'auteur·rice du sondage.<br/><br/>Vous pouvez modifier ce sondage à l'adresse suivante ",
|
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Ce message ne doit PAS être diffusé aux sondé·e·s. Il est réservé à l'auteur·rice du sondage.<br/><br/>Vous pouvez modifier ce sondage à l'adresse suivante ",
|
||||||
@ -266,7 +290,9 @@
|
|||||||
"You have to provide a password to access the poll.": "Vous devez donner le mot de passe pour avoir accès à ce sondage."
|
"You have to provide a password to access the poll.": "Vous devez donner le mot de passe pour avoir accès à ce sondage."
|
||||||
},
|
},
|
||||||
"Poll results": {
|
"Poll results": {
|
||||||
|
"%s option": "%s option",
|
||||||
"Addition": "Somme",
|
"Addition": "Somme",
|
||||||
|
"Anyone will be able to access your email address after your vote": "Tout le monde pourra accéder à votre courriel après que vous ayez voté",
|
||||||
"Best choice": "Meilleur choix",
|
"Best choice": "Meilleur choix",
|
||||||
"Best choices": "Meilleurs choix",
|
"Best choices": "Meilleurs choix",
|
||||||
"Chart": "Graphique",
|
"Chart": "Graphique",
|
||||||
@ -284,6 +310,7 @@
|
|||||||
"Vote no for": "Voter « non » pour",
|
"Vote no for": "Voter « non » pour",
|
||||||
"Vote yes for": "Voter « oui » pour",
|
"Vote yes for": "Voter « oui » pour",
|
||||||
"Votes of the poll": "Votes du sondage",
|
"Votes of the poll": "Votes du sondage",
|
||||||
|
"Warning : anyone can access to your email address after voting": "Attention : Tout le monde pourra accéder à votre courriel après que vous ayez voté",
|
||||||
"polled user": "votant·e",
|
"polled user": "votant·e",
|
||||||
"polled users": "votant·e·s"
|
"polled users": "votant·e·s"
|
||||||
},
|
},
|
||||||
@ -295,6 +322,8 @@
|
|||||||
"Cancel the name edit": "Annuler le changement d'auteur·rice",
|
"Cancel the name edit": "Annuler le changement d'auteur·rice",
|
||||||
"Cancel the rules edit": "Annuler le changement de permissions",
|
"Cancel the rules edit": "Annuler le changement de permissions",
|
||||||
"Cancel the title edit": "Annuler le changement de titre",
|
"Cancel the title edit": "Annuler le changement de titre",
|
||||||
|
"Collect of the polled users email addresses": "Collecter les courriels des votants",
|
||||||
|
"Collecting the polled users emails": "Recueil des adresses internet des sondés en cours",
|
||||||
"Edit the description": "Modifier la description",
|
"Edit the description": "Modifier la description",
|
||||||
"Edit the email adress": "Modifier le courriel",
|
"Edit the email adress": "Modifier le courriel",
|
||||||
"Edit the expiration date": "Modifier la date d'expiration",
|
"Edit the expiration date": "Modifier la date d'expiration",
|
||||||
@ -305,6 +334,7 @@
|
|||||||
"Expiration date": "Date d'expiration",
|
"Expiration date": "Date d'expiration",
|
||||||
"Export to CSV": "Export Tableur (CSV)",
|
"Export to CSV": "Export Tableur (CSV)",
|
||||||
"Initiator of the poll": "Auteur·rice du sondage",
|
"Initiator of the poll": "Auteur·rice du sondage",
|
||||||
|
"No collect of the polled users email addresses": "Pas de collection des courriels des votants",
|
||||||
"No password": "Pas de mot de passe",
|
"No password": "Pas de mot de passe",
|
||||||
"Only votes are protected": "Seul les votes sont protégés",
|
"Only votes are protected": "Seul les votes sont protégés",
|
||||||
"Password protected": "Protégé par mot de passe",
|
"Password protected": "Protégé par mot de passe",
|
||||||
@ -326,12 +356,23 @@
|
|||||||
"Save the new title": "Enregistrer le nouveau titre",
|
"Save the new title": "Enregistrer le nouveau titre",
|
||||||
"Simple editor": "Editeur simple",
|
"Simple editor": "Editeur simple",
|
||||||
"Title": "Titre du sondage",
|
"Title": "Titre du sondage",
|
||||||
|
"Voters email adresses are collected": "Les courriels des votants sont collectés",
|
||||||
|
"Voters email adresses are collected and required": "Les courriels des votants sont collectés et requis",
|
||||||
|
"Voters email adresses are collected, required and verified": "Les courriels des votants sont collectés, requis et vérifiés",
|
||||||
|
"Voters email adresses are not collected": "Les courriels des votants ne sont pas collectés",
|
||||||
"Votes and comments are locked": "Il n'est plus possible de voter",
|
"Votes and comments are locked": "Il n'est plus possible de voter",
|
||||||
"Votes protected by password": "Votes protégés par mot de passe"
|
"Votes protected by password": "Votes protégés par mot de passe"
|
||||||
},
|
},
|
||||||
"Step 1": {
|
"Step 1": {
|
||||||
"All voters can modify any vote": "Tou·te·s les sondé·e·s peuvent modifier tous les votes",
|
"All voters can modify any vote": "Tou·te·s les sondé·e·s peuvent modifier tous les votes",
|
||||||
|
"Collect the polled users email addresses": "Collecte les courriels des votants",
|
||||||
|
"Collect users email": "Collecte les courriels des utilisateurs",
|
||||||
|
"Collect voters email": "Collecte les courriels des utilisateurs",
|
||||||
"Customize the URL": "Personnaliser le lien",
|
"Customize the URL": "Personnaliser le lien",
|
||||||
|
"Email addresses are collected but not required": "Les courriels sont collectés mais pas requis",
|
||||||
|
"Email addresses are not collected": "Les courriels ne sont pas collectés",
|
||||||
|
"Email addresses are required": "Les courriels sont requis",
|
||||||
|
"Email addresses are required and verified": "Les courriels sont requis et vérifiés",
|
||||||
"Go to step 2": "Aller à l'étape 2",
|
"Go to step 2": "Aller à l'étape 2",
|
||||||
"Limit the amount of voters per option": "Limiter le nombre de votant·e·s par option",
|
"Limit the amount of voters per option": "Limiter le nombre de votant·e·s par option",
|
||||||
"More informations here:": "Plus d'informations ici :",
|
"More informations here:": "Plus d'informations ici :",
|
||||||
@ -342,7 +383,7 @@
|
|||||||
"Permissions": "Permissions",
|
"Permissions": "Permissions",
|
||||||
"Poll creation (1 on 3)": "Création de sondage (1 sur 3)",
|
"Poll creation (1 on 3)": "Création de sondage (1 sur 3)",
|
||||||
"Poll id": "Lien du sondage",
|
"Poll id": "Lien du sondage",
|
||||||
"Poll id rules": "(peut contenir des lettres, des chiffres et des tirets)",
|
"Poll id rules": "(peut contenir des lettres, des chiffres et des tirets \"-\")",
|
||||||
"Poll id warning": "La modification du lien du sondage peut faciliter l'accès à ce sondage pour des personnes non désirées. Il est recommandé de le protéger par mot de passe.",
|
"Poll id warning": "La modification du lien du sondage peut faciliter l'accès à ce sondage pour des personnes non désirées. Il est recommandé de le protéger par mot de passe.",
|
||||||
"Poll password": "Mot de passe",
|
"Poll password": "Mot de passe",
|
||||||
"Poll title": "Titre du sondage",
|
"Poll title": "Titre du sondage",
|
||||||
@ -353,9 +394,11 @@
|
|||||||
"To receive an email for each new vote": "Recevoir un courriel à chaque participation",
|
"To receive an email for each new vote": "Recevoir un courriel à chaque participation",
|
||||||
"Use a password to restrict access": "Restreindre l'accès au sondage par mot de passe",
|
"Use a password to restrict access": "Restreindre l'accès au sondage par mot de passe",
|
||||||
"Value Max": "Valeur Maximale",
|
"Value Max": "Valeur Maximale",
|
||||||
"ValueMax instructions": "Votants maximum par option",
|
"ValueMax instructions": "votes par choix",
|
||||||
"Voters can modify their vote themselves": "Chaque sondé·e peut modifier son propre vote",
|
"Voters can modify their vote themselves": "Chaque sondé·e peut modifier son propre vote",
|
||||||
"Votes cannot be modified": "Aucun vote ne peut être modifié",
|
"Votes cannot be modified": "Aucun vote ne peut être modifié",
|
||||||
|
"Warning : anyone can access to the polled users's email addresses.": "Attention : Tout le monde pourra accéder aux courriels des votants",
|
||||||
|
"Warning: anyone can access the polled users email addresses since all voters can modify any vote. You should restrict permission rules.": "Attention : tout le monde pourra accéder aux courriels des votants car tout le monde peut éditer chaque vote. Vous devriez restreindre les règles de permission.",
|
||||||
"You are in the poll creation section.": "Vous avez choisi de créer un nouveau sondage.",
|
"You are in the poll creation section.": "Vous avez choisi de créer un nouveau sondage.",
|
||||||
"You can enable or disable the editor at will.": "Vous pouvez activer ou désactiver l'éditeur à votre guise."
|
"You can enable or disable the editor at will.": "Vous pouvez activer ou désactiver l'éditeur à votre guise."
|
||||||
},
|
},
|
||||||
@ -412,6 +455,8 @@
|
|||||||
"As poll administrator, you can change all the lines of this poll with this button": "En tant qu'administrateur·rice, vous pouvez modifier toutes les lignes de ce sondage avec ce bouton",
|
"As poll administrator, you can change all the lines of this poll with this button": "En tant qu'administrateur·rice, vous pouvez modifier toutes les lignes de ce sondage avec ce bouton",
|
||||||
"Back to the poll": "Retour au sondage",
|
"Back to the poll": "Retour au sondage",
|
||||||
"Choice added": "Choix ajouté",
|
"Choice added": "Choix ajouté",
|
||||||
|
"Collect the emails of the polled users for the choice": "Collecter les courriels des utilisateurs pour ce choix",
|
||||||
|
"Collect the emails of the polled users for this column": "Collecter les courriels des utilisateurs pour ce choix",
|
||||||
"Column removed": "Colonne supprimée",
|
"Column removed": "Colonne supprimée",
|
||||||
"Column's adding": "Ajout de colonne",
|
"Column's adding": "Ajout de colonne",
|
||||||
"Comment deleted": "Commentaire supprimé",
|
"Comment deleted": "Commentaire supprimé",
|
||||||
@ -419,7 +464,7 @@
|
|||||||
"Confirm removal of all votes of the poll": "Confirmer la suppression de tous les votes de ce sondage",
|
"Confirm removal of all votes of the poll": "Confirmer la suppression de tous les votes de ce sondage",
|
||||||
"Confirm removal of the column.": "Confirmer la supression de cette colonne.",
|
"Confirm removal of the column.": "Confirmer la supression de cette colonne.",
|
||||||
"Confirm removal of the poll": "Confirmer la suppression du sondage",
|
"Confirm removal of the poll": "Confirmer la suppression du sondage",
|
||||||
"Delete the poll": "Je supprime le sondage",
|
"Delete the poll": "Supprimer le sondage",
|
||||||
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Vous pouvez enfin également modifier les informations relatives à ce sondage comme le titre, les commentaires ou encore votre courriel.",
|
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Vous pouvez enfin également modifier les informations relatives à ce sondage comme le titre, les commentaires ou encore votre courriel.",
|
||||||
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Si vous voulez juste ajouter un horaire à une date existante, mettez la même date et choisissez un autre horaire. Il sera intégré normalement au sondage existant.",
|
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Si vous voulez juste ajouter un horaire à une date existante, mettez la même date et choisissez un autre horaire. Il sera intégré normalement au sondage existant.",
|
||||||
"Keep comments": "Garder les commentaires",
|
"Keep comments": "Garder les commentaires",
|
||||||
@ -433,7 +478,7 @@
|
|||||||
"Remove the column": "Effacer la colonne",
|
"Remove the column": "Effacer la colonne",
|
||||||
"Remove the comments": "Supprimer les commentaires",
|
"Remove the comments": "Supprimer les commentaires",
|
||||||
"Remove the votes": "Supprimer les votes",
|
"Remove the votes": "Supprimer les votes",
|
||||||
"The poll is created.": "The poll was created.",
|
"The poll is created.": "Le sondage a été créé",
|
||||||
"Vote added": "Vote ajouté",
|
"Vote added": "Vote ajouté",
|
||||||
"Vote deleted": "Vote supprimé",
|
"Vote deleted": "Vote supprimé",
|
||||||
"Vote updated": "Vote mis à jour",
|
"Vote updated": "Vote mis à jour",
|
||||||
@ -442,6 +487,14 @@
|
|||||||
"and add a new column with": "et si vous avez oublié de saisir un choix, vous pouvez rajouter une colonne en cliquant sur",
|
"and add a new column with": "et si vous avez oublié de saisir un choix, vous pouvez rajouter une colonne en cliquant sur",
|
||||||
"remove a column or a line with": "effacer une colonne ou une ligne avec"
|
"remove a column or a line with": "effacer une colonne ou une ligne avec"
|
||||||
},
|
},
|
||||||
|
"display_mails": {
|
||||||
|
"People who have answered 'If need be' to this option have left those email addresses :": "Les personnes ayant ont voté « Si nécessaire » ont laissé les courriels suivants :",
|
||||||
|
"People who have answered 'If need be' to this option have not left any email addresses.": "Les personnes ayant voté « Si nécessaire » pour cette option n'ont pas laissé de courriels.",
|
||||||
|
"People who have answered 'No' to this option have left those email addresses :": "Les personnes ayant ont voté « Non » ont laissé les courriels suivants :",
|
||||||
|
"People who have answered 'No' to this option have not left any email addresses.": "Les personnes ayant voté « Non » pour cette option n'ont pas laissé de courriels.",
|
||||||
|
"People who have answered 'Yes' to this option have left those email addresses :": "Les personnes ayant ont voté « Oui » ont laissé les courriels suivants :",
|
||||||
|
"People who have answered 'Yes' to this option have not left any email addresses.": "Les personnes ayant voté « Oui » pour cette option n'ont pas laissé de courriels."
|
||||||
|
},
|
||||||
"studs": {
|
"studs": {
|
||||||
"Adding the vote succeeded": "Ajout du vote réussi",
|
"Adding the vote succeeded": "Ajout du vote réussi",
|
||||||
"Deletion date:": "Date de suppression :",
|
"Deletion date:": "Date de suppression :",
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
"Confirm removal of the poll": "Confirmer la suppression du sondage",
|
"Confirm removal of the poll": "Confirmer la suppression du sondage",
|
||||||
"Deleted the poll": "Supprimer le sondage",
|
"Deleted the poll": "Supprimer le sondage",
|
||||||
"Email": "Courriel",
|
"Email": "Courriel",
|
||||||
|
"Executed": "Exécutées",
|
||||||
"Expiration date": "Expiration",
|
"Expiration date": "Expiration",
|
||||||
"Fail": "Échec",
|
"Fail": "Échec",
|
||||||
"Failed:": "Échec :",
|
"Failed:": "Échec :",
|
||||||
@ -49,11 +50,13 @@
|
|||||||
"Purged:": "Purgés :",
|
"Purged:": "Purgés :",
|
||||||
"See the poll": "Voir le sondage",
|
"See the poll": "Voir le sondage",
|
||||||
"Skipped:": "Passé :",
|
"Skipped:": "Passé :",
|
||||||
|
"Status": "Statut",
|
||||||
"Succeeded:": "Succès :",
|
"Succeeded:": "Succès :",
|
||||||
"Success": "Réussite",
|
"Success": "Réussite",
|
||||||
"Summary": "Résumé",
|
"Summary": "Résumé",
|
||||||
"Title": "Titre",
|
"Title": "Titre",
|
||||||
"Votes": "Votes",
|
"Votes": "Votes",
|
||||||
|
"Waiting": "En attente",
|
||||||
"polls in the database at this time": "sondages dans la base actuellement"
|
"polls in the database at this time": "sondages dans la base actuellement"
|
||||||
},
|
},
|
||||||
"Check": {
|
"Check": {
|
||||||
@ -83,6 +86,7 @@
|
|||||||
"Comments of polled people": "Commentaires de sondé·e·s",
|
"Comments of polled people": "Commentaires de sondé·e·s",
|
||||||
"Remove the comment": "Supprimer le commentaire",
|
"Remove the comment": "Supprimer le commentaire",
|
||||||
"Send the comment": "Envoyer le commentaire",
|
"Send the comment": "Envoyer le commentaire",
|
||||||
|
"Type your name and a comment to send it": "Entrez votre nom et commentaire avant de soumettre le formulaire",
|
||||||
"Your comment": "Votre commentaire",
|
"Your comment": "Votre commentaire",
|
||||||
"anonyme": "anonyme"
|
"anonyme": "anonyme"
|
||||||
},
|
},
|
||||||
@ -104,7 +108,7 @@
|
|||||||
"EditLink": {
|
"EditLink": {
|
||||||
"Edit link for poll \"%s\"": "Lien d'édition du sondage \"%s\"",
|
"Edit link for poll \"%s\"": "Lien d'édition du sondage \"%s\"",
|
||||||
"Here is the link for editing your vote:": "Voici le lien pour éditer votre vote :",
|
"Here is the link for editing your vote:": "Voici le lien pour éditer votre vote :",
|
||||||
"If you don't want to lose your personalized link, we can send it to your email.": "Afin de ne pas perdre ce lien d'édition de vote, nous pouvons vous l'envoyer par courriel.",
|
"If you don't want to lose your personalized link, we can send it to your email.": "Si vous ne voulez pas oublier votre lien personnalisé, nous pouvons vous l'envoyer par email.",
|
||||||
"Please wait %d seconds before we can send an email to you then try again.": "Veuillez patienter encore %d secondes avant que nous puissions vous envoyer un email, puis réessayez.",
|
"Please wait %d seconds before we can send an email to you then try again.": "Veuillez patienter encore %d secondes avant que nous puissions vous envoyer un email, puis réessayez.",
|
||||||
"REMINDER": "RAPPEL",
|
"REMINDER": "RAPPEL",
|
||||||
"Send": "Envoyer",
|
"Send": "Envoyer",
|
||||||
@ -122,7 +126,7 @@
|
|||||||
"Enter a name and a comment!": "Merci de remplir les deux champs !",
|
"Enter a name and a comment!": "Merci de remplir les deux champs !",
|
||||||
"Enter a title": "Il faut saisir un titre !",
|
"Enter a title": "Il faut saisir un titre !",
|
||||||
"Enter an email address": "Il faut saisir une adresse électronique !",
|
"Enter an email address": "Il faut saisir une adresse électronique !",
|
||||||
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of voters limitation: Value must be an integer greater than 0",
|
"Error on amount of voters limitation : value must be an integer greater than 0": "Erreur : le nombre de votants doit être une nombre supérieur à 0",
|
||||||
"Error!": "Erreur !",
|
"Error!": "Erreur !",
|
||||||
"Failed to delete all comments": "Impossible de supprimer tous les commentaires",
|
"Failed to delete all comments": "Impossible de supprimer tous les commentaires",
|
||||||
"Failed to delete all votes": "Impossible de supprimer tous les votes",
|
"Failed to delete all votes": "Impossible de supprimer tous les votes",
|
||||||
@ -143,29 +147,46 @@
|
|||||||
"Poll id already used": "L'identifiant est déjà utilisé",
|
"Poll id already used": "L'identifiant est déjà utilisé",
|
||||||
"Something is going wrong...": "Quelque chose ne va pas...",
|
"Something is going wrong...": "Quelque chose ne va pas...",
|
||||||
"Something is wrong with the format": "Quelque chose ne va pas avec le format",
|
"Something is wrong with the format": "Quelque chose ne va pas avec le format",
|
||||||
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Something is wrong with the format: Customized URLs should only consist of alphanumeric characters and hyphens.",
|
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Format incorrect : seuls les caractères alphabétiques, nombres et tirets sont acceptés dans les URLs personnalisées.",
|
||||||
"Something is wrong with the format: name shouldn't have any spaces before or after": "Quelque chose ne va pas avec le format : le nom ne devrait pas contenir d'espaces avant ou après",
|
"Something is wrong with the format: name shouldn't have any spaces before or after": "Quelque chose ne va pas avec le format : le nom ne devrait pas contenir d'espaces avant ou après",
|
||||||
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "L'adresse saisie n'est pas correcte ! Il faut une adresse électronique valide (par exemple r.stallman@outlock.com) pour recevoir le lien vers le sondage.",
|
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "L'adresse saisie n'est pas correcte ! Il faut une adresse électronique valide (par exemple r.stallman@outlock.com) pour recevoir le lien vers le sondage.",
|
||||||
"The column already exists": "La colonne existe déjà",
|
"The column already exists": "La colonne existe déjà",
|
||||||
"The name is invalid.": "Le nom n'est pas valide.",
|
"The name is invalid.": "Le nom n'est pas valide.",
|
||||||
"The name you've chosen already exist in this poll!": "Le nom que vous avez choisi existe déjà !",
|
"The name you've chosen already exist in this poll!": "Le nom que vous avez choisi existe déjà !",
|
||||||
"There is a problem with your choices": "Il y a un problème avec vos choix",
|
"There is a problem with your choices": "Il y a un problème avec vos choix",
|
||||||
|
"This id is not allowed": "This identifier is not allowed",
|
||||||
"This poll doesn't exist !": "Ce sondage n'existe pas !",
|
"This poll doesn't exist !": "Ce sondage n'existe pas !",
|
||||||
"Update vote failed": "Échec de de la mise à jour du vote",
|
"Update vote failed": "Échec de de la mise à jour du vote",
|
||||||
"You already voted": "Vous avez déjà voté",
|
"You already voted": "Vous avez déjà voté",
|
||||||
"You can't create a poll with hidden results with the following edition option:": "Vous ne pouvez pas créer de sondage avec résulats cachés avec les options d'édition suivantes : ",
|
"You can't create a poll with hidden results with the following edition option:": "Vous ne pouvez pas créer de sondage avec résulats cachés avec les options d'édition suivantes : ",
|
||||||
"You can't select more than %d dates": "Vous ne pouvez pas choisir plus de %d dates",
|
"You can't select more than %d dates": "Vous ne pouvez pas choisir plus de %d dates",
|
||||||
|
"You haven't filled the first section of the poll creation, or your session has expired.": "Vous n'avez pas renseigné la première page du sondage, ou bien votre session a expiré.",
|
||||||
"You haven't filled the first section of the poll creation.": "Vous n'avez pas renseigné la première page du sondage",
|
"You haven't filled the first section of the poll creation.": "Vous n'avez pas renseigné la première page du sondage",
|
||||||
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Votre vote n'a pas été pris en compte, car quelqu'un a voté entre temps et cela entre en conflit avec vos choix et les conditions du sondage. Merci de réessayer."
|
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Votre vote n'a pas été pris en compte, car quelqu'un a voté entre temps et cela entre en conflit avec vos choix et les conditions du sondage. Merci de réessayer."
|
||||||
},
|
},
|
||||||
"FindPolls": {
|
"FindPolls": {
|
||||||
|
"Address": "Adresse",
|
||||||
|
"Created polls": "Sondages créés",
|
||||||
"Have a good day!": "Bonne journée !",
|
"Have a good day!": "Bonne journée !",
|
||||||
"Here is the list of the polls that you manage on %s:": "Voici la liste des sondages que vous administrez sur %s :",
|
"Here is the list of the polls that you manage on %s:": "Voici la liste des sondages que vous administrez sur %s :",
|
||||||
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Si jamais vous n'étiez pas à l'origine de cette action et que vous pensez qu'il s'agit d'un abus, vous pouvez nous le signaler à l'administrateur·rice sur %s.",
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Si jamais vous n'étiez pas à l'origine de cette action et que vous pensez qu'il s'agit d'un abus, vous pouvez nous le signaler à l'administrateur·rice sur %s.",
|
||||||
|
"Last access date": "Date de dernier accès",
|
||||||
"List of your polls": "Liste de vos sondages",
|
"List of your polls": "Liste de vos sondages",
|
||||||
|
"Local Storage Help": "Pour vous aider à trouver vos sondages précédents, nous enregistrons des informations sur chaque sondage que vous effectuez ou auquel vous accédez dans votre navigateur. Ces données sont sauvegardées uniquement dans votre navigateur. Les données suivantes seront enregistrées:",
|
||||||
|
"Local Storage Help Delete": "Pour supprimer ces données, cliquez sur l'icône en forme de poubelle en face de chaque ligne ou cliquez sur le bouton « Supprimer l'index de mes sondages ». Cela ne supprimera pas vos sondages.",
|
||||||
|
"Local Storage Help Information Accessed": "La date à laquelle vous avez créé ou accédé en dernier le sondage",
|
||||||
|
"Local Storage Help Information Address": "Son adresse",
|
||||||
|
"Local Storage Help Information Title": "Le titre du sondage",
|
||||||
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS : ce mail a été envoyé parce que vous – ou quelqu'un d'autre – avez demandé la récupération des sondages créés à l'aide de votre adresse email.",
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS : ce mail a été envoyé parce que vous – ou quelqu'un d'autre – avez demandé la récupération des sondages créés à l'aide de votre adresse email.",
|
||||||
|
"Polls saved inside this browser": "Sondages stockés dans ce navigateur",
|
||||||
"Polls sent": "Sondages envoyés",
|
"Polls sent": "Sondages envoyés",
|
||||||
"Send me my polls": "Envoyer mes sondages"
|
"Remove all polls from this browser": "Supprimer tous mes sondages de l'index de ce navigateur",
|
||||||
|
"Remove poll from index": "Supprimer le sondage de l'index",
|
||||||
|
"Send me my polls": "Envoyer mes sondages",
|
||||||
|
"Send my polls by email": "Envoyer mes sondages par courriel",
|
||||||
|
"There are no polls saved inside your browser yet": "Il n'y a pas encore de sondages sauvegardés dans votre navigateur",
|
||||||
|
"Title": "Titre",
|
||||||
|
"Visited polls": "Sondages accédés"
|
||||||
},
|
},
|
||||||
"Generic": {
|
"Generic": {
|
||||||
"(in the format name@mail.com)": "(au format nom@mail.com)",
|
"(in the format name@mail.com)": "(au format nom@mail.com)",
|
||||||
@ -188,7 +209,7 @@
|
|||||||
"Ifneedbe": "Si nécessaire",
|
"Ifneedbe": "Si nécessaire",
|
||||||
"Legend:": "Légende :",
|
"Legend:": "Légende :",
|
||||||
"Link": "Lien",
|
"Link": "Lien",
|
||||||
"Make your polls": "Organiser des rendez-vous simplement, librement.",
|
"Make your polls": "Créez vos propres sondages",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Next": "Continuer",
|
"Next": "Continuer",
|
||||||
"No": "Non",
|
"No": "Non",
|
||||||
@ -220,8 +241,11 @@
|
|||||||
"AppName": "Nom de l'application",
|
"AppName": "Nom de l'application",
|
||||||
"CleanUrl": "URL propres",
|
"CleanUrl": "URL propres",
|
||||||
"Database": "Base de données",
|
"Database": "Base de données",
|
||||||
"DbConnectionString": "Chaîne de connexion",
|
"DbDriver": "Pilote de la base de données",
|
||||||
|
"DbHost": "Nom d'hôte",
|
||||||
|
"DbName": "Nom de la base de données",
|
||||||
"DbPassword": "Mot de passe",
|
"DbPassword": "Mot de passe",
|
||||||
|
"DbPort": "Port de la base de données",
|
||||||
"DbPrefix": "Préfixe",
|
"DbPrefix": "Préfixe",
|
||||||
"DbUser": "Utilisateur·rice",
|
"DbUser": "Utilisateur·rice",
|
||||||
"DefaultLanguage": "Langue par défaut",
|
"DefaultLanguage": "Langue par défaut",
|
||||||
@ -242,7 +266,7 @@
|
|||||||
"Poll's participation: %s": "Participation au sondage : %s",
|
"Poll's participation: %s": "Participation au sondage : %s",
|
||||||
"Someone just change your poll available at the following link %s.": "Quelqu'un·e vient de modifier votre sondage accessible au lien suivant <a href=\"%1$s\">%1$s</a>.",
|
"Someone just change your poll available at the following link %s.": "Quelqu'un·e vient de modifier votre sondage accessible au lien suivant <a href=\"%1$s\">%1$s</a>.",
|
||||||
"Someone just delete your poll %s.": "Quelqu'un·e vient de supprimer votre sondage \"%s\".",
|
"Someone just delete your poll %s.": "Quelqu'un·e vient de supprimer votre sondage \"%s\".",
|
||||||
"Thanks for filling the poll at the link above": "Merci de bien vouloir participer au sondage à l'adresse suivante",
|
"Thanks for filling the poll at the link above": "Merci de bien vouloir participer au sondage à l'adresse suivante ",
|
||||||
"Thanks for your trust.": "Merci de votre confiance.",
|
"Thanks for your trust.": "Merci de votre confiance.",
|
||||||
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Ceci est le message qui doit être envoyé aux sondé·e·s.<br/>Vous pouvez maintenant transmettre ce message à toutes les personnes susceptibles de participer au vote.",
|
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Ceci est le message qui doit être envoyé aux sondé·e·s.<br/>Vous pouvez maintenant transmettre ce message à toutes les personnes susceptibles de participer au vote.",
|
||||||
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Ce message ne doit PAS être diffusé aux sondé·e·s. Il est réservé à l'auteur·rice du sondage.<br/><br/>Vous pouvez modifier ce sondage à l'adresse suivante ",
|
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Ce message ne doit PAS être diffusé aux sondé·e·s. Il est réservé à l'auteur·rice du sondage.<br/><br/>Vous pouvez modifier ce sondage à l'adresse suivante ",
|
||||||
@ -266,24 +290,27 @@
|
|||||||
"You have to provide a password to access the poll.": "Vous devez donner le mot de passe pour avoir accès à ce sondage."
|
"You have to provide a password to access the poll.": "Vous devez donner le mot de passe pour avoir accès à ce sondage."
|
||||||
},
|
},
|
||||||
"Poll results": {
|
"Poll results": {
|
||||||
|
"%s option": "%s option",
|
||||||
"Addition": "Somme",
|
"Addition": "Somme",
|
||||||
|
"Anyone will be able to access your email address after your vote": "Tout le monde pourra accéder à votre courriel après que vous ayez voté",
|
||||||
"Best choice": "Meilleur choix",
|
"Best choice": "Meilleur choix",
|
||||||
"Best choices": "Meilleurs choix",
|
"Best choices": "Meilleurs choix",
|
||||||
"Chart": "Graphique",
|
"Chart": "Graphique",
|
||||||
"Display the chart of the results": "Afficher le graphique des résultats",
|
"Display the chart of the results": "Afficher le graphique des résultats",
|
||||||
"Edit the line: %s": "Modifier la ligne : %s",
|
"Edit the line: %s": "Modifier la ligne : %s",
|
||||||
"Link to edit this particular line": "Lien pour éditer cette ligne",
|
"Link to edit this particular line": "Lien pour éditer cette ligne",
|
||||||
"Link to edit this particular line has been copied inside the clipboard!": "The link to edit this particular line has been copied to the clipboard!",
|
"Link to edit this particular line has been copied inside the clipboard!": "Le lien pour l'édition de cette ligne a été copié dans le presse-papier !",
|
||||||
"Remove the line:": "Supprimer la ligne :",
|
"Remove the line:": "Supprimer la ligne :",
|
||||||
"Save the choices": "Enregistrer les choix",
|
"Save the choices": "Enregistrer les choix",
|
||||||
"Scroll to the left": "Faire défiler à gauche",
|
"Scroll to the left": "Faire défiler à gauche",
|
||||||
"Scroll to the right": "Faire défiler à droite",
|
"Scroll to the right": "Faire défiler à droite",
|
||||||
"The best choice at this time is:": "Pour l'instant, le choix ayant reçu le plus grand nombre de votes est :",
|
"The best choice at this time is:": "Pour l'instant, le choix ayant reçu le plus grand nombre de votes est :",
|
||||||
"The bests choices at this time are:": "Pour l'instant, les choix ayant reçu le plus grand nombre de votes sont :",
|
"The bests choices at this time are:": "Pour l'instant, les choix ayant reçu le plus grand nombre de votes sont :",
|
||||||
"Vote ifneedbe for": "Vote under reserve for",
|
"Vote ifneedbe for": "Si nécessaire",
|
||||||
"Vote no for": "Voter « non » pour",
|
"Vote no for": "Voter « non » pour",
|
||||||
"Vote yes for": "Voter « oui » pour",
|
"Vote yes for": "Voter « oui » pour",
|
||||||
"Votes of the poll": "Votes du sondage",
|
"Votes of the poll": "Votes du sondage",
|
||||||
|
"Warning : anyone can access to your email address after voting": "Warning: Anyone can see your email address after voting",
|
||||||
"polled user": "votant·e",
|
"polled user": "votant·e",
|
||||||
"polled users": "votant·e·s"
|
"polled users": "votant·e·s"
|
||||||
},
|
},
|
||||||
@ -295,6 +322,8 @@
|
|||||||
"Cancel the name edit": "Annuler le changement d'auteur·rice",
|
"Cancel the name edit": "Annuler le changement d'auteur·rice",
|
||||||
"Cancel the rules edit": "Annuler le changement de permissions",
|
"Cancel the rules edit": "Annuler le changement de permissions",
|
||||||
"Cancel the title edit": "Annuler le changement de titre",
|
"Cancel the title edit": "Annuler le changement de titre",
|
||||||
|
"Collect of the polled users email addresses": "Collec the polled users' email addresses",
|
||||||
|
"Collecting the polled users emails": "Collecting the polled users email addresses",
|
||||||
"Edit the description": "Modifier la description",
|
"Edit the description": "Modifier la description",
|
||||||
"Edit the email adress": "Modifier le courriel",
|
"Edit the email adress": "Modifier le courriel",
|
||||||
"Edit the expiration date": "Modifier la date d'expiration",
|
"Edit the expiration date": "Modifier la date d'expiration",
|
||||||
@ -305,6 +334,7 @@
|
|||||||
"Expiration date": "Date d'expiration",
|
"Expiration date": "Date d'expiration",
|
||||||
"Export to CSV": "Export Tableur (CSV)",
|
"Export to CSV": "Export Tableur (CSV)",
|
||||||
"Initiator of the poll": "Auteur·rice du sondage",
|
"Initiator of the poll": "Auteur·rice du sondage",
|
||||||
|
"No collect of the polled users email addresses": "The polled users' email addresses are not collected",
|
||||||
"No password": "Pas de mot de passe",
|
"No password": "Pas de mot de passe",
|
||||||
"Only votes are protected": "Seul les votes sont protégés",
|
"Only votes are protected": "Seul les votes sont protégés",
|
||||||
"Password protected": "Protégé par mot de passe",
|
"Password protected": "Protégé par mot de passe",
|
||||||
@ -326,12 +356,23 @@
|
|||||||
"Save the new title": "Enregistrer le nouveau titre",
|
"Save the new title": "Enregistrer le nouveau titre",
|
||||||
"Simple editor": "Editeur simple",
|
"Simple editor": "Editeur simple",
|
||||||
"Title": "Titre du sondage",
|
"Title": "Titre du sondage",
|
||||||
|
"Voters email adresses are collected": "Voters' email adresses are collected",
|
||||||
|
"Voters email adresses are collected and required": "Voters' email adresses are collected and required",
|
||||||
|
"Voters email adresses are collected, required and verified": "Voters' email adresses are collected, required and verified",
|
||||||
|
"Voters email adresses are not collected": "Voters' email adresses are not collected",
|
||||||
"Votes and comments are locked": "Il n'est plus possible de voter",
|
"Votes and comments are locked": "Il n'est plus possible de voter",
|
||||||
"Votes protected by password": "Votes protégés par mot de passe"
|
"Votes protected by password": "Votes protégés par mot de passe"
|
||||||
},
|
},
|
||||||
"Step 1": {
|
"Step 1": {
|
||||||
"All voters can modify any vote": "Tou·te·s les sondé·e·s peuvent modifier tous les votes",
|
"All voters can modify any vote": "Tou·te·s les sondé·e·s peuvent modifier tous les votes",
|
||||||
|
"Collect the polled users email addresses": "Collecting the polled users' email addresses",
|
||||||
|
"Collect users email": "Récolter les courriels des utilisateurs",
|
||||||
|
"Collect voters email": "Collect voters' email addresses",
|
||||||
"Customize the URL": "Personnaliser le lien",
|
"Customize the URL": "Personnaliser le lien",
|
||||||
|
"Email addresses are collected but not required": "Email addresses are collected but not required",
|
||||||
|
"Email addresses are not collected": "Email addresses are not collected",
|
||||||
|
"Email addresses are required": "Email addresses are required",
|
||||||
|
"Email addresses are required and verified": "Email addresses are required and verified",
|
||||||
"Go to step 2": "Aller à l'étape 2",
|
"Go to step 2": "Aller à l'étape 2",
|
||||||
"Limit the amount of voters per option": "Limiter le nombre de votant·e·s par option",
|
"Limit the amount of voters per option": "Limiter le nombre de votant·e·s par option",
|
||||||
"More informations here:": "Plus d'informations ici :",
|
"More informations here:": "Plus d'informations ici :",
|
||||||
@ -342,7 +383,7 @@
|
|||||||
"Permissions": "Permissions",
|
"Permissions": "Permissions",
|
||||||
"Poll creation (1 on 3)": "Création de sondage (1 sur 3)",
|
"Poll creation (1 on 3)": "Création de sondage (1 sur 3)",
|
||||||
"Poll id": "Lien du sondage",
|
"Poll id": "Lien du sondage",
|
||||||
"Poll id rules": "(peut contenir des lettres, des chiffres et des tirets)",
|
"Poll id rules": "(peut contenir des lettres, des chiffres et des tirets \"-\")",
|
||||||
"Poll id warning": "La modification du lien du sondage peut faciliter l'accès à ce sondage pour des personnes non désirées. Il est recommandé de le protéger par mot de passe.",
|
"Poll id warning": "La modification du lien du sondage peut faciliter l'accès à ce sondage pour des personnes non désirées. Il est recommandé de le protéger par mot de passe.",
|
||||||
"Poll password": "Mot de passe",
|
"Poll password": "Mot de passe",
|
||||||
"Poll title": "Titre du sondage",
|
"Poll title": "Titre du sondage",
|
||||||
@ -353,9 +394,11 @@
|
|||||||
"To receive an email for each new vote": "Recevoir un courriel à chaque participation",
|
"To receive an email for each new vote": "Recevoir un courriel à chaque participation",
|
||||||
"Use a password to restrict access": "Restreindre l'accès au sondage par mot de passe",
|
"Use a password to restrict access": "Restreindre l'accès au sondage par mot de passe",
|
||||||
"Value Max": "Valeur Maximale",
|
"Value Max": "Valeur Maximale",
|
||||||
"ValueMax instructions": "Votants maximum par option",
|
"ValueMax instructions": "votes par choix",
|
||||||
"Voters can modify their vote themselves": "Chaque sondé·e peut modifier son propre vote",
|
"Voters can modify their vote themselves": "Chaque sondé·e peut modifier son propre vote",
|
||||||
"Votes cannot be modified": "Aucun vote ne peut être modifié",
|
"Votes cannot be modified": "Aucun vote ne peut être modifié",
|
||||||
|
"Warning : anyone can access to the polled users's email addresses.": "Warning: Anyone can see the polled users' email addresses.",
|
||||||
|
"Warning: anyone can access the polled users email addresses since all voters can modify any vote. You should restrict permission rules.": "Warning: Anyone can see the polled users' email addresses since all voters can modify any vote. You should restrict permission rules.",
|
||||||
"You are in the poll creation section.": "Vous avez choisi de créer un nouveau sondage.",
|
"You are in the poll creation section.": "Vous avez choisi de créer un nouveau sondage.",
|
||||||
"You can enable or disable the editor at will.": "Vous pouvez activer ou désactiver l'éditeur à votre guise."
|
"You can enable or disable the editor at will.": "Vous pouvez activer ou désactiver l'éditeur à votre guise."
|
||||||
},
|
},
|
||||||
@ -412,6 +455,8 @@
|
|||||||
"As poll administrator, you can change all the lines of this poll with this button": "En tant qu'administrateur·rice, vous pouvez modifier toutes les lignes de ce sondage avec ce bouton",
|
"As poll administrator, you can change all the lines of this poll with this button": "En tant qu'administrateur·rice, vous pouvez modifier toutes les lignes de ce sondage avec ce bouton",
|
||||||
"Back to the poll": "Retour au sondage",
|
"Back to the poll": "Retour au sondage",
|
||||||
"Choice added": "Choix ajouté",
|
"Choice added": "Choix ajouté",
|
||||||
|
"Collect the emails of the polled users for the choice": "Collecte les courriels des utilisateurs pour ce choix",
|
||||||
|
"Collect the emails of the polled users for this column": "Collect the email addresses of the polled users for this column",
|
||||||
"Column removed": "Colonne supprimée",
|
"Column removed": "Colonne supprimée",
|
||||||
"Column's adding": "Ajout de colonne",
|
"Column's adding": "Ajout de colonne",
|
||||||
"Comment deleted": "Commentaire supprimé",
|
"Comment deleted": "Commentaire supprimé",
|
||||||
@ -433,7 +478,7 @@
|
|||||||
"Remove the column": "Effacer la colonne",
|
"Remove the column": "Effacer la colonne",
|
||||||
"Remove the comments": "Supprimer les commentaires",
|
"Remove the comments": "Supprimer les commentaires",
|
||||||
"Remove the votes": "Supprimer les votes",
|
"Remove the votes": "Supprimer les votes",
|
||||||
"The poll is created.": "The poll was created.",
|
"The poll is created.": "Le sondage a été créé",
|
||||||
"Vote added": "Vote ajouté",
|
"Vote added": "Vote ajouté",
|
||||||
"Vote deleted": "Vote supprimé",
|
"Vote deleted": "Vote supprimé",
|
||||||
"Vote updated": "Vote mis à jour",
|
"Vote updated": "Vote mis à jour",
|
||||||
@ -442,6 +487,14 @@
|
|||||||
"and add a new column with": "et si vous avez oublié de saisir un choix, vous pouvez rajouter une colonne en cliquant sur",
|
"and add a new column with": "et si vous avez oublié de saisir un choix, vous pouvez rajouter une colonne en cliquant sur",
|
||||||
"remove a column or a line with": "effacer une colonne ou une ligne avec"
|
"remove a column or a line with": "effacer une colonne ou une ligne avec"
|
||||||
},
|
},
|
||||||
|
"display_mails": {
|
||||||
|
"People who have answered 'If need be' to this option have left those email addresses :": "Users who voted 'If need be' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'If need be' to this option have not left any email addresses.": "Users who voted 'If need be' for this option have not left any email addresses:",
|
||||||
|
"People who have answered 'No' to this option have left those email addresses :": "Users who voted 'No' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'No' to this option have not left any email addresses.": "Users who voted 'No' for this option have not left any email addresses.",
|
||||||
|
"People who have answered 'Yes' to this option have left those email addresses :": "Users who voted 'Yes' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'Yes' to this option have not left any email addresses.": "Users who voted 'Yes' for this option have not left any email addresses."
|
||||||
|
},
|
||||||
"studs": {
|
"studs": {
|
||||||
"Adding the vote succeeded": "Ajout du vote réussi",
|
"Adding the vote succeeded": "Ajout du vote réussi",
|
||||||
"Deletion date:": "Date de suppression :",
|
"Deletion date:": "Date de suppression :",
|
||||||
|
507
locale/hu.json
Normal file
507
locale/hu.json
Normal file
@ -0,0 +1,507 @@
|
|||||||
|
{
|
||||||
|
"1st section": {
|
||||||
|
"Define dates or subjects to choose": "Választható időpontok vagy témák megadása",
|
||||||
|
"Discuss and make a decision": "Megbeszélés és döntéshozás",
|
||||||
|
"Do you want to": "Szeretnél",
|
||||||
|
"Framadate is an online service for planning an appointment or make a decision quickly and easily. No registration is required.": "A Framadate egy online szolgáltatás találkozók egyeztetésére vagy döntések gyors és egyszerű meghozására. Regisztráció nem szükséges.",
|
||||||
|
"Here is how it works:": "Így működik:",
|
||||||
|
"Make a poll": "Szavazás létrehozása",
|
||||||
|
"Send the poll link to your friends or colleagues": "Szavazás elküldése ismerősöknek vagy kollégáknak",
|
||||||
|
"What is that?": "Mi a Framadate?",
|
||||||
|
"view an example?": "látni egy példát?"
|
||||||
|
},
|
||||||
|
"2nd section": {
|
||||||
|
"CeCILL-B license": "CeCILL-B licenc",
|
||||||
|
"Framadate was initially based on ": "A Framadate eredetileg a Strasbourgi Egyetem által fejlesztett ",
|
||||||
|
"It is governed by the": "A Framadate licence: ",
|
||||||
|
"The software": "A szoftver",
|
||||||
|
"This software needs javascript and cookies enabled. It is compatible with the following web browsers:": "A szoftver futtatásához JavaScript és a sütik engedélyezése szükséges. A következő webböngészőkkel kompatibilis:",
|
||||||
|
"a software developed by the University of Strasbourg. Today, it is devevoped by the association Framasoft.": "szoftveren alapult, de most már a Framasoft fejleszti."
|
||||||
|
},
|
||||||
|
"3rd section": {
|
||||||
|
"Cultivate your garden": "Neveld a sajátod",
|
||||||
|
"If you want to install the software for your own use and thus increase your independence, we help you on:": "Ha szeretnéd magadnak telepíteni a szoftvert saját használatra, ezzel is növelve a függetlenségedet, akkor a következő oldalon kaphatsz ehhez segítséget:",
|
||||||
|
"To participate in the software development, suggest improvements or simply download it, please visit ": "Ahhoz, hogy részt vegyél a fejlesztésben, fejlesztéseket javasolj vagy egyszerűen csak letöltsd a szoftvert, látogass el a",
|
||||||
|
"the development site": "fejlesztési oldalra"
|
||||||
|
},
|
||||||
|
"Admin": {
|
||||||
|
"Actions": " Műveletek",
|
||||||
|
"Administration": "Adminisztráció",
|
||||||
|
"Author": "Szerző",
|
||||||
|
"Back to administration": "Vissza az adminisztrációhoz",
|
||||||
|
"Change the poll": "Szavazás módosítása",
|
||||||
|
"Confirm removal of the poll": "A szavazás eltávolításának megerősítése",
|
||||||
|
"Deleted the poll": "Szavazás törölve",
|
||||||
|
"Email": "E-mail",
|
||||||
|
"Executed": "Végrehajtva",
|
||||||
|
"Expiration date": "Lejárati idő",
|
||||||
|
"Fail": "Sikertelen",
|
||||||
|
"Failed:": "Sikertelen:",
|
||||||
|
"Format": "Formátum",
|
||||||
|
"Installation": "Telepítés",
|
||||||
|
"Logs": "Naplók",
|
||||||
|
"Migration": "Áttelepítés",
|
||||||
|
"Nothing": "Semmi",
|
||||||
|
"Pages:": "Oldalak:",
|
||||||
|
"Poll ID": "Szavazásazonosító",
|
||||||
|
"Polls": "Szavazások",
|
||||||
|
"Purge": "Törlés",
|
||||||
|
"Purge the polls": "Szavazások törlése",
|
||||||
|
"Purged:": "Törölve:",
|
||||||
|
"See the poll": "Szavazás megtekintése",
|
||||||
|
"Skipped:": "Kihagyva:",
|
||||||
|
"Status": "Állapot",
|
||||||
|
"Succeeded:": "Sikeres:",
|
||||||
|
"Success": "Sikeres",
|
||||||
|
"Summary": "Összegzés",
|
||||||
|
"Title": "Cím",
|
||||||
|
"Votes": "Szavazatok",
|
||||||
|
"Waiting": "Várakozás",
|
||||||
|
"polls in the database at this time": "szavazás van most az adatbázisban"
|
||||||
|
},
|
||||||
|
"Check": {
|
||||||
|
"Check again": "Ellenőrizd újra",
|
||||||
|
"Consider enabling the PHP extension OpenSSL for increased security.": "Fontold meg az OpenSSL PHP kiterjesztés engedélyezését a növelt biztonság érdekében.",
|
||||||
|
"Consider setting the date.timezone in php.ini.": "Fontold meg a data.timezone megadását a php.ini fájlban.",
|
||||||
|
"Consider setting « session.cookie_httponly = 1 » inside your php.ini or add « php_value session.cookie_httponly 1 » to your .htaccess so that cookies can't be accessed through Javascript.": "Fontold meg a „session.cookie_httponly = 1” beállítását a php.ini fájlban, vagy add hozzá a „php_value session.cookie_httponly 1” szöveget a .htaccess fájlhoz, hogy a sütiket ne lehessen Javascripten keresztül elérni.",
|
||||||
|
"Continue the installation": "Telepítés folytatása",
|
||||||
|
"Cookies are served from HTTP only.": "A sütik csak HTTP felől kerülnek kiszolgálásra",
|
||||||
|
"Installation checking": "Telepítés ellenőrzése",
|
||||||
|
"OpenSSL extension loaded.": "OpenSSL kiterjesztés betöltve.",
|
||||||
|
"PHP Intl extension is enabled.": "PHP Intl kiterjesztés engedélyezve.",
|
||||||
|
"PHP version %s is enough (needed at least PHP %s).": "A PHP %s elégséges (legalább PHP %s szükséges).",
|
||||||
|
"The config file directory (%s) is not writable and the config file (%s) does not exists.": "A konfigurációs fájl könyvtára (%s) nem írható, és a konfigurációs fájl (%s) nem létezik.",
|
||||||
|
"The config file directory (%s) is writable.": "A konfigurációs fájl könyvtára (%s) írható.",
|
||||||
|
"The config file exists.": "A konfigurációs fájl létezik.",
|
||||||
|
"The template compile directory (%s) doesn't exist in \"%s\". Retry the installation process.": "A sablonok fordítási könyvtára (%s) nem létezik itt: „%s”. Kezdd újra a telepítési folyamatot.",
|
||||||
|
"The template compile directory (%s) is not writable.": "A sablonok fordítási könyvtára (%s) nem írható.",
|
||||||
|
"The template compile directory (%s) is writable.": "A sablonok fordítási könyvtára (%s) írható.",
|
||||||
|
"You need to enable the PHP Intl extension.": "Engedélyezned kell a PHP Intl kiterjesztést.",
|
||||||
|
"Your PHP version (%s) is too old. This application needs at least PHP %s.": "A PHP %s túl régi. Az alkalmazáshoz legalább PHP %s szükséges.",
|
||||||
|
"date.timezone is set.": "date.timezone beállítva."
|
||||||
|
},
|
||||||
|
"Comments": {
|
||||||
|
"Add a comment to the poll": "Hozzászólás hozzáadása a szavazáshoz.",
|
||||||
|
"Comment added": "Hozzászólás mentve",
|
||||||
|
"Comments of polled people": "Hozzászólások",
|
||||||
|
"Remove the comment": "Hozzászólás eltávolítása",
|
||||||
|
"Send the comment": "Hozzászólás beküldése",
|
||||||
|
"Type your name and a comment to send it": "Az űrlap elküldése előtt add meg neved és a hozzászólásod",
|
||||||
|
"Your comment": "Hozzászólás",
|
||||||
|
"anonyme": "névtelen"
|
||||||
|
},
|
||||||
|
"Date": {
|
||||||
|
"Add range dates": "Időintervallum hozzáadása",
|
||||||
|
"DATE": "%Y.%m.%d.",
|
||||||
|
"DATETIME": "%Y.%m.%d. %H:%M",
|
||||||
|
"DAY": "%e., %a",
|
||||||
|
"End date": "Záró dátum",
|
||||||
|
"FULL": "%Y. %B %e., %A",
|
||||||
|
"MONTH_YEAR": "%Y %B",
|
||||||
|
"Max dates count": "Legfeljebb 4 hónapot válaszhatsz",
|
||||||
|
"SHORT": "%Y. %B %e., %A",
|
||||||
|
"Start date": "Kezdő dátum",
|
||||||
|
"datepicker": "yyyy.mm.dd.",
|
||||||
|
"datetime_parseformat": "Y.m.d.",
|
||||||
|
"dd/mm/yyyy": "yyyy.mm.dd."
|
||||||
|
},
|
||||||
|
"EditLink": {
|
||||||
|
"Edit link for poll \"%s\"": "A(z) „%s” szavazás hivatkozásának szerkesztése",
|
||||||
|
"Here is the link for editing your vote:": "A szavazatod szerkesztéséhez szükséges hivatkozás:",
|
||||||
|
"If you don't want to lose your personalized link, we can send it to your email.": "Ha szeretnéd, elküldhetjük e-mailben a személyre szabott hivatkozásodat. ",
|
||||||
|
"Please wait %d seconds before we can send an email to you then try again.": "Várj %d másodpercet mielőtt elküldjük neked az e-mailt, aztán próbáld újra.",
|
||||||
|
"REMINDER": "EMLÉKEZTETŐ",
|
||||||
|
"Send": "Elküldés",
|
||||||
|
"The email address is not correct.": "Az e-mail cím helytelen.",
|
||||||
|
"Your reminder has been successfully sent!": "Az emlékeztető sikeresen elküldve!"
|
||||||
|
},
|
||||||
|
"Error": {
|
||||||
|
"Adding vote failed": "Szavazat hozzáadása sikertelen",
|
||||||
|
"CANT_CONNECT_TO_DATABASE": "Nem sikerült csatlakozni az adatbázishoz",
|
||||||
|
"Can't create an empty column.": "Üres oszlop nem hozható létre.",
|
||||||
|
"Can't create the config.php file in '%s'.": "Nem hozató létre a config.php fájl itt: „%s”.",
|
||||||
|
"Comment failed": "Hozzászólás sikertelen",
|
||||||
|
"Cookies are disabled on your browser. Theirs activation is required to create a poll.": "A sütik le vannak tiltva a böngésződben. Engedélyezni kell őket a szavazás létrehozásához.",
|
||||||
|
"Enter a name": "Adj meg egy nevet",
|
||||||
|
"Enter a name and a comment!": "Adj meg egy nevet és a hozzászólásod.",
|
||||||
|
"Enter a title": "Adj meg egy címet",
|
||||||
|
"Enter an email address": "Adj meg egy e-mail címet",
|
||||||
|
"Error on amount of voters limitation : value must be an integer greater than 0": "Hiba a szavazatszám korlátozásában: az érték 0-nál nagyobb egész szám kell legyen",
|
||||||
|
"Error!": "Hiba!",
|
||||||
|
"Failed to delete all comments": "Az összes hozzászólás törlése sikertelen",
|
||||||
|
"Failed to delete all votes": "Az összes szavazat törlése sikertelen",
|
||||||
|
"Failed to delete column": "Oszlop törlése sikertelen",
|
||||||
|
"Failed to delete the comment": "Hozzászólás törlése sikertelen",
|
||||||
|
"Failed to delete the poll": "Szavazás törlése sikertelen",
|
||||||
|
"Failed to delete the vote!": "Szavazat törlése sikertelen.",
|
||||||
|
"Failed to insert the comment!": "Hozzászólás beszúrása sikertelen.",
|
||||||
|
"Failed to save poll": "A szavazás mentése sikertelen",
|
||||||
|
"Forbidden!": "Tiltott.",
|
||||||
|
"Framadate is not properly installed, please check the \"INSTALL\" to setup the database before continuing.": "A Framadate nincs helyesen telepítve, a folytatás előtt az adatbázis beállítási utasításokért nézd meg az „INSTALL” fájlt.",
|
||||||
|
"Javascript is disabled on your browser. Its activation is required to create a poll.": "A JavaScript le van tiltva a böngésződben. Engedélyezni kell a szavazás létrehozásához.",
|
||||||
|
"MISSING_VALUES": "Hiányzó értékek",
|
||||||
|
"No polls found": "A szavazás nem található",
|
||||||
|
"Password is empty": "A jelszó üres.",
|
||||||
|
"Passwords do not match": "A jelszavak nem egyeznek.",
|
||||||
|
"Poll has been updated before you vote": "A szavazás frissítve lett mielőtt szavaztál",
|
||||||
|
"Poll id already used": "Az azonosító már használatban van",
|
||||||
|
"Something is going wrong...": "Valami hiba történt…",
|
||||||
|
"Something is wrong with the format": "Valami baj van a formátummal",
|
||||||
|
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Valami baj van a formátummal: a személyre szabott URL csak alfanumerikus karaktereket és kötőjeleket tartalmazhat",
|
||||||
|
"Something is wrong with the format: name shouldn't have any spaces before or after": "Valami baj van a formátummal: a név elején és végén nem lehetnek szóközök",
|
||||||
|
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "A cím nem megfelelő. Érvényes e-mail címet kell megadj (pl. r.stallman@outlock.com), hogy el tudjuk küldeni a szavazáshoz tartozó hivatkozást.",
|
||||||
|
"The column already exists": "Az oszlop már létezik",
|
||||||
|
"The name is invalid.": "A név érvénytelen.",
|
||||||
|
"The name you've chosen already exist in this poll!": "A választott név már szerepel ebben a szavazásban.",
|
||||||
|
"There is a problem with your choices": "Probléma van a választásaiddal",
|
||||||
|
"This id is not allowed": "Az azonosító nem engedélyezett",
|
||||||
|
"This poll doesn't exist !": "Ez a szavazás nem létezik.",
|
||||||
|
"Update vote failed": "Szavazat frissítése sikertelen",
|
||||||
|
"You already voted": "Már szavaztál",
|
||||||
|
"You can't create a poll with hidden results with the following edition option:": "Nem hozhatsz létre rejtett eredményű szavazást a következő beállítással:",
|
||||||
|
"You can't select more than %d dates": "Nem választhatsz ki többet %d dátumnál",
|
||||||
|
"You haven't filled the first section of the poll creation, or your session has expired.": "Nem töltötted ki a szavazás létrehozás első szakaszát, vagy lejárt a munkameneted.",
|
||||||
|
"You haven't filled the first section of the poll creation.": "Nem töltötted ki a szavazás első szakaszát.",
|
||||||
|
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "A szavazatod nem lett beleszámítva, mert valaki időközben szavazott, és ez ütközik a választásaiddal és a szavazás feltételeivel. Próbáld újra."
|
||||||
|
},
|
||||||
|
"FindPolls": {
|
||||||
|
"Address": "Cím",
|
||||||
|
"Created polls": "Létrehozott szavazások",
|
||||||
|
"Have a good day!": "Legyen szép napod!",
|
||||||
|
"Here is the list of the polls that you manage on %s:": "Ez a szavazások listája, amit a %s alkalmazásban kezelsz:",
|
||||||
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Ha nem te voltál, és úgy gondolod hogy ez visszaélés, akkor értesítsd az adminisztrátort a(z) %s e-email címen.",
|
||||||
|
"Last access date": "Legutóbbi elérés ideje",
|
||||||
|
"List of your polls": "Szavazásaid listája",
|
||||||
|
"Local Storage Help": "Hogy segítsünk megtalálni az előző szavazásaidat, minden szavazást elmentünk a böngésződben. Ez az adat csak a böngészőben kerül mentése. A következő adatokról van szó:",
|
||||||
|
"Local Storage Help Delete": "Az adatok törléséhez kattintson a kuka ikonra a megfelelő sorban, vagy kattints a „szavazások indexének törlése” lehetőségre. Ez nem törli a szavazásaidat.",
|
||||||
|
"Local Storage Help Information Accessed": "Az időpont, amikor létrehoztad vagy legutóbb elérted a szavazást",
|
||||||
|
"Local Storage Help Information Address": "A címe",
|
||||||
|
"Local Storage Help Information Title": "A szavazás címe",
|
||||||
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "UI: ez az e-mail azért lett elküldve, mert Te – vagy valaki más – kérte az erről az e-email címről létrehozott szavazások listáját. ",
|
||||||
|
"Polls saved inside this browser": "Az ebben a böngészőben mentett szavazások",
|
||||||
|
"Polls sent": "Szavazások listája elküldve",
|
||||||
|
"Remove all polls from this browser": "Az összes szavazás eltávolítása a böngésző indexéből",
|
||||||
|
"Remove poll from index": "Szavazás eltávolítása az indexből",
|
||||||
|
"Send me my polls": "Szavazások elküldése",
|
||||||
|
"Send my polls by email": "Szavazások elküldése e-mailben",
|
||||||
|
"There are no polls saved inside your browser yet": "Még nincsenek szavazások mentve a böngésződben",
|
||||||
|
"Title": "Cím",
|
||||||
|
"Visited polls": "Meglátogatott szavazások"
|
||||||
|
},
|
||||||
|
"Generic": {
|
||||||
|
"(in the format name@mail.com)": "(name@mail.com formátumban)",
|
||||||
|
"ASTERISK": "*",
|
||||||
|
"Add": "Hozzáadás",
|
||||||
|
"Back": "Vissza",
|
||||||
|
"Back to the homepage of": "Vissza a következő weboldalra:",
|
||||||
|
"Cancel": "Mégse",
|
||||||
|
"Caption": "Információ",
|
||||||
|
"Choice": "Választás",
|
||||||
|
"Classic": "Klasszikus",
|
||||||
|
"Close": "Bezárás",
|
||||||
|
"Creation date:": "Létrehozási idő:",
|
||||||
|
"Date": "Dátum",
|
||||||
|
"Day": "Nap",
|
||||||
|
"Description": "Leírás",
|
||||||
|
"Edit": "Szerkesztés",
|
||||||
|
"Framadate is an online service for planning an appointment or make a decision quickly and easily.": "A Framadate egy online szolgáltatás találkozók egyeztetésére vagy döntések gyors és egyszerű meghozására.",
|
||||||
|
"Home": "Kezdőlap",
|
||||||
|
"Ifneedbe": "Feltételes",
|
||||||
|
"Legend:": "Jelmagyarázat:",
|
||||||
|
"Link": "Hivatkozás",
|
||||||
|
"Make your polls": "Hozd létre a saját szavazásaid",
|
||||||
|
"Markdown": "Markdown",
|
||||||
|
"Next": "Következő",
|
||||||
|
"No": "Nem",
|
||||||
|
"Page generated in": "Az oldal előállítva:",
|
||||||
|
"Poll": "Szavazás",
|
||||||
|
"Remove": "Eltávolítás",
|
||||||
|
"Save": "Mentés",
|
||||||
|
"Search": "Keresés",
|
||||||
|
"Time": "Idő",
|
||||||
|
"Validate": "Érvényesítés",
|
||||||
|
"Yes": "Igen",
|
||||||
|
"Your email address": "Az e-mail címed",
|
||||||
|
"Your name": "Neved",
|
||||||
|
"days": "nap",
|
||||||
|
"for": "ennél:",
|
||||||
|
"months": "hónap",
|
||||||
|
"seconds": "másodperc",
|
||||||
|
"vote": "szavazat alapján",
|
||||||
|
"votes": "szavazat alapján",
|
||||||
|
"with": "–"
|
||||||
|
},
|
||||||
|
"Homepage": {
|
||||||
|
"Make a classic poll": "Szokásos szavazás létrehozása",
|
||||||
|
"Schedule an event": "Esemény ütemezése",
|
||||||
|
"Where are my polls": "Hol vannak a szavazásaim?"
|
||||||
|
},
|
||||||
|
"Installation": {
|
||||||
|
"AppMail": "Adminisztrátor e-mail címe",
|
||||||
|
"AppName": "Alkalmazás neve",
|
||||||
|
"CleanUrl": "Tiszta URL",
|
||||||
|
"Database": "Adatbázis neve",
|
||||||
|
"DbDriver": "Adatbázis-meghajtó",
|
||||||
|
"DbHost": "Adatbázis gépneve",
|
||||||
|
"DbName": "Adatbázis neve",
|
||||||
|
"DbPassword": "Jelszó",
|
||||||
|
"DbPort": "Adatbázis portja",
|
||||||
|
"DbPrefix": "Előtag",
|
||||||
|
"DbUser": "Felhasználó",
|
||||||
|
"DefaultLanguage": "Alapértelmezett nyelv",
|
||||||
|
"General": "Általános",
|
||||||
|
"Install": "Telepítés",
|
||||||
|
"MigrationTable": "Áttelepítési tábla",
|
||||||
|
"ResponseMail": "Válasz e-mail cím"
|
||||||
|
},
|
||||||
|
"Language selector": {
|
||||||
|
"Change the language": "Nyelv módosítása",
|
||||||
|
"Select the language": "Válassz nyelvet"
|
||||||
|
},
|
||||||
|
"Mail": {
|
||||||
|
"Author's message": "Üzenet a szerzőnek",
|
||||||
|
"FOOTER": "„Az út hosszú, de út tiszta…”<br/>A Framasoft csak az adományaitokból él.<br/>Előre is köszönjük a támogatásodat itt: https://soutenir.framasoft.org",
|
||||||
|
"For sending to the polled users": "Résztvevői hivatkozás",
|
||||||
|
"Notification of poll: %s": "Szavazás értesítése: %s",
|
||||||
|
"Poll's participation: %s": "Részvétel a szavazásban: %s",
|
||||||
|
"Someone just change your poll available at the following link %s.": "Valaki épp módosította a szavazásodat a <a href=\"%1$s\">%1$s</a> hivatkozáson.",
|
||||||
|
"Someone just delete your poll %s.": "Valaki letörölte a(z) „%s” szavazásod.",
|
||||||
|
"Thanks for filling the poll at the link above": "Köszönjük, hogy részt vettél az alábbi hivatkozás mentén elérhető szavazásban",
|
||||||
|
"Thanks for your trust.": "Köszönjük a bizalmat.",
|
||||||
|
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Ez a résztvevőknek küldendő üzenet.",
|
||||||
|
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Ezt az e-mailt NE továbbítsd a szavazás résztvevőinek, hanem tartsd titokban. <br/><br/>A következő hivatkozást követve módosíthatod a szavazást",
|
||||||
|
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Megváltoztattad a szavazásod beállításait. <br/> A következő hivatkozást felkeresve módosíthatod a szavazás beállításait",
|
||||||
|
"[ADMINISTRATOR] New settings for your poll": "[ADMINISZTRÁTOR] Új beállítások a szavazásodhoz",
|
||||||
|
"filled a vote.\nYou can find your poll at the link": "szavazott.<br/>A következő hivatkozással keresheted fel a szavazást",
|
||||||
|
"hast just created a poll called": "létrehozott egy szavazást",
|
||||||
|
"updated a vote.\nYou can find your poll at the link": "frissített egy szavazatot.<br/>A következő hivatkozással keresheted fel a szavazást",
|
||||||
|
"wrote a comment.\nYou can find your poll at the link": "írt egy hozzászólást.<br/>A következő hivatkozással keresheted fel a szavazást"
|
||||||
|
},
|
||||||
|
"Maintenance": {
|
||||||
|
"Thank you for your understanding.": "Köszönjük a megértést.",
|
||||||
|
"The application": "Az alkalmazás",
|
||||||
|
"is currently under maintenance.": "jelenleg karbantartás alatt van."
|
||||||
|
},
|
||||||
|
"Password": {
|
||||||
|
"Password": "Jelszó",
|
||||||
|
"Submit access": "Hozzáférés beküldése",
|
||||||
|
"Wrong password": "Hibás jelszó",
|
||||||
|
"You have to provide a password so you can participate to the poll.": "A szavazásban való részvételhez meg kell adj egy jelszót.",
|
||||||
|
"You have to provide a password to access the poll.": "A szavazáshoz való hozzáféréshez meg kell adj egy jelszót."
|
||||||
|
},
|
||||||
|
"Poll results": {
|
||||||
|
"%s option": "%s lehetőség",
|
||||||
|
"Addition": "Összesen",
|
||||||
|
"Anyone will be able to access your email address after your vote": "Ha szavazol, akkor az e-mail címed bárki megtekintheti",
|
||||||
|
"Best choice": "Legjobb választás",
|
||||||
|
"Best choices": "Legjobb választások",
|
||||||
|
"Chart": "Grafikon",
|
||||||
|
"Display the chart of the results": "Eredmény grafikus ábrázolása",
|
||||||
|
"Edit the line: %s": "Sor szerkesztése: %s",
|
||||||
|
"Link to edit this particular line": "Hivatkozás ennek a sornak a szerkesztéséhez",
|
||||||
|
"Link to edit this particular line has been copied inside the clipboard!": "Az adott sor szerkesztéséhez szükséges hivatkozás a vágólapra lett másolva.",
|
||||||
|
"Remove the line:": "Sor eltávolítása:",
|
||||||
|
"Save the choices": "Szavazatok mentése",
|
||||||
|
"Scroll to the left": "Görgetés balra",
|
||||||
|
"Scroll to the right": "Görgetés jobbra",
|
||||||
|
"The best choice at this time is:": "Jelenlegi legjobb lehetőség:",
|
||||||
|
"The bests choices at this time are:": "Jelenlegi legjobb lehetőségek:",
|
||||||
|
"Vote ifneedbe for": "Feltételes szavazatok ennél:",
|
||||||
|
"Vote no for": "„Nem” szavazat a következőre: ",
|
||||||
|
"Vote yes for": "„Igen” szavazat a következőre:",
|
||||||
|
"Votes of the poll": "Szavazatok",
|
||||||
|
"Warning : anyone can access to your email address after voting": "Figyelmeztetés: szavazás után bárki hozzáférhet az e-mail címedhez",
|
||||||
|
"polled user": "szavazó",
|
||||||
|
"polled users": "szavazó"
|
||||||
|
},
|
||||||
|
"PollInfo": {
|
||||||
|
"Admin link of the poll": "Adminisztrációs hivatkozás a szavazáshoz",
|
||||||
|
"Cancel the description edit": "Leírás szerkesztésének elvetése",
|
||||||
|
"Cancel the email address edit": "E-mail cím szerkesztésének elvetése",
|
||||||
|
"Cancel the expiration date edit": "Lejárati idő szerkesztésének visszavonása",
|
||||||
|
"Cancel the name edit": "Név szerkesztésének elvetése",
|
||||||
|
"Cancel the rules edit": "Szabály szerkesztésének elvetése",
|
||||||
|
"Cancel the title edit": "Cím szerkesztésének elvetése",
|
||||||
|
"Collect of the polled users email addresses": "A megkérdezett felhasználók e-mail címének gyűjtése",
|
||||||
|
"Collecting the polled users emails": "A megkérdezett felhasználók e-mail címének gyűjtése",
|
||||||
|
"Edit the description": "Leírás szerkesztése",
|
||||||
|
"Edit the email adress": "E-mail cím szerkesztése",
|
||||||
|
"Edit the expiration date": "Lejárati idő szerkesztése",
|
||||||
|
"Edit the name": "Név szerkesztése",
|
||||||
|
"Edit the poll rules": "Szabály szerkesztése",
|
||||||
|
"Edit the title": "Cím szerkesztése",
|
||||||
|
"Email": "E-mail",
|
||||||
|
"Expiration date": "Lejárati idő",
|
||||||
|
"Export to CSV": "Exportálás CSV fájlba",
|
||||||
|
"Initiator of the poll": "Szavazás létrehozója",
|
||||||
|
"No collect of the polled users email addresses": "A megkérdezett felhasználók e-mail címe nem lesz gyűjtve",
|
||||||
|
"No password": "Nincs jelszó",
|
||||||
|
"Only votes are protected": "Csak a szavazatok védettek",
|
||||||
|
"Password protected": "Jelszóval védett",
|
||||||
|
"Poll rules": "Szavazási szabályok",
|
||||||
|
"Print": "Nyomtatás",
|
||||||
|
"Public link of the poll": "Nyilvános hivatkozás a szavazáshoz",
|
||||||
|
"Remove all the comments": "Összes hozzászólás törlése",
|
||||||
|
"Remove all the votes": "Összes szavazat törlése",
|
||||||
|
"Remove password": "Jelszó törlése",
|
||||||
|
"Remove the poll": "Szavazás törlése",
|
||||||
|
"Results are hidden": "A szavazatok rejtettek",
|
||||||
|
"Results are visible": "A szavazatok nyilvánosak",
|
||||||
|
"Rich editor": "Részletes szerkesztő",
|
||||||
|
"Save the description": "Leírás mentése",
|
||||||
|
"Save the email address": "E-mail cím mentése",
|
||||||
|
"Save the new expiration date": "Új lejárati idő mentése",
|
||||||
|
"Save the new name": "Új név mentése",
|
||||||
|
"Save the new rules": "Új szabályok mentése",
|
||||||
|
"Save the new title": "Új cím mentése",
|
||||||
|
"Simple editor": "Egyszerű szerkesztő",
|
||||||
|
"Title": "A szavazás címe",
|
||||||
|
"Voters email adresses are collected": "A szavazók e-mail címe gyűjtve lesz",
|
||||||
|
"Voters email adresses are collected and required": "A szavazók e-mail címe kötelező jelleggel gyűjtve lesz",
|
||||||
|
"Voters email adresses are collected, required and verified": "A szavazók e-mail címe kötelező jelleggel gyűjtve lesz, és megerősítés is szükséges",
|
||||||
|
"Voters email adresses are not collected": "A szavazók e-mail címe nem lesz gyűjtve",
|
||||||
|
"Votes and comments are locked": "Szavazás és hozzászólások lezárása",
|
||||||
|
"Votes protected by password": "A szavazatok jelszóval védettek"
|
||||||
|
},
|
||||||
|
"Step 1": {
|
||||||
|
"All voters can modify any vote": "Minden szavazó bármelyik szavazatot módosíthatja",
|
||||||
|
"Collect the polled users email addresses": "Szavazók e-mail címének gyűjtése",
|
||||||
|
"Collect users email": "Felhasználók e-mail címének gyűjtése",
|
||||||
|
"Collect voters email": "Szavazók e-mail címének gyűjtése",
|
||||||
|
"Customize the URL": "URL személyre szabása",
|
||||||
|
"Email addresses are collected but not required": "Az e-mail cím nem kötelező jelleggel lesz gyűjtve",
|
||||||
|
"Email addresses are not collected": "Az e-mail cím nem lesz gyűjtve",
|
||||||
|
"Email addresses are required": "Az e-mail cím megadása kötelező",
|
||||||
|
"Email addresses are required and verified": "Az e-mail cím megadása kötelező, és megerősítés is szükséges",
|
||||||
|
"Go to step 2": "Tovább a 2. lépéshez",
|
||||||
|
"Limit the amount of voters per option": "Szavazatok lehetőségenkénti számának korlátozása",
|
||||||
|
"More informations here:": "További információk itt:",
|
||||||
|
"Only the poll maker can see the poll's results": "Csak a szavazás készítője láthatja az eredményt",
|
||||||
|
"Optional parameters": "Nem kötelező paraméterek",
|
||||||
|
"Password choice": "Megadás",
|
||||||
|
"Password confirmation": "Megerősítés",
|
||||||
|
"Permissions": "Engedélyek",
|
||||||
|
"Poll creation (1 on 3)": "Szavazás létrehozása (1/3)",
|
||||||
|
"Poll id": "Hivatkozás a szavazáshoz",
|
||||||
|
"Poll id rules": "Az azonosító betűket, számokat és kötőjeleket („-”) tartalmazhat.",
|
||||||
|
"Poll id warning": "Az azonosító megadásával a nemkívánatos személyek is könnyebben hozzáférhetnek a szavazáshoz. Javasolt jelszóval védeni.",
|
||||||
|
"Poll password": "Jelszó",
|
||||||
|
"Poll title": "Szavazás címe",
|
||||||
|
"Required fields cannot be left blank.": "A kötelező mezők nem maradhatnak üresen.",
|
||||||
|
"The results are publicly visible": "Az eredmények nyilvánosan láthatóak",
|
||||||
|
"To make the description more attractive, you can use the Markdown format.": "Markdown formátumot is használhatsz a leírás vonzóbbá tételéhez. ",
|
||||||
|
"To receive an email for each new comment": "E-mail értesítés küldése minden egyes hozzászóláskor",
|
||||||
|
"To receive an email for each new vote": "E-mail értesítés küldése minden egyes szavazatkor",
|
||||||
|
"Use a password to restrict access": "Hozzáférés korlátozása jelszóval",
|
||||||
|
"Value Max": "Érték maximuma",
|
||||||
|
"ValueMax instructions": "lehetőségenkénti szavazatok száma",
|
||||||
|
"Voters can modify their vote themselves": "A szavazók módosíthatják a saját szavazataikat",
|
||||||
|
"Votes cannot be modified": "A szavazatokat nem lehet módosítani",
|
||||||
|
"Warning : anyone can access to the polled users's email addresses.": "Figyelmeztetés: bárki hozzáférhet a szavazók e-mail címeihez.",
|
||||||
|
"Warning: anyone can access the polled users email addresses since all voters can modify any vote. You should restrict permission rules.": "Figyelmeztetés: Bárki láthatja a szavazók e-mail címeit, mert bármely szavazó bármelyik szavazatot módosíthatja. Célszerű korlátozni a jogosultsági szabályokat.",
|
||||||
|
"You are in the poll creation section.": "A szavazás létrehozási szakaszban vagy.",
|
||||||
|
"You can enable or disable the editor at will.": "Kedvedre ki- vagy bekapcsolhatod a szerkesztőt."
|
||||||
|
},
|
||||||
|
"Step 2": {
|
||||||
|
"Back to step 1": "Vissza az 1. lépéshez",
|
||||||
|
"Go to step 3": "Tovább a 3. lépéshez"
|
||||||
|
},
|
||||||
|
"Step 2 classic": {
|
||||||
|
"Add a choice": "Lehetőség hozzáadása",
|
||||||
|
"Add a link or an image": "Hivatkozás vagy kép hozzáadása",
|
||||||
|
"Alternative text": "Alternatív szöveg",
|
||||||
|
"It's possible to propose links or images by using": "Hivatkozásokat és képeket a következő módon lehet beágyazni:",
|
||||||
|
"Poll subjects (2 on 3)": "Szavazási beállítások (2/3)",
|
||||||
|
"Remove a choice": "Lehetőség eltávolítása",
|
||||||
|
"These fields are optional. You can add a link, an image or both.": "Ezek nem kötelező mezők. Itt megadhatsz egy hivatkozást, egy képet vagy mindkettőt.",
|
||||||
|
"To make a generic poll you need to propose at least two choices between differents subjects.": "Egy szavazás létrehozásához legalább két lehetőséget kell megadni.",
|
||||||
|
"URL of the image": "A kép URL-e",
|
||||||
|
"You can add or remove additional choices with the buttons": "A gombokkal adhatsz hozzá és vehetsz el lehetőségeket",
|
||||||
|
"the Markdown syntax": "Markdown szintaxis"
|
||||||
|
},
|
||||||
|
"Step 2 date": {
|
||||||
|
"Add a day": "Nap hozzáadása",
|
||||||
|
"Add an hour": "Idősáv hozzáadása",
|
||||||
|
"Choose the dates of your poll": "Válassz dátumokat a szavazáshoz",
|
||||||
|
"Copy hours of the first day": "Idősávok átmásolása az első napból",
|
||||||
|
"For each selected day, you can choose, or not, meeting hours (e.g.: \"8h\", \"8:30\", \"8h-10h\", \"evening\", etc.)": "Minden egyes napnál szabadon adhatsz meg találkozási időket (például „8h”, „8:30”, „8h-10h”, „este” stb.)",
|
||||||
|
"Poll dates (2 on 3)": "Szavazási dátumok (2/3)",
|
||||||
|
"Remove a day": "Nap eltávolítása",
|
||||||
|
"Remove all days": "Összes nap eltávolítása",
|
||||||
|
"Remove all hours": "Összes idősáv eltávolítása",
|
||||||
|
"Remove an hour": "Idősáv eltávolítása",
|
||||||
|
"Remove this day": "Nap eltávolítása",
|
||||||
|
"To schedule an event you need to propose at least two choices (two hours for one day or two days).": "Egy esemény ütemezéséhez legalább két lehetőséget kell megadni (azaz két idősávot egy nap, vagy két napot).",
|
||||||
|
"You can add or remove additionnal days and hours with the buttons": "A gombokkal további napokat és idősávokat adhatsz hozzá."
|
||||||
|
},
|
||||||
|
"Step 3": {
|
||||||
|
"Archiving date:": "Lejárati idő:",
|
||||||
|
"Back to step 2": "Vissza a 2. lépéshez",
|
||||||
|
"Confirm the creation of your poll": "A szavazás létrehozásának megerősítése",
|
||||||
|
"Create the poll": "Szavazás létrehozása",
|
||||||
|
"List of your choices": "Lehetőségek listája",
|
||||||
|
"Once you have confirmed the creation of your poll, you will be automatically redirected on the administration page of your poll.": "Ha megerősíted a szavazás létrehozását, automatikusan át leszel irányítva a szavazás adminisztrációs oldalára.",
|
||||||
|
"Removal date and confirmation (3 on 3)": "Eltávolítási idő és megerősítés (3/3)",
|
||||||
|
"Then, you will receive quickly two emails: one contening the link of your poll for sending it to the voters, the other contening the link to the administration page of your poll.": "Aztán két e-mailt fogsz kapni: egyet ami a résztvevőknek elküldendő hivatkozást tartalmazza, és egy másikat, amely a szavazás adminisztrációs oldalának hivatkozását tartalmazza.",
|
||||||
|
"You can set a closer archiving date for it.": "Lejárati időt adhatsz meg a szavazáshoz.",
|
||||||
|
"Your poll will automatically be archived": "A szavazásod automatikusan archiválva lesz",
|
||||||
|
"Your poll will be automatically archived in %d days.": "A szavazásod %d nap után automatikusan archiválva lesz.",
|
||||||
|
"after the last date of your poll.": "a szavazás utolsó dátuma után."
|
||||||
|
},
|
||||||
|
"adminstuds": {
|
||||||
|
"Add a column": "Oszlop hozzáadása",
|
||||||
|
"All comments deleted": "Összes hozzászólás törölve",
|
||||||
|
"All votes deleted": "Összes szavazat törölve",
|
||||||
|
"As poll administrator, you can change all the lines of this poll with this button": "A szavazás adminisztrátoraként ezzel a gombbal módosíthatod a szavazás sorait",
|
||||||
|
"Back to the poll": "Vissza a szavazáshoz",
|
||||||
|
"Choice added": "Lehetőség hozzáadva",
|
||||||
|
"Collect the emails of the polled users for the choice": "Az erre szavazó felhasználók e-mail címének begyűjtése",
|
||||||
|
"Collect the emails of the polled users for this column": "Az erre az oszlopra szavazó felhasználók e-mail címének begyűjtése",
|
||||||
|
"Column removed": "Oszlop törölve",
|
||||||
|
"Column's adding": "Oszlop hozzáadása",
|
||||||
|
"Comment deleted": "Hozzászólás törölve",
|
||||||
|
"Confirm removal of all comments of the poll": "Az összes hozzászólás eltávolításának megerősítése",
|
||||||
|
"Confirm removal of all votes of the poll": "Az összes szavazat eltávolításának megerősítése",
|
||||||
|
"Confirm removal of the column.": "Az oszlop eltávolításának megerősítése.",
|
||||||
|
"Confirm removal of the poll": "A szavazás eltávolításának megerősítése",
|
||||||
|
"Delete the poll": "Szavazás törlése",
|
||||||
|
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Végül, módosíthatod a szavazás tulajdonságait, mint a címet, hozzászólásokat vagy az e-mail címedet.",
|
||||||
|
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Ha csak egy idősávot akarsz hozzáadni egy meglévő dátumhoz, akkor add itt hozzá a dátumot, és válassz egy új idősávot.",
|
||||||
|
"Keep comments": "Hozzászólások megtartása",
|
||||||
|
"Keep the comments": "A hozzászólások megtartása",
|
||||||
|
"Keep the poll": "Szavazás megtartása",
|
||||||
|
"Keep the votes": "Szavazatok megtartása",
|
||||||
|
"Keep this poll": "A szavazás megtartása",
|
||||||
|
"Keep votes": "Szavazatok megtartása",
|
||||||
|
"Poll fully deleted": "Szavazás teljesen törölve",
|
||||||
|
"Poll saved": "Szavazás mentve",
|
||||||
|
"Remove the column": "Oszlop eltávolítása",
|
||||||
|
"Remove the comments": "Hozzászólások eltávolítása",
|
||||||
|
"Remove the votes": "Szavazatok eltávolítása",
|
||||||
|
"The poll is created.": "A szavazás létrehozva.",
|
||||||
|
"Vote added": "Szavazat hozzáadva",
|
||||||
|
"Vote deleted": "Szavazat törölve",
|
||||||
|
"Vote updated": "Szavazat frissítve",
|
||||||
|
"You can add a new scheduling date to your poll.": "Új ütemezési dátumot adhatsz hozzá a szavazáshoz.",
|
||||||
|
"Your poll has been removed!": "A szavazásod eltávolítva.",
|
||||||
|
"and add a new column with": "és új oszlop hozzáadása ezzel:",
|
||||||
|
"remove a column or a line with": "oszlop vagy sor törlése ezzel:"
|
||||||
|
},
|
||||||
|
"display_mails": {
|
||||||
|
"People who have answered 'If need be' to this option have left those email addresses :": "Azok akik a „Ha szükséges” lehetőséget választották, a következő e-mail címeket adták meg:",
|
||||||
|
"People who have answered 'If need be' to this option have not left any email addresses.": "Azok akik a „Ha szükséges” lehetőséget választották, nem adtak meg e-mail címet.",
|
||||||
|
"People who have answered 'No' to this option have left those email addresses :": "Azok akik a „Nem” lehetőséget választották, a következő e-mail címeket adták meg:",
|
||||||
|
"People who have answered 'No' to this option have not left any email addresses.": "Azok akik a „Nem” lehetőséget választották, nem adtak meg e-mail címet.",
|
||||||
|
"People who have answered 'Yes' to this option have left those email addresses :": "Azok akik az „Igen” lehetőséget választották, a következő e-mail címeket adták meg:",
|
||||||
|
"People who have answered 'Yes' to this option have not left any email addresses.": "Azok akik az „Igen” lehetőséget választották, nem adtak meg e-mail címet."
|
||||||
|
},
|
||||||
|
"studs": {
|
||||||
|
"Adding the vote succeeded": "Szavazat hozzáadva",
|
||||||
|
"Deletion date:": "Törlési idő:",
|
||||||
|
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "Ha szeretnél részt venni ebben a szavazásban, meg kell adnod a nevet, a válaszaidat, és a sor végén lévő mentés gombra kattintva be kell küldened. ",
|
||||||
|
"POLL_LOCKED_WARNING": "Az adminisztrátor lezárta ezt a szavazást. A szavazatok és hozzászólások be lettek fagyasztva.",
|
||||||
|
"The poll is expired, it will be deleted soon.": "A szavazás lejárt. Hamarosan törölve lesz.",
|
||||||
|
"Update vote succeeded": "Szavazat frissítve",
|
||||||
|
"Your vote has been registered successfully, but be careful: regarding this poll options, you need to keep this personal link to edit your own vote:": "A szavazatod el lett mentve, de ne felejtsd el megőrizni a személyre szabott hivatkozásodat, hogy a szavazatodat később módosítani tudd."
|
||||||
|
}
|
||||||
|
}
|
213
locale/it.json
213
locale/it.json
@ -31,8 +31,9 @@
|
|||||||
"Back to administration": "Ritorna all'amministrazione",
|
"Back to administration": "Ritorna all'amministrazione",
|
||||||
"Change the poll": "Modificare il sondaggio",
|
"Change the poll": "Modificare il sondaggio",
|
||||||
"Confirm removal of the poll": "Confermare l'eliminazione del sondaggio ",
|
"Confirm removal of the poll": "Confermare l'eliminazione del sondaggio ",
|
||||||
"Deleted the poll": "Cancellare il sondaggio",
|
"Deleted the poll": "Poll deleted",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
|
"Executed": "Eseguito",
|
||||||
"Expiration date": "Scadenza",
|
"Expiration date": "Scadenza",
|
||||||
"Fail": "Fallimento",
|
"Fail": "Fallimento",
|
||||||
"Failed:": "Fallito:",
|
"Failed:": "Fallito:",
|
||||||
@ -49,11 +50,13 @@
|
|||||||
"Purged:": "Depurati:",
|
"Purged:": "Depurati:",
|
||||||
"See the poll": "Vedere il sondaggio",
|
"See the poll": "Vedere il sondaggio",
|
||||||
"Skipped:": "Saltato:",
|
"Skipped:": "Saltato:",
|
||||||
|
"Status": "Status",
|
||||||
"Succeeded:": "Successo:",
|
"Succeeded:": "Successo:",
|
||||||
"Success": "Successo",
|
"Success": "Successo",
|
||||||
"Summary": "Sommario",
|
"Summary": "Sommario",
|
||||||
"Title": "Titolo",
|
"Title": "Titolo",
|
||||||
"Votes": "Voti",
|
"Votes": "Voti",
|
||||||
|
"Waiting": "Attendi",
|
||||||
"polls in the database at this time": "sondaggi presenti nel database attualmente"
|
"polls in the database at this time": "sondaggi presenti nel database attualmente"
|
||||||
},
|
},
|
||||||
"Check": {
|
"Check": {
|
||||||
@ -83,6 +86,7 @@
|
|||||||
"Comments of polled people": "Commenti dei partecipanti",
|
"Comments of polled people": "Commenti dei partecipanti",
|
||||||
"Remove the comment": "Eliminare il commento",
|
"Remove the comment": "Eliminare il commento",
|
||||||
"Send the comment": "Inviare il commento",
|
"Send the comment": "Inviare il commento",
|
||||||
|
"Type your name and a comment to send it": "Inserisci il tuo nome e un commento prima di inviare il form",
|
||||||
"Your comment": "Il vostro commento",
|
"Your comment": "Il vostro commento",
|
||||||
"anonyme": "anonimo"
|
"anonyme": "anonimo"
|
||||||
},
|
},
|
||||||
@ -104,8 +108,8 @@
|
|||||||
"EditLink": {
|
"EditLink": {
|
||||||
"Edit link for poll \"%s\"": "Modifica il link del sondaggio \"%s\"",
|
"Edit link for poll \"%s\"": "Modifica il link del sondaggio \"%s\"",
|
||||||
"Here is the link for editing your vote:": "Ecco il link per modificare il vostro voto :",
|
"Here is the link for editing your vote:": "Ecco il link per modificare il vostro voto :",
|
||||||
"If you don't want to lose your personalized link, we can send it to your email.": "Per non perdere il vostro link personalizzato, possiamo inviarvelo con un'e-mail.",
|
"If you don't want to lose your personalized link, we can send it to your email.": "Se non vuoi perdere i tuoi link personalizzati, possiamo inviarlo con un'e-mail",
|
||||||
"Please wait %d seconds before we can send an email to you then try again.": "Prego attendere %d secondi prima che possiamo inviarvi l'e-mail, poi riprovate.",
|
"Please wait %d seconds before we can send an email to you then try again.": "Prego attendi %d secondi prima che possiamo inviarvi l'e-mail, poi riprovate.",
|
||||||
"REMINDER": "Promemoria",
|
"REMINDER": "Promemoria",
|
||||||
"Send": "Invio",
|
"Send": "Invio",
|
||||||
"The email address is not correct.": "Indirizzo e-mail non corretto.",
|
"The email address is not correct.": "Indirizzo e-mail non corretto.",
|
||||||
@ -117,12 +121,12 @@
|
|||||||
"Can't create an empty column.": "Impossibile creare una colonna vuota.",
|
"Can't create an empty column.": "Impossibile creare una colonna vuota.",
|
||||||
"Can't create the config.php file in '%s'.": "Impossibile creare il file config.php in '%s'.",
|
"Can't create the config.php file in '%s'.": "Impossibile creare il file config.php in '%s'.",
|
||||||
"Comment failed": "Commento fallito",
|
"Comment failed": "Commento fallito",
|
||||||
"Cookies are disabled on your browser. Theirs activation is required to create a poll.": "I cookies non sono permessi sul vostro browser. E' necessario permetterli per creare un sondaggio.",
|
"Cookies are disabled on your browser. Theirs activation is required to create a poll.": "I cookies non sono permessi sul vostro browser. È necessario permetterli per creare un sondaggio.",
|
||||||
"Enter a name": "Non avete inserito il nome !",
|
"Enter a name": "Non avete inserito il nome !",
|
||||||
"Enter a name and a comment!": "Inserire un nome e un commento!",
|
"Enter a name and a comment!": "Inserire un nome e un commento!",
|
||||||
"Enter a title": "È necessario inserire un titolo !",
|
"Enter a title": "È necessario inserire un titolo !",
|
||||||
"Enter an email address": "È necessario inserire un indirizzo e-mail!",
|
"Enter an email address": "È necessario inserire un indirizzo e-mail!",
|
||||||
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of voters limitation: Value must be an integer greater than 0",
|
"Error on amount of voters limitation : value must be an integer greater than 0": "Errore sulla limitazione di quantità di voti: il valore deve essere un numero intero maggiore di 0",
|
||||||
"Error!": "Errore!",
|
"Error!": "Errore!",
|
||||||
"Failed to delete all comments": "Impossibile eliminare tutti i commenti",
|
"Failed to delete all comments": "Impossibile eliminare tutti i commenti",
|
||||||
"Failed to delete all votes": "Impossibile eliminare tutti i voti",
|
"Failed to delete all votes": "Impossibile eliminare tutti i voti",
|
||||||
@ -143,29 +147,46 @@
|
|||||||
"Poll id already used": "L'identificativo del sondaggio è già in uso",
|
"Poll id already used": "L'identificativo del sondaggio è già in uso",
|
||||||
"Something is going wrong...": "Qualcosa non è corretto...",
|
"Something is going wrong...": "Qualcosa non è corretto...",
|
||||||
"Something is wrong with the format": "Qualche errore nel formato",
|
"Something is wrong with the format": "Qualche errore nel formato",
|
||||||
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Something is wrong with the format: Customized URLs should only consist of alphanumeric characters and hyphens.",
|
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "C'è un errore nel formato: l'URL personalizzato deve contenere solo caratteri alfanumerici e trattini.",
|
||||||
"Something is wrong with the format: name shouldn't have any spaces before or after": "Something is wrong with the format: name shouldn't have any spaces before or after",
|
"Something is wrong with the format: name shouldn't have any spaces before or after": "C'è un errore nel formato: il nome non può avere spazi prima o dopo",
|
||||||
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "L'indirizzo inserito non è corretto ! È necessario un indirizzo e-mail valido (per esempio r.stallman@outlock.com) per ricevere il link del sondaggio.",
|
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "L'indirizzo inserito non è corretto ! È necessario un indirizzo e-mail valido (per esempio r.stallman@outlock.com) per ricevere il link del sondaggio.",
|
||||||
"The column already exists": "La colonna esiste già",
|
"The column already exists": "La colonna esiste già",
|
||||||
"The name is invalid.": "Nome non valido.",
|
"The name is invalid.": "Nome non valido.",
|
||||||
"The name you've chosen already exist in this poll!": "Il nome che avete scelto esiste già !",
|
"The name you've chosen already exist in this poll!": "Il nome che avete scelto esiste già !",
|
||||||
"There is a problem with your choices": "C'è un problema con la vostra scelta",
|
"There is a problem with your choices": "C'è un problema con la vostra scelta",
|
||||||
|
"This id is not allowed": "This identifier is not allowed",
|
||||||
"This poll doesn't exist !": "Questo sondaggio non esiste più !",
|
"This poll doesn't exist !": "Questo sondaggio non esiste più !",
|
||||||
"Update vote failed": "Aggiornamento del voto fallito",
|
"Update vote failed": "Aggiornamento del voto fallito",
|
||||||
"You already voted": "Hai già votato",
|
"You already voted": "Hai già votato",
|
||||||
"You can't create a poll with hidden results with the following edition option:": "Non potete creare un sondaggio con i risultati nascosti con queste opzioni: ",
|
"You can't create a poll with hidden results with the following edition option:": "Non potete creare un sondaggio con i risultati nascosti con queste opzioni: ",
|
||||||
"You can't select more than %d dates": "Non puoi scegliere più di %d date",
|
"You can't select more than %d dates": "Non puoi scegliere più di %d date",
|
||||||
"You haven't filled the first section of the poll creation.": "Non avete completato la prima pagina del sondaggio",
|
"You haven't filled the first section of the poll creation, or your session has expired.": "Non hai completato la prima sezione del sondaggio o la tua sessione è scaduta.",
|
||||||
|
"You haven't filled the first section of the poll creation.": "Non hai completato la prima pagina del sondaggio",
|
||||||
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "IT_Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "IT_Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
||||||
},
|
},
|
||||||
"FindPolls": {
|
"FindPolls": {
|
||||||
|
"Address": "Indirizzo",
|
||||||
|
"Created polls": "Sondaggio creato",
|
||||||
"Have a good day!": "Buona giornata!",
|
"Have a good day!": "Buona giornata!",
|
||||||
"Here is the list of the polls that you manage on %s:": "Ecco la lista dei sondaggi che gestite su %s :",
|
"Here is the list of the polls that you manage on %s:": "Ecco la lista dei sondaggi che gestisci su %s :",
|
||||||
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Se non foste voi ad averlo richiesto o se pensiate che si tratti di un abuso, potreste segnalarlo all'amministratore su %s.",
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Se non hai richiesto tu questa azione o se pensi si tratti di un abuso, puoi segnalarlo all'amministratore a %s.",
|
||||||
"List of your polls": "Lista dei vostri sondaggi",
|
"Last access date": "Ultimo accesso",
|
||||||
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS : questa e-mail vi è stato inviato perché voi – o qualcun altro – ha richiesto il recupero dei sondaggi creati tramite il vostro indirizzo e-mail.",
|
"List of your polls": "Lista dei tuoi sondaggi",
|
||||||
|
"Local Storage Help": "Per aiutarti a trovare i tuoi precedenti sondaggi abbiamo salvato ogni sondaggio che hai creato o a cui hai avuto accesso nel tuo browser. Queste informazioni sono salvate solo nel browser. Le seguenti informazioni verranno salvate:",
|
||||||
|
"Local Storage Help Delete": "To delete this data click the trashcan on the according line or click the « delete my polls index » option. This won't delete your polls.",
|
||||||
|
"Local Storage Help Information Accessed": "La data di creazione o di ultimo accesso al sondaggio",
|
||||||
|
"Local Storage Help Information Address": "Questo è l'indirizzo",
|
||||||
|
"Local Storage Help Information Title": "Il titolo del sondaggio",
|
||||||
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS : questa e-mail è stata inviata perché tu – o qualcun altro – ha richiesto il recupero dei sondaggi creati tramite il tuo indirizzo e-mail.",
|
||||||
|
"Polls saved inside this browser": "Sondaggio salvato nel browser",
|
||||||
"Polls sent": "Sondaggi inviati",
|
"Polls sent": "Sondaggi inviati",
|
||||||
"Send me my polls": "Inviare i miei sondaggi"
|
"Remove all polls from this browser": "Rimuovi tutti i sondaggi dalla memoria del browser",
|
||||||
|
"Remove poll from index": "Rimuovi il sondaggio dalla memoria",
|
||||||
|
"Send me my polls": "Invia i miei sondaggi",
|
||||||
|
"Send my polls by email": "Invia i mi ei sondaggi per e-mail",
|
||||||
|
"There are no polls saved inside your browser yet": "Non ci sono ancora sondaggi salvati nel tuo browser",
|
||||||
|
"Title": "Titolo",
|
||||||
|
"Visited polls": "Sondaggi visitati"
|
||||||
},
|
},
|
||||||
"Generic": {
|
"Generic": {
|
||||||
"(in the format name@mail.com)": "(nel formato nome@mail.com)",
|
"(in the format name@mail.com)": "(nel formato nome@mail.com)",
|
||||||
@ -173,8 +194,8 @@
|
|||||||
"Add": "Aggiungere",
|
"Add": "Aggiungere",
|
||||||
"Back": "Precedente",
|
"Back": "Precedente",
|
||||||
"Back to the homepage of": "Ritornare all'home page",
|
"Back to the homepage of": "Ritornare all'home page",
|
||||||
"Cancel": "Annullare",
|
"Cancel": "Annulla",
|
||||||
"Caption": "Titolo",
|
"Caption": "Informazioni",
|
||||||
"Choice": "Scelta",
|
"Choice": "Scelta",
|
||||||
"Classic": "Classico",
|
"Classic": "Classico",
|
||||||
"Close": "Chiudere",
|
"Close": "Chiudere",
|
||||||
@ -188,20 +209,20 @@
|
|||||||
"Ifneedbe": "Se necessario",
|
"Ifneedbe": "Se necessario",
|
||||||
"Legend:": "Legenda:",
|
"Legend:": "Legenda:",
|
||||||
"Link": "Link",
|
"Link": "Link",
|
||||||
"Make your polls": "Organizzare degli appuntamenti semplicemente,liberamente.",
|
"Make your polls": "Crea il tuo sondaggio",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Next": "Continua",
|
"Next": "Continua",
|
||||||
"No": "No",
|
"No": "No",
|
||||||
"Page generated in": "Pagina generata in",
|
"Page generated in": "Pagina generata in",
|
||||||
"Poll": "Sondaggio",
|
"Poll": "Sondaggio",
|
||||||
"Remove": "Cancellare",
|
"Remove": "Cancella",
|
||||||
"Save": "Salvare",
|
"Save": "Salva",
|
||||||
"Search": "Cercare",
|
"Search": "Cerca",
|
||||||
"Time": "Orario",
|
"Time": "Orario",
|
||||||
"Validate": "Confermare",
|
"Validate": "Conferma",
|
||||||
"Yes": "Sì",
|
"Yes": "Sì",
|
||||||
"Your email address": "Il vostro indirizzo e-mail",
|
"Your email address": "Il tuo indirizzo e-mail",
|
||||||
"Your name": "Il vostro nome",
|
"Your name": "Il tuo nome",
|
||||||
"days": "giorni",
|
"days": "giorni",
|
||||||
"for": "per",
|
"for": "per",
|
||||||
"months": "mesi",
|
"months": "mesi",
|
||||||
@ -218,10 +239,13 @@
|
|||||||
"Installation": {
|
"Installation": {
|
||||||
"AppMail": "Indirizzo e-mail dell'applicazione",
|
"AppMail": "Indirizzo e-mail dell'applicazione",
|
||||||
"AppName": "Nome dell'applicazione",
|
"AppName": "Nome dell'applicazione",
|
||||||
"CleanUrl": "Clean URL",
|
"CleanUrl": "Cancella URL",
|
||||||
"Database": "Database name",
|
"Database": "Nome del database",
|
||||||
"DbConnectionString": "Stringa di connessione",
|
"DbDriver": "Database driver",
|
||||||
|
"DbHost": "Hostname del database",
|
||||||
|
"DbName": "Nome del database",
|
||||||
"DbPassword": "Password",
|
"DbPassword": "Password",
|
||||||
|
"DbPort": "Database port",
|
||||||
"DbPrefix": "Prefisso",
|
"DbPrefix": "Prefisso",
|
||||||
"DbUser": "Utente",
|
"DbUser": "Utente",
|
||||||
"DefaultLanguage": "Lingua predefinita",
|
"DefaultLanguage": "Lingua predefinita",
|
||||||
@ -235,23 +259,23 @@
|
|||||||
"Select the language": "Scegliere la lingua"
|
"Select the language": "Scegliere la lingua"
|
||||||
},
|
},
|
||||||
"Mail": {
|
"Mail": {
|
||||||
"Author's message": "Riservato all'autore",
|
"Author's message": "Messaggio per l'autore",
|
||||||
"FOOTER": "« La strada è lunga, ma la via è libera… »<br/> Framasoft vive solo grazie alle vostre donazioni.<br/> Grazie in anticipo per il vostro sostegno https://soutenir.framasoft.org.",
|
"FOOTER": "« La strada è lunga, ma la via è libera… »<br/> Framasoft vive solo grazie alle vostre donazioni.<br/> Grazie in anticipo per il vostro sostegno https://soutenir.framasoft.org.",
|
||||||
"For sending to the polled users": "Per diffondere ai partecipanti al sondaggio",
|
"For sending to the polled users": "Per diffondere ai partecipanti al sondaggio",
|
||||||
"Notification of poll: %s": "Notifica di sondaggio: %s",
|
"Notification of poll: %s": "Notifica di sondaggio: %s",
|
||||||
"Poll's participation: %s": "Partecipazione al sondaggio: %s",
|
"Poll's participation: %s": "Partecipazione al sondaggio: %s",
|
||||||
"Someone just change your poll available at the following link %s.": "Qualcuno ha appena cambiato il vostro sondaggio disponibile al seguente link <a href=\"%1$s\">%1$s</a>.",
|
"Someone just change your poll available at the following link %s.": "Qualcuno ha appena cambiato il vostro sondaggio disponibile al seguente link <a href=\"%1$s\">%1$s</a>.",
|
||||||
"Someone just delete your poll %s.": "Qualcuno ha appena cancellato il vostro sondaggio \"%s\".",
|
"Someone just delete your poll %s.": "Qualcuno ha appena cancellato il vostro sondaggio \"%s\".",
|
||||||
"Thanks for filling the poll at the link above": "Vi chiediamo di partecipare al sondaggio all'indirizzo seguente",
|
"Thanks for filling the poll at the link above": "Grazie per la tua partecipazione al sondaggio al seguente link",
|
||||||
"Thanks for your trust.": "Grazie per la vostra fiducia.",
|
"Thanks for your trust.": "Grazie per la vostra fiducia.",
|
||||||
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Questo è il messaggio che deve essere inviato ai partecipanti. \nPotete ora inviare questo messaggio a tutte le persone a cui volete chiedere il voto.",
|
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Questo è il messaggio che deve essere inviato ai partecipanti. \nPotete ora inviare questo messaggio a tutte le persone a cui volete chiedere il voto.",
|
||||||
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Questo messaggio NON deve essere diffuso ai partecipanti. È riservato all'autore del sondaggio.\n\nPotete modificare questo sondaggio all'indirizzo seguente ",
|
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Questo messaggio NON deve essere inviato ai partecipanti. Si dovrebbe tenere privato.<br/><br/>Puoi modificare il tuo sondaggio al seguente link",
|
||||||
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Avete modificato la configurazione del vostro sondaggio. \nPotete modificare questo sondaggio con le Link seguente",
|
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Avete modificato la configurazione del vostro sondaggio.<br/>\nPotete modificare questo sondaggio dal seguente Link",
|
||||||
"[ADMINISTRATOR] New settings for your poll": "[AMMINISTRATORE] Modifica di configurazione del sondaggio",
|
"[ADMINISTRATOR] New settings for your poll": "[AMMINISTRATORE] Modifica di configurazione del sondaggio",
|
||||||
"filled a vote.\nYou can find your poll at the link": "ha appena votato.\nPotete trovare il vostro sondaggio con il link seguente",
|
"filled a vote.\nYou can find your poll at the link": "Voto aggiunto.<br/>\nPuoi visualizzare il sondaggio con il link seguente",
|
||||||
"hast just created a poll called": "È stato creato un sondaggio intitolato ",
|
"hast just created a poll called": "È stato creato un sondaggio intitolato ",
|
||||||
"updated a vote.\nYou can find your poll at the link": "ha appena aggiornato un voto.\nPotete trovare il vostro sondaggio con il link seguente",
|
"updated a vote.\nYou can find your poll at the link": "hai appena aggiornato un voto.<br/>\nPuoi trovare il tuo sondaggio con il link seguente",
|
||||||
"wrote a comment.\nYou can find your poll at the link": "ha appena inserito un commento.\nPotete trovare il vostro sondaggio con il link seguente"
|
"wrote a comment.\nYou can find your poll at the link": "hai appena inserito un commento.<br/>\nPuoi trovare il tuo sondaggio con al link seguente"
|
||||||
},
|
},
|
||||||
"Maintenance": {
|
"Maintenance": {
|
||||||
"Thank you for your understanding.": "Grazie per la vostra comprensione.",
|
"Thank you for your understanding.": "Grazie per la vostra comprensione.",
|
||||||
@ -262,28 +286,31 @@
|
|||||||
"Password": "Password",
|
"Password": "Password",
|
||||||
"Submit access": "Accesso",
|
"Submit access": "Accesso",
|
||||||
"Wrong password": "Password sbagliata.",
|
"Wrong password": "Password sbagliata.",
|
||||||
"You have to provide a password so you can participate to the poll.": "Dovete inserire la password per poter partecipare a questo sondaggio.",
|
"You have to provide a password so you can participate to the poll.": "Devi inserire la password per poter partecipare a questo sondaggio.",
|
||||||
"You have to provide a password to access the poll.": "Dovete inserire la password per accedere a questo sondaggio."
|
"You have to provide a password to access the poll.": "Devi inserire la password per accedere a questo sondaggio."
|
||||||
},
|
},
|
||||||
"Poll results": {
|
"Poll results": {
|
||||||
"Addition": "Somma",
|
"%s option": "%s option",
|
||||||
|
"Addition": "Totale",
|
||||||
|
"Anyone will be able to access your email address after your vote": "Chiunque può vedere il tuo indirizzo mail dopo il tuo voto",
|
||||||
"Best choice": "Scelta migliore",
|
"Best choice": "Scelta migliore",
|
||||||
"Best choices": "Scelte migliori",
|
"Best choices": "Scelte migliori",
|
||||||
"Chart": "Grafico",
|
"Chart": "Grafico",
|
||||||
"Display the chart of the results": "Mostra il grafico dei risultati",
|
"Display the chart of the results": "Mostra il grafico dei risultati",
|
||||||
"Edit the line: %s": "Modificare la riga : %s",
|
"Edit the line: %s": "Modificare la riga : %s",
|
||||||
"Link to edit this particular line": "Link to edit this particular line",
|
"Link to edit this particular line": "Link per modificare questa linea",
|
||||||
"Link to edit this particular line has been copied inside the clipboard!": "The link to edit this particular line has been copied to the clipboard!",
|
"Link to edit this particular line has been copied inside the clipboard!": "Il link per modificare questa linea è stato copiato negli appunti!",
|
||||||
"Remove the line:": "Eliminare la riga :",
|
"Remove the line:": "Eliminare la riga :",
|
||||||
"Save the choices": "Salvare le scelte",
|
"Save the choices": "Salvare le scelte",
|
||||||
"Scroll to the left": "Spostare a sinistra",
|
"Scroll to the left": "Spostare a sinistra",
|
||||||
"Scroll to the right": "Spostare a destra",
|
"Scroll to the right": "Spostare a destra",
|
||||||
"The best choice at this time is:": "La migliore scelta per ora è :",
|
"The best choice at this time is:": "La migliore scelta per ora è:",
|
||||||
"The bests choices at this time are:": "Le migliori scelte per ora sono :",
|
"The bests choices at this time are:": "Le migliori scelte per ora sono:",
|
||||||
"Vote ifneedbe for": "Vote under reserve for",
|
"Vote ifneedbe for": "Voti sotto riserva per",
|
||||||
"Vote no for": "Scegliere \"no\" per",
|
"Vote no for": "Scegliere \"no\" per",
|
||||||
"Vote yes for": "Scegliere \"sì\" per",
|
"Vote yes for": "Scegliere \"sì\" per",
|
||||||
"Votes of the poll": "Voti del sondaggio ",
|
"Votes of the poll": "Voti del sondaggio ",
|
||||||
|
"Warning : anyone can access to your email address after voting": "Warning: Anyone can see your email address after voting",
|
||||||
"polled user": "Votante",
|
"polled user": "Votante",
|
||||||
"polled users": "Votanti"
|
"polled users": "Votanti"
|
||||||
},
|
},
|
||||||
@ -295,6 +322,8 @@
|
|||||||
"Cancel the name edit": "Annulla il cambio di nome",
|
"Cancel the name edit": "Annulla il cambio di nome",
|
||||||
"Cancel the rules edit": "Annullare le modifica dei permessi",
|
"Cancel the rules edit": "Annullare le modifica dei permessi",
|
||||||
"Cancel the title edit": "Annullare la modifica del titolo",
|
"Cancel the title edit": "Annullare la modifica del titolo",
|
||||||
|
"Collect of the polled users email addresses": "Collec the polled users' email addresses",
|
||||||
|
"Collecting the polled users emails": "Memorizza gli indirizzi mail dei votanti",
|
||||||
"Edit the description": "Modificare la descrizione",
|
"Edit the description": "Modificare la descrizione",
|
||||||
"Edit the email adress": "Modificare l'email",
|
"Edit the email adress": "Modificare l'email",
|
||||||
"Edit the expiration date": "Cambiare la data di scadenza",
|
"Edit the expiration date": "Cambiare la data di scadenza",
|
||||||
@ -305,8 +334,9 @@
|
|||||||
"Expiration date": "Data di scadenza",
|
"Expiration date": "Data di scadenza",
|
||||||
"Export to CSV": "Esportare in CSV",
|
"Export to CSV": "Esportare in CSV",
|
||||||
"Initiator of the poll": "Autore del sondaggio",
|
"Initiator of the poll": "Autore del sondaggio",
|
||||||
|
"No collect of the polled users email addresses": "The polled users' email addresses are not collected",
|
||||||
"No password": "Nessuna password",
|
"No password": "Nessuna password",
|
||||||
"Only votes are protected": "Solo voti sono protetti",
|
"Only votes are protected": "Solo i voti sono protetti",
|
||||||
"Password protected": "Protetto da una password",
|
"Password protected": "Protetto da una password",
|
||||||
"Poll rules": "Permessi del sondaggio",
|
"Poll rules": "Permessi del sondaggio",
|
||||||
"Print": "Stampare",
|
"Print": "Stampare",
|
||||||
@ -317,25 +347,36 @@
|
|||||||
"Remove the poll": "Eliminare il sondaggio",
|
"Remove the poll": "Eliminare il sondaggio",
|
||||||
"Results are hidden": "I risultati sono nascosti",
|
"Results are hidden": "I risultati sono nascosti",
|
||||||
"Results are visible": "I risultati sono visibili",
|
"Results are visible": "I risultati sono visibili",
|
||||||
"Rich editor": "IT_Editeur avancé",
|
"Rich editor": "Editor avanzato",
|
||||||
"Save the description": "Salvare la descrizione",
|
"Save the description": "Salvare la descrizione",
|
||||||
"Save the email address": "Salvare l'email",
|
"Save the email address": "Salvare l'email",
|
||||||
"Save the new expiration date": "Salvare la data di scadenza",
|
"Save the new expiration date": "Salvare la data di scadenza",
|
||||||
"Save the new name": "Salvare il nuovo nome",
|
"Save the new name": "Salvare il nuovo nome",
|
||||||
"Save the new rules": "Salvare i nuovi permessi",
|
"Save the new rules": "Salvare i nuovi permessi",
|
||||||
"Save the new title": "Salvare il nuovo titolo",
|
"Save the new title": "Salvare il nuovo titolo",
|
||||||
"Simple editor": "IT_Editeur simple",
|
"Simple editor": "Editor semplice",
|
||||||
"Title": "Titolo",
|
"Title": "Titolo del sondaggio",
|
||||||
|
"Voters email adresses are collected": "Voters' email adresses are collected",
|
||||||
|
"Voters email adresses are collected and required": "Voters' email adresses are collected and required",
|
||||||
|
"Voters email adresses are collected, required and verified": "Voters' email adresses are collected, required and verified",
|
||||||
|
"Voters email adresses are not collected": "Voters' email adresses are not collected",
|
||||||
"Votes and comments are locked": "I voti e i commenti sono bloccati",
|
"Votes and comments are locked": "I voti e i commenti sono bloccati",
|
||||||
"Votes protected by password": "Voti protetti da una password"
|
"Votes protected by password": "Voti protetti da una password"
|
||||||
},
|
},
|
||||||
"Step 1": {
|
"Step 1": {
|
||||||
"All voters can modify any vote": "Tutti i votanti possono cambiare tutti i voti",
|
"All voters can modify any vote": "Tutti i votanti possono cambiare tutti i voti",
|
||||||
|
"Collect the polled users email addresses": "Memorizza gli indirizzi mail dei votanti",
|
||||||
|
"Collect users email": "Memorizza gli indirizzi mail degli utenti",
|
||||||
|
"Collect voters email": "Collect voters' email addresses",
|
||||||
"Customize the URL": "Personalizzare il link",
|
"Customize the URL": "Personalizzare il link",
|
||||||
|
"Email addresses are collected but not required": "Email addresses are collected but not required",
|
||||||
|
"Email addresses are not collected": "Email addresses are not collected",
|
||||||
|
"Email addresses are required": "Email addresses are required",
|
||||||
|
"Email addresses are required and verified": "Email addresses are required and verified",
|
||||||
"Go to step 2": "Andare al punto 2",
|
"Go to step 2": "Andare al punto 2",
|
||||||
"Limit the amount of voters per option": "Limitate la quantità di votanti per opzione",
|
"Limit the amount of voters per option": "Limitate la quantità di votanti per opzione",
|
||||||
"More informations here:": "IT_Plus d'informations ici :",
|
"More informations here:": "Maggiori informazioni qui:",
|
||||||
"Only the poll maker can see the poll's results": "Solo il creatore sondaggio possono vedere i risultati",
|
"Only the poll maker can see the poll's results": "Solo il creatore sondaggio può vedere i risultati",
|
||||||
"Optional parameters": "Parametri opzionali",
|
"Optional parameters": "Parametri opzionali",
|
||||||
"Password choice": "Scelta della password",
|
"Password choice": "Scelta della password",
|
||||||
"Password confirmation": "Conferma della password",
|
"Password confirmation": "Conferma della password",
|
||||||
@ -348,16 +389,18 @@
|
|||||||
"Poll title": "Titolo del sondaggio",
|
"Poll title": "Titolo del sondaggio",
|
||||||
"Required fields cannot be left blank.": "Riempire i campi obbligatori, segnati con *.",
|
"Required fields cannot be left blank.": "Riempire i campi obbligatori, segnati con *.",
|
||||||
"The results are publicly visible": "I risultati sono visibili senza password",
|
"The results are publicly visible": "I risultati sono visibili senza password",
|
||||||
"To make the description more attractive, you can use the Markdown format.": "IT_Afin de rendre le descriptif de ce sondage plus attractif, vous pouvez utiliser le formatage Markdown.",
|
"To make the description more attractive, you can use the Markdown format.": "Per rendere la descrizione più gradevole, puoi usare la sintassi Markdown.",
|
||||||
"To receive an email for each new comment": "Per ricevere una e-mail per ogni nuovo commento",
|
"To receive an email for each new comment": "Per ricevere una e-mail per ogni nuovo commento",
|
||||||
"To receive an email for each new vote": "Per ricevere un'email per ogni nuovo voto",
|
"To receive an email for each new vote": "Per ricevere un'email per ogni nuovo voto",
|
||||||
"Use a password to restrict access": "Utilizzare una passwor per limitare l'accesso al sondaggio",
|
"Use a password to restrict access": "Utilizza una password per limitare l'accesso al sondaggio",
|
||||||
"Value Max": "Value Max",
|
"Value Max": "Valore massimos",
|
||||||
"ValueMax instructions": "elettori per opzione",
|
"ValueMax instructions": "Limitare la quantità di votanti per opzione",
|
||||||
"Voters can modify their vote themselves": "I partecipanti possono modificare il loro voto in autonomia",
|
"Voters can modify their vote themselves": "I partecipanti possono modificare il loro voto in autonomia",
|
||||||
"Votes cannot be modified": "Nessun voto può essere modificato",
|
"Votes cannot be modified": "Nessun voto può essere modificato",
|
||||||
"You are in the poll creation section.": "Avete scelto di creare un nuovo sondaggio.",
|
"Warning : anyone can access to the polled users's email addresses.": "Warning: Anyone can see the polled users' email addresses.",
|
||||||
"You can enable or disable the editor at will.": "IT_Vous pouvez activer ou désactiver l'éditeur à votre guise."
|
"Warning: anyone can access the polled users email addresses since all voters can modify any vote. You should restrict permission rules.": "Attenzione: chiunque può vedere gli indirizzi mail degli utenti fino a quando i votanti possono modificare la propria scelta. Si devono impostare delle regole di accesso.",
|
||||||
|
"You are in the poll creation section.": "Hai scelto di creare un nuovo sondaggio.",
|
||||||
|
"You can enable or disable the editor at will.": "Puoi abilitare o disabilitare l'editor"
|
||||||
},
|
},
|
||||||
"Step 2": {
|
"Step 2": {
|
||||||
"Back to step 1": "Torna al punto 1",
|
"Back to step 1": "Torna al punto 1",
|
||||||
@ -368,20 +411,20 @@
|
|||||||
"Add a link or an image": "Aggiungi un collegamento o di un'immagine",
|
"Add a link or an image": "Aggiungi un collegamento o di un'immagine",
|
||||||
"Alternative text": "Testo alternativo",
|
"Alternative text": "Testo alternativo",
|
||||||
"It's possible to propose links or images by using": "E 'possibile inserire link o immagini utilizzando",
|
"It's possible to propose links or images by using": "E 'possibile inserire link o immagini utilizzando",
|
||||||
"Poll subjects (2 on 3)": "Scelta dei soggetti (2 di 3)",
|
"Poll subjects (2 on 3)": "Scelta delle opzioni (2 di 3)",
|
||||||
"Remove a choice": "Eliminare l'ultima scelta",
|
"Remove a choice": "Eliminare l'ultima scelta",
|
||||||
"These fields are optional. You can add a link, an image or both.": "Questi campi sono facoltativi. Potete aggiungere un link, un'immagine o entrambi.",
|
"These fields are optional. You can add a link, an image or both.": "Questi campi sono facoltativi. Puoi aggiungere un link, un'immagine o entrambi.",
|
||||||
"To make a generic poll you need to propose at least two choices between differents subjects.": "Per creare un rilevamento convenzionale, è necessario fornire almeno due scelte diverse.",
|
"To make a generic poll you need to propose at least two choices between differents subjects.": "Per creare un sondaggio convenzionale, è necessario fornire almeno due scelte diverse.",
|
||||||
"URL of the image": "URL dell'immagine",
|
"URL of the image": "URL dell'immagine",
|
||||||
"You can add or remove additional choices with the buttons": "Potete aggiungere o eliminare delle scelte ulteriori con i pulsanti",
|
"You can add or remove additional choices with the buttons": "Puoi aggiungere o eliminare delle scelte ulteriori con i pulsanti",
|
||||||
"the Markdown syntax": "la sintassi Markdown"
|
"the Markdown syntax": "Sintassi Markdown"
|
||||||
},
|
},
|
||||||
"Step 2 date": {
|
"Step 2 date": {
|
||||||
"Add a day": "Aggiungere un giorno",
|
"Add a day": "Aggiungere un giorno",
|
||||||
"Add an hour": "Aggiungere un orario",
|
"Add an hour": "Aggiungere un orario",
|
||||||
"Choose the dates of your poll": "Scegliete le date del vostro sondaggio",
|
"Choose the dates of your poll": "Scegli le date del tuo sondaggio",
|
||||||
"Copy hours of the first day": "Copiare gli orari del primo giorno",
|
"Copy hours of the first day": "Copia gli orari del primo giorno",
|
||||||
"For each selected day, you can choose, or not, meeting hours (e.g.: \"8h\", \"8:30\", \"8h-10h\", \"evening\", etc.)": "Per ogni giorno selezionato, avete la possibilità di scegliere o meno, le ore dell'incontro (per esempio : \"8h\", \"8:30\", \"8h-10h\", \"sera\", etc.)",
|
"For each selected day, you can choose, or not, meeting hours (e.g.: \"8h\", \"8:30\", \"8h-10h\", \"evening\", etc.)": "Per ogni giorno selezionato, hai la possibilità di scegliere o meno, le ore dell'incontro (per esempio : \"8h\", \"8:30\", \"8h-10h\", \"sera\", etc.)",
|
||||||
"Poll dates (2 on 3)": "Scelta delle date (2 di 3)",
|
"Poll dates (2 on 3)": "Scelta delle date (2 di 3)",
|
||||||
"Remove a day": "Eliminare l'ultimo giorno",
|
"Remove a day": "Eliminare l'ultimo giorno",
|
||||||
"Remove all days": "Cancellare tutti i giorni",
|
"Remove all days": "Cancellare tutti i giorni",
|
||||||
@ -389,66 +432,76 @@
|
|||||||
"Remove an hour": "Eliminare l'ultimo orario",
|
"Remove an hour": "Eliminare l'ultimo orario",
|
||||||
"Remove this day": "Eliminare questo giorno",
|
"Remove this day": "Eliminare questo giorno",
|
||||||
"To schedule an event you need to propose at least two choices (two hours for one day or two days).": "Per creare un evento, è meglio proporre almeno 2 scelte (2 orari per lo stesso giorno o 2 giorni).",
|
"To schedule an event you need to propose at least two choices (two hours for one day or two days).": "Per creare un evento, è meglio proporre almeno 2 scelte (2 orari per lo stesso giorno o 2 giorni).",
|
||||||
"You can add or remove additionnal days and hours with the buttons": "Potete aggiungere o eliminare dei giorni et orari ulteriori con i pulsanti"
|
"You can add or remove additionnal days and hours with the buttons": "Puoi aggiungere o eliminare dei giorni et orari ulteriori con i pulsanti"
|
||||||
},
|
},
|
||||||
"Step 3": {
|
"Step 3": {
|
||||||
"Archiving date:": "Archivio Data:",
|
"Archiving date:": "Archivio Data:",
|
||||||
"Back to step 2": "Torna al punto 2",
|
"Back to step 2": "Torna al punto 2",
|
||||||
"Confirm the creation of your poll": "Confermate la creazione del vostro sondaggio",
|
"Confirm the creation of your poll": "Conferma la creazione del tuo sondaggio",
|
||||||
"Create the poll": "Creare il sondaggio",
|
"Create the poll": "Crea il sondaggio",
|
||||||
"List of your choices": "Liste delle vostre scelte",
|
"List of your choices": "Liste delle tue scelte",
|
||||||
"Once you have confirmed the creation of your poll, you will be automatically redirected on the administration page of your poll.": "Un volta che avrete confermato la creazione del sondaggio, sarete rediretti automaticamente sulla pagina di amministrazione del vostro sondaggio.",
|
"Once you have confirmed the creation of your poll, you will be automatically redirected on the administration page of your poll.": "Un volta che hai confermato la creazione del sondaggio, sarai reindirizzati automaticamente sulla pagina di amministrazione del tuo sondaggio.",
|
||||||
"Removal date and confirmation (3 on 3)": "Data di scadenza e conferma (3 di 3)",
|
"Removal date and confirmation (3 on 3)": "Data di scadenza e conferma (3 di 3)",
|
||||||
"Then, you will receive quickly two emails: one contening the link of your poll for sending it to the voters, the other contening the link to the administration page of your poll.": "Nello stesso momento, riceverete 2 email : una con il Link verso il vostro sondaggio da inoltrare ai partecipanti, l'altra con il Link verso la pagina di amministrazione del sondaggio.",
|
"Then, you will receive quickly two emails: one contening the link of your poll for sending it to the voters, the other contening the link to the administration page of your poll.": "Nello stesso momento, riceverai 2 email : una con il Link verso il tuo sondaggio da inoltrare ai partecipanti, l'altra con il Link verso la pagina di amministrazione del sondaggio.",
|
||||||
"You can set a closer archiving date for it.": "Si può decidere su una data più vicina di archiviazione.",
|
"You can set a closer archiving date for it.": "Si può decidere su una data più vicina di archiviazione.",
|
||||||
"Your poll will automatically be archived": "Il vostro sondaggio sarà archiviato automaticamente",
|
"Your poll will automatically be archived": "Il tuo sondaggio sarà archiviato automaticamente",
|
||||||
"Your poll will be automatically archived in %d days.": "Il vostro sondaggio verrà archiviata automaticamente in %d giorni.",
|
"Your poll will be automatically archived in %d days.": "Il tuo sondaggio verrà archiviata automaticamente in %d giorni.",
|
||||||
"after the last date of your poll.": "dopo l'ultimo giorno del vostro sondaggi"
|
"after the last date of your poll.": "dopo l'ultimo giorno del tuo sondaggio"
|
||||||
},
|
},
|
||||||
"adminstuds": {
|
"adminstuds": {
|
||||||
"Add a column": "Aggiungere una colonna",
|
"Add a column": "Aggiungere una colonna",
|
||||||
"All comments deleted": "Tutti i commenti sono stati cancellati",
|
"All comments deleted": "Tutti i commenti sono stati cancellati",
|
||||||
"All votes deleted": "Tutti i voti sono stati rimossi",
|
"All votes deleted": "Tutti i voti sono stati rimossi",
|
||||||
"As poll administrator, you can change all the lines of this poll with this button": "Essendo l'amministratore, potete modificare tutte le righe di questo sondaggio con questo pulsante",
|
"As poll administrator, you can change all the lines of this poll with this button": "Essendo l'amministratore, puoi modificare tutte le righe di questo sondaggio con questo pulsante",
|
||||||
"Back to the poll": "Torna al sondaggio",
|
"Back to the poll": "Torna al sondaggio",
|
||||||
"Choice added": "Scelta aggiunto",
|
"Choice added": "Scelta aggiunta",
|
||||||
|
"Collect the emails of the polled users for the choice": "Raccogli le mail degli utenti che hanno scelto questa opzione",
|
||||||
|
"Collect the emails of the polled users for this column": "Collect the email addresses of the polled users for this column",
|
||||||
"Column removed": "Colonna rimossa",
|
"Column removed": "Colonna rimossa",
|
||||||
"Column's adding": "Aggiunta di una colonna",
|
"Column's adding": "Aggiunta di una colonna",
|
||||||
"Comment deleted": "Commento rimosso",
|
"Comment deleted": "Commento rimosso",
|
||||||
"Confirm removal of all comments of the poll": "Confermare l'eliminazione di tutti i commenti da questo sondaggio",
|
"Confirm removal of all comments of the poll": "Confermare l'eliminazione di tutti i commenti di questo sondaggio",
|
||||||
"Confirm removal of all votes of the poll": "Confermare l'eliminazione di tutti i voti del sondaggio",
|
"Confirm removal of all votes of the poll": "Confermare l'eliminazione di tutti i voti del sondaggio",
|
||||||
"Confirm removal of the column.": "Confermare l'eliminazione della colonna.",
|
"Confirm removal of the column.": "Confermare l'eliminazione della colonna.",
|
||||||
"Confirm removal of the poll": "Confermare l'eliminazione del sondaggio ",
|
"Confirm removal of the poll": "Confermare l'eliminazione del sondaggio ",
|
||||||
"Delete the poll": "Elimino il sondaggio",
|
"Delete the poll": "Delete poll",
|
||||||
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Potete infine modificare le informazioni relative a questo sondaggio come il titolo, i commenti o la vostra email.",
|
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Potete infine modificare le informazioni relative a questo sondaggio come il titolo, i commenti o la vostra email.",
|
||||||
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Se voleste aggiungere solo un orario a una data già presente, potreste inserire la stessa data et scegliere un altro orario. Sarà aggiunto al sondaggio esistente.",
|
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Se voleste aggiungere solo un orario a una data già presente, potreste inserire la stessa data et scegliere un altro orario. Sarà aggiunto al sondaggio esistente.",
|
||||||
"Keep comments": "Tenere commenti",
|
"Keep comments": "Tenere commenti",
|
||||||
"Keep the comments": "Tenere commenti",
|
"Keep the comments": "Tenere commenti",
|
||||||
"Keep the poll": "Tenere il sondaggio",
|
"Keep the poll": "Tenere il sondaggio",
|
||||||
"Keep the votes": "Tenere voti",
|
"Keep the votes": "Tenere voti",
|
||||||
"Keep this poll": "Mantengo questo sondaggio !",
|
"Keep this poll": "Mantengo questo sondaggio",
|
||||||
"Keep votes": "Tenere voti",
|
"Keep votes": "Tenere voti",
|
||||||
"Poll fully deleted": "Sondaggio completamente rimosso",
|
"Poll fully deleted": "Sondaggio completamente rimosso",
|
||||||
"Poll saved": "Sondaggio protetta",
|
"Poll saved": "Sondaggio salvato",
|
||||||
"Remove the column": "Cancellare la colonna",
|
"Remove the column": "Cancellare la colonna",
|
||||||
"Remove the comments": "Eliminare i commenti",
|
"Remove the comments": "Eliminare i commenti",
|
||||||
"Remove the votes": "Rimuovere voti",
|
"Remove the votes": "Rimuovere i voti",
|
||||||
"The poll is created.": "The poll was created.",
|
"The poll is created.": "Il sondaggio è stato creato.",
|
||||||
"Vote added": "Voto aggiunto",
|
"Vote added": "Voto aggiunto",
|
||||||
"Vote deleted": "Voto cancellato",
|
"Vote deleted": "Voto cancellato",
|
||||||
"Vote updated": "Voto aggiornato",
|
"Vote updated": "Voto aggiornato",
|
||||||
"You can add a new scheduling date to your poll.": "Potete aggiungere una data al vostro sondaggio.",
|
"You can add a new scheduling date to your poll.": "Puoi aggiungere una data al tuo sondaggio.",
|
||||||
"Your poll has been removed!": "Il vostro sondaggio è stato eliminato !",
|
"Your poll has been removed!": "Il tuo sondaggio è stato eliminato!",
|
||||||
"and add a new column with": "e se vi foste dimenticati di inserire una scelta, potreste aggiungere una colonna cliccando su",
|
"and add a new column with": "e se vi foste dimenticati di inserire una scelta, potreste aggiungere una colonna cliccando su",
|
||||||
"remove a column or a line with": " cancellare una colonna o una riga con "
|
"remove a column or a line with": " cancellare una colonna o una riga con "
|
||||||
},
|
},
|
||||||
|
"display_mails": {
|
||||||
|
"People who have answered 'If need be' to this option have left those email addresses :": "Users who voted 'If need be' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'If need be' to this option have not left any email addresses.": "Users who voted 'If need be' for this option have not left any email addresses:",
|
||||||
|
"People who have answered 'No' to this option have left those email addresses :": "Users who voted 'No' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'No' to this option have not left any email addresses.": "Users who voted 'No' for this option have not left any email addresses.",
|
||||||
|
"People who have answered 'Yes' to this option have left those email addresses :": "Users who voted 'Yes' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'Yes' to this option have not left any email addresses.": "Users who voted 'Yes' for this option have not left any email addresses."
|
||||||
|
},
|
||||||
"studs": {
|
"studs": {
|
||||||
"Adding the vote succeeded": "L'aggiunta del voto ha avuto successo",
|
"Adding the vote succeeded": "L'aggiunta del voto ha avuto successo",
|
||||||
"Deletion date:": "Data di cancellazione:",
|
"Deletion date:": "Data di cancellazione:",
|
||||||
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "Per partecipare a questo sondaggio, è necessario inserire vostro nome, scegliere tutti i parametri che preferite e confermare la vostra scelta con il pulsante alla fine della riga.",
|
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "Per partecipare a questo sondaggio, è necessario inserire vostro nome, scegliere tutti i parametri che preferite e confermare la vostra scelta con il pulsante alla fine della riga.",
|
||||||
"POLL_LOCKED_WARNING": "L'amministratore ha bloccato questa indagine. Voti e commenti sono congelati, non è più possibile partecipare",
|
"POLL_LOCKED_WARNING": "L'amministratore ha bloccato questa indagine. Voti e commenti sono congelati, non è più possibile partecipare",
|
||||||
"The poll is expired, it will be deleted soon.": "Il sondaggio è scaduto, sarà presto rimosso.",
|
"The poll is expired, it will be deleted soon.": "Il sondaggio è scaduto, sarà presto rimosso.",
|
||||||
"Update vote succeeded": "Aggiornamento del voto di successo",
|
"Update vote succeeded": "Aggiornamento del voto effettuato",
|
||||||
"Your vote has been registered successfully, but be careful: regarding this poll options, you need to keep this personal link to edit your own vote:": "Il tuo voto è stato preso in considerazione, ma attenzione: questa indagine consente la modifica del voto solo con il seguente link personalizzato; tenerlo al sicuro!"
|
"Your vote has been registered successfully, but be careful: regarding this poll options, you need to keep this personal link to edit your own vote:": "Il tuo voto è stato preso in considerazione, ma attenzione: questa indagine consente la modifica del voto solo con il seguente link personalizzato; tenerlo al sicuro!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
123
locale/nl.json
123
locale/nl.json
@ -31,13 +31,14 @@
|
|||||||
"Back to administration": "Terug naar beheerpagina",
|
"Back to administration": "Terug naar beheerpagina",
|
||||||
"Change the poll": "Bewerk poll",
|
"Change the poll": "Bewerk poll",
|
||||||
"Confirm removal of the poll": "Bevestig het verwijderen van de poll",
|
"Confirm removal of the poll": "Bevestig het verwijderen van de poll",
|
||||||
"Deleted the poll": "Verwijder poll",
|
"Deleted the poll": "Poll deleted",
|
||||||
"Email": "Email",
|
"Email": "Email",
|
||||||
|
"Executed": "Uitgevoerd",
|
||||||
"Expiration date": "Vervaldatum",
|
"Expiration date": "Vervaldatum",
|
||||||
"Fail": "Gefaald",
|
"Fail": "Gefaald",
|
||||||
"Failed:": "Gefaald:",
|
"Failed:": "Gefaald:",
|
||||||
"Format": "Formaat",
|
"Format": "Formaat",
|
||||||
"Installation": "NL_Installation",
|
"Installation": "Installatie",
|
||||||
"Logs": "Logs",
|
"Logs": "Logs",
|
||||||
"Migration": "Migratie",
|
"Migration": "Migratie",
|
||||||
"Nothing": "Niets",
|
"Nothing": "Niets",
|
||||||
@ -49,11 +50,13 @@
|
|||||||
"Purged:": "Leeggemaakt:",
|
"Purged:": "Leeggemaakt:",
|
||||||
"See the poll": "Ga naar poll",
|
"See the poll": "Ga naar poll",
|
||||||
"Skipped:": "Overgeslagen:",
|
"Skipped:": "Overgeslagen:",
|
||||||
|
"Status": "Status",
|
||||||
"Succeeded:": "Gelukt:",
|
"Succeeded:": "Gelukt:",
|
||||||
"Success": "Gelukt",
|
"Success": "Gelukt",
|
||||||
"Summary": "Samenvatting",
|
"Summary": "Samenvatting",
|
||||||
"Title": "Titel van de poll",
|
"Title": "Titel",
|
||||||
"Votes": "stemmen",
|
"Votes": "Stemmen",
|
||||||
|
"Waiting": "Aan het wachten",
|
||||||
"polls in the database at this time": "polls in de database op dit moment"
|
"polls in the database at this time": "polls in de database op dit moment"
|
||||||
},
|
},
|
||||||
"Check": {
|
"Check": {
|
||||||
@ -83,6 +86,7 @@
|
|||||||
"Comments of polled people": "Opmerkingen",
|
"Comments of polled people": "Opmerkingen",
|
||||||
"Remove the comment": "Verwijder opmerking",
|
"Remove the comment": "Verwijder opmerking",
|
||||||
"Send the comment": "Opmerking opslaan",
|
"Send the comment": "Opmerking opslaan",
|
||||||
|
"Type your name and a comment to send it": "Vul je naam en een opmerking in voor het formulier in te dienen",
|
||||||
"Your comment": "Jouw opmerking",
|
"Your comment": "Jouw opmerking",
|
||||||
"anonyme": "anoniem"
|
"anonyme": "anoniem"
|
||||||
},
|
},
|
||||||
@ -122,13 +126,13 @@
|
|||||||
"Enter a name and a comment!": "Vul een naam en een opmerking in!",
|
"Enter a name and a comment!": "Vul een naam en een opmerking in!",
|
||||||
"Enter a title": "Voer een titel in",
|
"Enter a title": "Voer een titel in",
|
||||||
"Enter an email address": "Voer een emailadres in",
|
"Enter an email address": "Voer een emailadres in",
|
||||||
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of voters limitation: Value must be an integer greater than 0",
|
"Error on amount of voters limitation : value must be an integer greater than 0": "Fout over de hoeveelheid stemmen: waarde moet een getal groter dan 0 zijn.",
|
||||||
"Error!": "Fout!",
|
"Error!": "Fout!",
|
||||||
"Failed to delete all comments": "Failed to delete all comments",
|
"Failed to delete all comments": "Het is niet gelukt om alle opmerkingen te verwijderen",
|
||||||
"Failed to delete all votes": "Failed to delete all votes",
|
"Failed to delete all votes": "Het is niet gelukt om alle stemmen te verwijderen",
|
||||||
"Failed to delete column": "Kolom verwijderen mislukt",
|
"Failed to delete column": "Kolom verwijderen mislukt",
|
||||||
"Failed to delete the comment": "Failed to delete the comment",
|
"Failed to delete the comment": "Het is niet gelukt om de opmerking te verwijderen",
|
||||||
"Failed to delete the poll": "Failed to delete the poll",
|
"Failed to delete the poll": "Het is niet gelukt om de poll te verwijderen",
|
||||||
"Failed to delete the vote!": "Het is niet gelukt de stem te verwijderen!",
|
"Failed to delete the vote!": "Het is niet gelukt de stem te verwijderen!",
|
||||||
"Failed to insert the comment!": "Het is niet gelukt om de opmerking in te voegen!",
|
"Failed to insert the comment!": "Het is niet gelukt om de opmerking in te voegen!",
|
||||||
"Failed to save poll": "Opslaan van de poll gefaald",
|
"Failed to save poll": "Opslaan van de poll gefaald",
|
||||||
@ -143,29 +147,46 @@
|
|||||||
"Poll id already used": "Deze ID is reeds gebruikt",
|
"Poll id already used": "Deze ID is reeds gebruikt",
|
||||||
"Something is going wrong...": "Er is iets foutgegaan...",
|
"Something is going wrong...": "Er is iets foutgegaan...",
|
||||||
"Something is wrong with the format": "Er is iets foutgegaan met het formaat",
|
"Something is wrong with the format": "Er is iets foutgegaan met het formaat",
|
||||||
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Something is wrong with the format: Customized URLs should only consist of alphanumeric characters and hyphens.",
|
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Er is iets fout gegaan met het formaat: persoonlijke URLs mogen enkel alfanumerieke tekens en streepjes bevatten.",
|
||||||
"Something is wrong with the format: name shouldn't have any spaces before or after": "Something is wrong with the format: name shouldn't have any spaces before or after",
|
"Something is wrong with the format: name shouldn't have any spaces before or after": "Er is iets fout gegaan met het formaat: de naam mag vooraan of achteraan geen spaties bevatten",
|
||||||
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "Het adres is niet juist! Je moet een geldig emailadres invoeren (zoals r.stallman@outlock.com) zodat je de link naar je poll kan ontvangen.",
|
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "Het adres is niet juist! Je moet een geldig emailadres invoeren (zoals r.stallman@outlock.com) zodat je de link naar je poll kan ontvangen.",
|
||||||
"The column already exists": "De kolom bestaat reeds",
|
"The column already exists": "De kolom bestaat reeds",
|
||||||
"The name is invalid.": "De naam is niet geldig.",
|
"The name is invalid.": "De naam is niet geldig.",
|
||||||
"The name you've chosen already exist in this poll!": "De naam die je hebt gekozen, bestaat al in deze poll!",
|
"The name you've chosen already exist in this poll!": "De naam die je hebt gekozen, bestaat al in deze poll!",
|
||||||
"There is a problem with your choices": "Er is een probleem met je keuzes",
|
"There is a problem with your choices": "Er is een probleem met je keuzes",
|
||||||
|
"This id is not allowed": "This identifier is not allowed",
|
||||||
"This poll doesn't exist !": "Deze poll bestaat niet!",
|
"This poll doesn't exist !": "Deze poll bestaat niet!",
|
||||||
"Update vote failed": "Wijzigen stem gefaald",
|
"Update vote failed": "Wijzigen stem gefaald",
|
||||||
"You already voted": "Je hebt al gestemd",
|
"You already voted": "Je hebt al gestemd",
|
||||||
"You can't create a poll with hidden results with the following edition option:": "Je kan geen poll met verborgen resultaten maken met de volgende optie: ",
|
"You can't create a poll with hidden results with the following edition option:": "Je kan geen poll met verborgen resultaten maken met de volgende optie: ",
|
||||||
"You can't select more than %d dates": "Je kan niet meer dan %d dagen kiezen",
|
"You can't select more than %d dates": "Je kan niet meer dan %d dagen kiezen",
|
||||||
|
"You haven't filled the first section of the poll creation, or your session has expired.": "Je hebt het eerste deel van de poll niet ingevuld, of je sessie is verlopen.",
|
||||||
"You haven't filled the first section of the poll creation.": "Je hebt het eerste gedeelte van de poll niet ingevuld.",
|
"You haven't filled the first section of the poll creation.": "Je hebt het eerste gedeelte van de poll niet ingevuld.",
|
||||||
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
||||||
},
|
},
|
||||||
"FindPolls": {
|
"FindPolls": {
|
||||||
|
"Address": "Adres",
|
||||||
|
"Created polls": "Aangemaakte polls",
|
||||||
"Have a good day!": "Tot ziens!",
|
"Have a good day!": "Tot ziens!",
|
||||||
"Here is the list of the polls that you manage on %s:": "Dit is de lijst van polls die je beheert op %s:",
|
"Here is the list of the polls that you manage on %s:": "Dit is de lijst van polls die je beheert op %s:",
|
||||||
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Indien je dat niet gevraagd hebt en je vermoedt misbruik van de dienst, dan kan je dat melden aan de beheerder op %s.",
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Indien je dat niet gevraagd hebt en je vermoedt misbruik van de dienst, dan kan je dat melden aan de beheerder op %s.",
|
||||||
|
"Last access date": "Laatst bezocht",
|
||||||
"List of your polls": "Lijst van jouw polls",
|
"List of your polls": "Lijst van jouw polls",
|
||||||
|
"Local Storage Help": "Om je vorige polls makkelijk terug te vinden, bewaren we elke poll die je aanmaakt of bezoekt in je browser. Deze informatie wordt enkel in deze browser opgeslagen. De volgende informatie zal worden bewaard:",
|
||||||
|
"Local Storage Help Delete": "Om deze informatie te verwijderen klik je op het vuilbakje op de overeenkomstige lijn of klik je op de « verwijder mijn polls uit het geheugen » optie. Je polls zelf worden hierdoor niet verwijderd.",
|
||||||
|
"Local Storage Help Information Accessed": "De datum waarop de poll aangemaakt of laatst bezocht is",
|
||||||
|
"Local Storage Help Information Address": "Het adres",
|
||||||
|
"Local Storage Help Information Title": "De titel van de poll",
|
||||||
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: deze email werd verstuurd omdat jij – of iemand anders – gevraagd hebt om een lijst van polls te ontvangen die gemaakt werden om jouw emailadres.",
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS: deze email werd verstuurd omdat jij – of iemand anders – gevraagd hebt om een lijst van polls te ontvangen die gemaakt werden om jouw emailadres.",
|
||||||
|
"Polls saved inside this browser": "Polls bewaard in deze browser",
|
||||||
"Polls sent": "Polls verstuurd",
|
"Polls sent": "Polls verstuurd",
|
||||||
"Send me my polls": "Stuur me mijn polls"
|
"Remove all polls from this browser": "Verwijder al mijn polls uit het geheugen van deze browser",
|
||||||
|
"Remove poll from index": "Verwijder de poll uit het geheugen",
|
||||||
|
"Send me my polls": "Stuur me mijn polls",
|
||||||
|
"Send my polls by email": "Verzend mijn polls via email",
|
||||||
|
"There are no polls saved inside your browser yet": "Er zijn nog geen polls bewaard in je browser",
|
||||||
|
"Title": "Titel",
|
||||||
|
"Visited polls": "Bezochte polls"
|
||||||
},
|
},
|
||||||
"Generic": {
|
"Generic": {
|
||||||
"(in the format name@mail.com)": "(in het formaat naam@mail.com)",
|
"(in the format name@mail.com)": "(in het formaat naam@mail.com)",
|
||||||
@ -174,7 +195,7 @@
|
|||||||
"Back": "Vorige",
|
"Back": "Vorige",
|
||||||
"Back to the homepage of": "Terug naar de homepage van",
|
"Back to the homepage of": "Terug naar de homepage van",
|
||||||
"Cancel": "Annuleren",
|
"Cancel": "Annuleren",
|
||||||
"Caption": "Legende",
|
"Caption": "Informatie",
|
||||||
"Choice": "Keuze",
|
"Choice": "Keuze",
|
||||||
"Classic": "Klassiek",
|
"Classic": "Klassiek",
|
||||||
"Close": "Sluiten",
|
"Close": "Sluiten",
|
||||||
@ -188,7 +209,7 @@
|
|||||||
"Ifneedbe": "Indien nodig",
|
"Ifneedbe": "Indien nodig",
|
||||||
"Legend:": "Legenda:",
|
"Legend:": "Legenda:",
|
||||||
"Link": "Link",
|
"Link": "Link",
|
||||||
"Make your polls": "Maak je polls en datumprikkers",
|
"Make your polls": "Maak je eigen polls aan",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Next": "Volgende",
|
"Next": "Volgende",
|
||||||
"No": "Nee",
|
"No": "Nee",
|
||||||
@ -219,9 +240,12 @@
|
|||||||
"AppMail": "Mailadres van de applicatie",
|
"AppMail": "Mailadres van de applicatie",
|
||||||
"AppName": "Naam van de applicatie",
|
"AppName": "Naam van de applicatie",
|
||||||
"CleanUrl": "Schone URL",
|
"CleanUrl": "Schone URL",
|
||||||
"Database": "Gegevensbank",
|
"Database": "Database naam",
|
||||||
"DbConnectionString": "Verbindingstekenreeks",
|
"DbDriver": "Database driver",
|
||||||
|
"DbHost": "Database hostname",
|
||||||
|
"DbName": "Database naam",
|
||||||
"DbPassword": "Paswoord",
|
"DbPassword": "Paswoord",
|
||||||
|
"DbPort": "Database port",
|
||||||
"DbPrefix": "Prefix",
|
"DbPrefix": "Prefix",
|
||||||
"DbUser": "Gebruiker",
|
"DbUser": "Gebruiker",
|
||||||
"DefaultLanguage": "Standaardtaal",
|
"DefaultLanguage": "Standaardtaal",
|
||||||
@ -235,17 +259,17 @@
|
|||||||
"Select the language": "Selecteer taal"
|
"Select the language": "Selecteer taal"
|
||||||
},
|
},
|
||||||
"Mail": {
|
"Mail": {
|
||||||
"Author's message": "Bericht van de auteur",
|
"Author's message": "Bericht voor de autheur",
|
||||||
"FOOTER": "\"The road is long, but the way is clear…\"<br/>Framasoft lives only by your donations.<br/>Thank you in advance for your support https://soutenir.framasoft.org",
|
"FOOTER": "\"Het is een lange weg, maar de doel is duidelijk...\"<br/>Framasoft overleeft enkel door jouw donaties.<br/>Alvast bedankt voor je ondersteuning https://soutenir.framasoft.org",
|
||||||
"For sending to the polled users": "Link voor deelnemers",
|
"For sending to the polled users": "Link voor deelnemers",
|
||||||
"Notification of poll: %s": "Bericht van poll: %s",
|
"Notification of poll: %s": "Bericht van poll: %s",
|
||||||
"Poll's participation: %s": "Poll deelname: %s",
|
"Poll's participation: %s": "Poll deelname: %s",
|
||||||
"Someone just change your poll available at the following link %s.": "Iemand heeft je poll aangepast op de volgende link <a href=\"%1$s\">%1$s</a>.",
|
"Someone just change your poll available at the following link %s.": "Iemand heeft je poll aangepast op de volgende link <a href=\"%1$s\">%1$s</a>.",
|
||||||
"Someone just delete your poll %s.": "Iemand heeft zojuist je poll verwijderd \"%s\".",
|
"Someone just delete your poll %s.": "Iemand heeft zojuist je poll verwijderd \"%s\".",
|
||||||
"Thanks for filling the poll at the link above": "Vul de poll in via bovenstaande link",
|
"Thanks for filling the poll at the link above": "Bedankt om deel te nemen aan de poll op de volgende link",
|
||||||
"Thanks for your trust.": "Bedankt voor je vertrouwen.",
|
"Thanks for your trust.": "Bedankt voor je vertrouwen.",
|
||||||
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Dit is het bericht dat je kunt doorsturen aan de deelnemers van je poll.",
|
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Dit is het bericht dat je kunt doorsturen aan de deelnemers van je poll.",
|
||||||
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Dit bericht moet je NIET doorsturen aan de deelnemers. Hou dit voor jezelf. <br/><br/>Je kan de poll aanpassen met bovenstaande link.",
|
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Verzend dit bericht NIET naar de poll deelnemers. Je houdt het best privé.<br/><br/>Je kan je poll aanpassen op de volgende link",
|
||||||
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Je hebt de instellingen van je poll aangepast.<br/>Je kan de poll aanpassen via deze link ",
|
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Je hebt de instellingen van je poll aangepast.<br/>Je kan de poll aanpassen via deze link ",
|
||||||
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] Nieuwe instellingen voor je poll",
|
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] Nieuwe instellingen voor je poll",
|
||||||
"filled a vote.\nYou can find your poll at the link": "heeft een stem toegevoegd.<br/>Je kan je poll bezoeken op",
|
"filled a vote.\nYou can find your poll at the link": "heeft een stem toegevoegd.<br/>Je kan je poll bezoeken op",
|
||||||
@ -266,24 +290,27 @@
|
|||||||
"You have to provide a password to access the poll.": "Je moet een wachtwoord opgeven om toegang te krijgen tot deze poll."
|
"You have to provide a password to access the poll.": "Je moet een wachtwoord opgeven om toegang te krijgen tot deze poll."
|
||||||
},
|
},
|
||||||
"Poll results": {
|
"Poll results": {
|
||||||
|
"%s option": "%s option",
|
||||||
"Addition": "Totaal",
|
"Addition": "Totaal",
|
||||||
|
"Anyone will be able to access your email address after your vote": "Iedereen zal je e-mailadres kunnen zien nadat je gestemd hebt",
|
||||||
"Best choice": "Beste keuze",
|
"Best choice": "Beste keuze",
|
||||||
"Best choices": "Beste keuzes",
|
"Best choices": "Beste keuzes",
|
||||||
"Chart": "Grafiek",
|
"Chart": "Grafiek",
|
||||||
"Display the chart of the results": "Toon de grafiek met resultaten",
|
"Display the chart of the results": "Toon de grafiek met resultaten",
|
||||||
"Edit the line: %s": "Bewerk regel: %s",
|
"Edit the line: %s": "Bewerk regel: %s",
|
||||||
"Link to edit this particular line": "Link to edit this particular line",
|
"Link to edit this particular line": "Link om deze lijn aan te passen",
|
||||||
"Link to edit this particular line has been copied inside the clipboard!": "The link to edit this particular line has been copied to the clipboard!",
|
"Link to edit this particular line has been copied inside the clipboard!": "De link om deze lijn aan te passen is gekopieerd naar het klembord!",
|
||||||
"Remove the line:": "Verwijder regel:",
|
"Remove the line:": "Verwijder regel:",
|
||||||
"Save the choices": "Keuzes opslaan",
|
"Save the choices": "Keuzes opslaan",
|
||||||
"Scroll to the left": "Scroll naar links",
|
"Scroll to the left": "Scroll naar links",
|
||||||
"Scroll to the right": "Scroll naar rechts",
|
"Scroll to the right": "Scroll naar rechts",
|
||||||
"The best choice at this time is:": "De beste keuze is op dit moment:",
|
"The best choice at this time is:": "De beste keuze is op dit moment:",
|
||||||
"The bests choices at this time are:": "De beste keuzes zijn op dit moment:",
|
"The bests choices at this time are:": "De beste keuzes zijn op dit moment:",
|
||||||
"Vote ifneedbe for": "Vote under reserve for",
|
"Vote ifneedbe for": "Stem als nodig voor",
|
||||||
"Vote no for": "Stem ‘nee’ voor",
|
"Vote no for": "Stem ‘nee’ voor",
|
||||||
"Vote yes for": "Stem ‘ja’ voor",
|
"Vote yes for": "Stem ‘ja’ voor",
|
||||||
"Votes of the poll": "Stemmen",
|
"Votes of the poll": "Stemmen",
|
||||||
|
"Warning : anyone can access to your email address after voting": "Warning: Anyone can see your email address after voting",
|
||||||
"polled user": "ondervraagde gebruiker",
|
"polled user": "ondervraagde gebruiker",
|
||||||
"polled users": "ondervraagde gebruikers"
|
"polled users": "ondervraagde gebruikers"
|
||||||
},
|
},
|
||||||
@ -295,6 +322,8 @@
|
|||||||
"Cancel the name edit": "Naam bewerken annuleren",
|
"Cancel the name edit": "Naam bewerken annuleren",
|
||||||
"Cancel the rules edit": "Regels bewerken annuleren",
|
"Cancel the rules edit": "Regels bewerken annuleren",
|
||||||
"Cancel the title edit": "Titel bewerken annuleren",
|
"Cancel the title edit": "Titel bewerken annuleren",
|
||||||
|
"Collect of the polled users email addresses": "Collec the polled users' email addresses",
|
||||||
|
"Collecting the polled users emails": "E-mailadressen van de gepolde gebruikers aan het verzamelen",
|
||||||
"Edit the description": "Bewerk de beschrijving",
|
"Edit the description": "Bewerk de beschrijving",
|
||||||
"Edit the email adress": "Bewerk emailadres",
|
"Edit the email adress": "Bewerk emailadres",
|
||||||
"Edit the expiration date": "Bewerk de vervaldatum",
|
"Edit the expiration date": "Bewerk de vervaldatum",
|
||||||
@ -305,6 +334,7 @@
|
|||||||
"Expiration date": "Vervaldatum",
|
"Expiration date": "Vervaldatum",
|
||||||
"Export to CSV": "Exporteer naar CSV",
|
"Export to CSV": "Exporteer naar CSV",
|
||||||
"Initiator of the poll": "Initiatiefnemer van deze poll",
|
"Initiator of the poll": "Initiatiefnemer van deze poll",
|
||||||
|
"No collect of the polled users email addresses": "The polled users' email addresses are not collected",
|
||||||
"No password": "Geen wachtwoord",
|
"No password": "Geen wachtwoord",
|
||||||
"Only votes are protected": "Only votes are protected",
|
"Only votes are protected": "Only votes are protected",
|
||||||
"Password protected": "Beveiligd met een wachtwoord",
|
"Password protected": "Beveiligd met een wachtwoord",
|
||||||
@ -317,24 +347,35 @@
|
|||||||
"Remove the poll": "Verwijder de poll",
|
"Remove the poll": "Verwijder de poll",
|
||||||
"Results are hidden": "Resultaten zijn verborgen.",
|
"Results are hidden": "Resultaten zijn verborgen.",
|
||||||
"Results are visible": "Resultaten zijn zichtbaar.",
|
"Results are visible": "Resultaten zijn zichtbaar.",
|
||||||
"Rich editor": "Rich editor",
|
"Rich editor": "Geavanceerde editor",
|
||||||
"Save the description": "Beschrijving opslaan",
|
"Save the description": "Beschrijving opslaan",
|
||||||
"Save the email address": "Emailadres opslaan",
|
"Save the email address": "Emailadres opslaan",
|
||||||
"Save the new expiration date": "Nieuwe vervaldatum opslaan",
|
"Save the new expiration date": "Nieuwe vervaldatum opslaan",
|
||||||
"Save the new name": "Nieuwe naam opslaan",
|
"Save the new name": "Nieuwe naam opslaan",
|
||||||
"Save the new rules": "Nieuwe regels opslaan",
|
"Save the new rules": "Nieuwe regels opslaan",
|
||||||
"Save the new title": "Nieuwe titel opslaan",
|
"Save the new title": "Nieuwe titel opslaan",
|
||||||
"Simple editor": "Simple editor",
|
"Simple editor": "Simpele editor",
|
||||||
"Title": "Titel van de poll",
|
"Title": "Titel van de poll",
|
||||||
|
"Voters email adresses are collected": "Voters' email adresses are collected",
|
||||||
|
"Voters email adresses are collected and required": "Voters' email adresses are collected and required",
|
||||||
|
"Voters email adresses are collected, required and verified": "Voters' email adresses are collected, required and verified",
|
||||||
|
"Voters email adresses are not collected": "Voters' email adresses are not collected",
|
||||||
"Votes and comments are locked": "Stemmen en opmerkingen zijn uitgeschakeld",
|
"Votes and comments are locked": "Stemmen en opmerkingen zijn uitgeschakeld",
|
||||||
"Votes protected by password": "Stemmen beveiligd met een wachtwoord"
|
"Votes protected by password": "Stemmen beveiligd met een wachtwoord"
|
||||||
},
|
},
|
||||||
"Step 1": {
|
"Step 1": {
|
||||||
"All voters can modify any vote": "Alle stemmers kunnen elke stem aanpassen",
|
"All voters can modify any vote": "Alle stemmers kunnen elke stem aanpassen",
|
||||||
|
"Collect the polled users email addresses": "E-mailadressen van de gepolde gebruikers aan het verzamelen",
|
||||||
|
"Collect users email": "Verzamel de e-mailadressen van gebruikers",
|
||||||
|
"Collect voters email": "Collect voters' email addresses",
|
||||||
"Customize the URL": "Link verpersoonlijken",
|
"Customize the URL": "Link verpersoonlijken",
|
||||||
|
"Email addresses are collected but not required": "Email addresses are collected but not required",
|
||||||
|
"Email addresses are not collected": "Email addresses are not collected",
|
||||||
|
"Email addresses are required": "Email addresses are required",
|
||||||
|
"Email addresses are required and verified": "Email addresses are required and verified",
|
||||||
"Go to step 2": "Ga naar stap 2",
|
"Go to step 2": "Ga naar stap 2",
|
||||||
"Limit the amount of voters per option": "Limit the amount of voters per option",
|
"Limit the amount of voters per option": "Limiteer het aantal stemmen per optie",
|
||||||
"More informations here:": "More informations here:",
|
"More informations here:": "Meer informatie is hier te vinden:",
|
||||||
"Only the poll maker can see the poll's results": "Alleen degene die de poll aangemaakt heeft kan de resultaten zien",
|
"Only the poll maker can see the poll's results": "Alleen degene die de poll aangemaakt heeft kan de resultaten zien",
|
||||||
"Optional parameters": "Optionele parameters",
|
"Optional parameters": "Optionele parameters",
|
||||||
"Password choice": "Keuze",
|
"Password choice": "Keuze",
|
||||||
@ -348,16 +389,18 @@
|
|||||||
"Poll title": "Poll titel",
|
"Poll title": "Poll titel",
|
||||||
"Required fields cannot be left blank.": "Verplichte velden kunnen niet leeg blijven.",
|
"Required fields cannot be left blank.": "Verplichte velden kunnen niet leeg blijven.",
|
||||||
"The results are publicly visible": "De resultaten zijn zichtbaar zonder wachtwoord",
|
"The results are publicly visible": "De resultaten zijn zichtbaar zonder wachtwoord",
|
||||||
"To make the description more attractive, you can use the Markdown format.": "To make the description more attractive, you can use the Markdown format.",
|
"To make the description more attractive, you can use the Markdown format.": "Om je beschrijving aantrekkelijker te maken, kun je het Markdown formaat gebruiken.",
|
||||||
"To receive an email for each new comment": "Ontvang een email bij elke nieuwe opmerking",
|
"To receive an email for each new comment": "Ontvang een email bij elke nieuwe opmerking",
|
||||||
"To receive an email for each new vote": "Ontvang een email bij elke nieuwe stem",
|
"To receive an email for each new vote": "Ontvang een email bij elke nieuwe stem",
|
||||||
"Use a password to restrict access": "Toegang tot poll beperken met een paswoord",
|
"Use a password to restrict access": "Toegang tot poll beperken met een paswoord",
|
||||||
"Value Max": "Value Max",
|
"Value Max": "Maximum waarde",
|
||||||
"ValueMax instructions": "voters per options ",
|
"ValueMax instructions": "stemmen per optie",
|
||||||
"Voters can modify their vote themselves": "Stemmers kunnen hun eigen stem aanpassen",
|
"Voters can modify their vote themselves": "Stemmers kunnen hun eigen stem aanpassen",
|
||||||
"Votes cannot be modified": "Stemmen kunnen niet worden aangepast",
|
"Votes cannot be modified": "Stemmen kunnen niet worden aangepast",
|
||||||
|
"Warning : anyone can access to the polled users's email addresses.": "Warning: Anyone can see the polled users' email addresses.",
|
||||||
|
"Warning: anyone can access the polled users email addresses since all voters can modify any vote. You should restrict permission rules.": "Waarschuwing: Iedereen kan de e-mailadressen van alle stemmers zien, aangezien iedereen alle stemmen kan aanpassen. Je kan best de toegangsregels beperken.",
|
||||||
"You are in the poll creation section.": "Je bent in het onderdeel poll aanmaken.",
|
"You are in the poll creation section.": "Je bent in het onderdeel poll aanmaken.",
|
||||||
"You can enable or disable the editor at will.": "You can enable or disable the editor at will."
|
"You can enable or disable the editor at will.": "Je kan de editor aan of afzetten wanneer je dat wilt."
|
||||||
},
|
},
|
||||||
"Step 2": {
|
"Step 2": {
|
||||||
"Back to step 1": "Terug naar stap 1",
|
"Back to step 1": "Terug naar stap 1",
|
||||||
@ -374,7 +417,7 @@
|
|||||||
"To make a generic poll you need to propose at least two choices between differents subjects.": "Om een poll te maken, moet je tenminste twee keuzes geven.",
|
"To make a generic poll you need to propose at least two choices between differents subjects.": "Om een poll te maken, moet je tenminste twee keuzes geven.",
|
||||||
"URL of the image": "URL van het plaatje",
|
"URL of the image": "URL van het plaatje",
|
||||||
"You can add or remove additional choices with the buttons": "Je kan keuzes verwijderen of toevoegen met deze knoppen",
|
"You can add or remove additional choices with the buttons": "Je kan keuzes verwijderen of toevoegen met deze knoppen",
|
||||||
"the Markdown syntax": "Markdown syntax"
|
"the Markdown syntax": "de Markdown syntax"
|
||||||
},
|
},
|
||||||
"Step 2 date": {
|
"Step 2 date": {
|
||||||
"Add a day": "Voeg een dag toe",
|
"Add a day": "Voeg een dag toe",
|
||||||
@ -412,6 +455,8 @@
|
|||||||
"As poll administrator, you can change all the lines of this poll with this button": "Als pollbeheerder kan je alle regels van de poll wijzigen met deze knop",
|
"As poll administrator, you can change all the lines of this poll with this button": "Als pollbeheerder kan je alle regels van de poll wijzigen met deze knop",
|
||||||
"Back to the poll": "Terug naar de poll",
|
"Back to the poll": "Terug naar de poll",
|
||||||
"Choice added": "Keuze toegevoegd",
|
"Choice added": "Keuze toegevoegd",
|
||||||
|
"Collect the emails of the polled users for the choice": "Verzamel de e-mailadressen van de ondervraagde gebruikers voor de optie",
|
||||||
|
"Collect the emails of the polled users for this column": "Collect the email addresses of the polled users for this column",
|
||||||
"Column removed": "Kolom verwijderd",
|
"Column removed": "Kolom verwijderd",
|
||||||
"Column's adding": "Een kolom toevoegen",
|
"Column's adding": "Een kolom toevoegen",
|
||||||
"Comment deleted": "Opmerking verwijderd",
|
"Comment deleted": "Opmerking verwijderd",
|
||||||
@ -419,7 +464,7 @@
|
|||||||
"Confirm removal of all votes of the poll": "Bevestig het verwijderen van alle stemmen",
|
"Confirm removal of all votes of the poll": "Bevestig het verwijderen van alle stemmen",
|
||||||
"Confirm removal of the column.": "Bevestig de verwijdering van deze kolom.",
|
"Confirm removal of the column.": "Bevestig de verwijdering van deze kolom.",
|
||||||
"Confirm removal of the poll": "Bevestig het verwijderen van de poll",
|
"Confirm removal of the poll": "Bevestig het verwijderen van de poll",
|
||||||
"Delete the poll": "Verwijder de poll",
|
"Delete the poll": "Delete poll",
|
||||||
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Tenslotte kan je de eigenschappen van deze poll wijzigen, zoals titel, opmerkingen of je emailadres.",
|
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Tenslotte kan je de eigenschappen van deze poll wijzigen, zoals titel, opmerkingen of je emailadres.",
|
||||||
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Als je alleen een nieuwe tijd wil toevoegen aan een bestaande datum, voeg deze datum dan hier toe en kies een nieuwe tijd.",
|
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Als je alleen een nieuwe tijd wil toevoegen aan een bestaande datum, voeg deze datum dan hier toe en kies een nieuwe tijd.",
|
||||||
"Keep comments": "Behoud de opmerkingen",
|
"Keep comments": "Behoud de opmerkingen",
|
||||||
@ -433,7 +478,7 @@
|
|||||||
"Remove the column": "Kolom verwijderen",
|
"Remove the column": "Kolom verwijderen",
|
||||||
"Remove the comments": "Verwijder de opmerkingen",
|
"Remove the comments": "Verwijder de opmerkingen",
|
||||||
"Remove the votes": "Verwijder de stemmen",
|
"Remove the votes": "Verwijder de stemmen",
|
||||||
"The poll is created.": "The poll was created.",
|
"The poll is created.": "De poll is aangemaakt.",
|
||||||
"Vote added": "Stem toegevoegd",
|
"Vote added": "Stem toegevoegd",
|
||||||
"Vote deleted": "Stem verwijderd",
|
"Vote deleted": "Stem verwijderd",
|
||||||
"Vote updated": "Stem aangepast",
|
"Vote updated": "Stem aangepast",
|
||||||
@ -442,10 +487,18 @@
|
|||||||
"and add a new column with": "en voeg een nieuwe kokom toe met",
|
"and add a new column with": "en voeg een nieuwe kokom toe met",
|
||||||
"remove a column or a line with": "verwijder een kolom of regel met"
|
"remove a column or a line with": "verwijder een kolom of regel met"
|
||||||
},
|
},
|
||||||
|
"display_mails": {
|
||||||
|
"People who have answered 'If need be' to this option have left those email addresses :": "Users who voted 'If need be' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'If need be' to this option have not left any email addresses.": "Users who voted 'If need be' for this option have not left any email addresses:",
|
||||||
|
"People who have answered 'No' to this option have left those email addresses :": "Users who voted 'No' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'No' to this option have not left any email addresses.": "Users who voted 'No' for this option have not left any email addresses.",
|
||||||
|
"People who have answered 'Yes' to this option have left those email addresses :": "Users who voted 'Yes' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'Yes' to this option have not left any email addresses.": "Users who voted 'Yes' for this option have not left any email addresses."
|
||||||
|
},
|
||||||
"studs": {
|
"studs": {
|
||||||
"Adding the vote succeeded": "Stem toegevoegd",
|
"Adding the vote succeeded": "Stem toegevoegd",
|
||||||
"Deletion date:": "Verwijderdatum:",
|
"Deletion date:": "Verwijderdatum:",
|
||||||
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "Als je wil stemmen in deze poll, moet je je naam opgeven, je keuze maken, en deze opslaan met de plus-knop aan het eind van de regel.",
|
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "Als je wilt stemmen in deze poll, moet je je naam ingeven, een keuze maken en indienen door op de bewaar-knop op het einde van de lijn te klikken.",
|
||||||
"POLL_LOCKED_WARNING": "De beheerder heeft deze poll gesloten. Stemmen en opmerkingen zijn bevroren, je kunt niet meer deelnemen.",
|
"POLL_LOCKED_WARNING": "De beheerder heeft deze poll gesloten. Stemmen en opmerkingen zijn bevroren, je kunt niet meer deelnemen.",
|
||||||
"The poll is expired, it will be deleted soon.": "De poll is verlopen, hij wordt binnenkort verwijderd.",
|
"The poll is expired, it will be deleted soon.": "De poll is verlopen, hij wordt binnenkort verwijderd.",
|
||||||
"Update vote succeeded": "Stem gewijzigd",
|
"Update vote succeeded": "Stem gewijzigd",
|
||||||
|
107
locale/oc.json
107
locale/oc.json
@ -15,7 +15,7 @@
|
|||||||
"Framadate was initially based on ": "Framadate es inicialament basat sus ",
|
"Framadate was initially based on ": "Framadate es inicialament basat sus ",
|
||||||
"It is governed by the": "Es regit per la",
|
"It is governed by the": "Es regit per la",
|
||||||
"The software": "Lo logicial",
|
"The software": "Lo logicial",
|
||||||
"This software needs javascript and cookies enabled. It is compatible with the following web browsers:": "Aqueste logicial requerís l’activacion del javascript e dels cookies. Es compatible amb los navigadors web seguents :",
|
"This software needs javascript and cookies enabled. It is compatible with the following web browsers:": "Aqueste logicial requerís l’activacion del javascript e dels cookies. Es compatible amb los navegadors web seguents :",
|
||||||
"a software developed by the University of Strasbourg. Today, it is devevoped by the association Framasoft.": "un logicial desvolopat per l’Universitat d’Estrasborg. Uèi son desvolopament es fach per l’associacion Framasoft."
|
"a software developed by the University of Strasbourg. Today, it is devevoped by the association Framasoft.": "un logicial desvolopat per l’Universitat d’Estrasborg. Uèi son desvolopament es fach per l’associacion Framasoft."
|
||||||
},
|
},
|
||||||
"3rd section": {
|
"3rd section": {
|
||||||
@ -31,8 +31,9 @@
|
|||||||
"Back to administration": "Tornar a l’administracion",
|
"Back to administration": "Tornar a l’administracion",
|
||||||
"Change the poll": "Modificar lo sondatge",
|
"Change the poll": "Modificar lo sondatge",
|
||||||
"Confirm removal of the poll": "Confirmar la supression del sondatge",
|
"Confirm removal of the poll": "Confirmar la supression del sondatge",
|
||||||
"Deleted the poll": "Suprimir lo sondatge",
|
"Deleted the poll": "Poll deleted",
|
||||||
"Email": "Corrièl",
|
"Email": "Corrièl",
|
||||||
|
"Executed": "Executadas",
|
||||||
"Expiration date": "Expiracion",
|
"Expiration date": "Expiracion",
|
||||||
"Fail": "Fracàs",
|
"Fail": "Fracàs",
|
||||||
"Failed:": "Fracassat :",
|
"Failed:": "Fracassat :",
|
||||||
@ -49,11 +50,13 @@
|
|||||||
"Purged:": "Purgats :",
|
"Purged:": "Purgats :",
|
||||||
"See the poll": "Veire lo sondatge",
|
"See the poll": "Veire lo sondatge",
|
||||||
"Skipped:": "Passat :",
|
"Skipped:": "Passat :",
|
||||||
|
"Status": "Estatuts",
|
||||||
"Succeeded:": "Capitat :",
|
"Succeeded:": "Capitat :",
|
||||||
"Success": "Capitada",
|
"Success": "Capitada",
|
||||||
"Summary": "Resumit",
|
"Summary": "Resumit",
|
||||||
"Title": "Títol",
|
"Title": "Títol",
|
||||||
"Votes": "Vòtes",
|
"Votes": "Vòtes",
|
||||||
|
"Waiting": "En espèra",
|
||||||
"polls in the database at this time": "sondatges dins la banca de donadas actualament"
|
"polls in the database at this time": "sondatges dins la banca de donadas actualament"
|
||||||
},
|
},
|
||||||
"Check": {
|
"Check": {
|
||||||
@ -83,6 +86,7 @@
|
|||||||
"Comments of polled people": "Comentaris dels sondats",
|
"Comments of polled people": "Comentaris dels sondats",
|
||||||
"Remove the comment": "Suprimir lo comentari",
|
"Remove the comment": "Suprimir lo comentari",
|
||||||
"Send the comment": "Mandar lo comentari",
|
"Send the comment": "Mandar lo comentari",
|
||||||
|
"Type your name and a comment to send it": "Picatz vòstre nom e comentari d’en primièr per mandar lo formulari",
|
||||||
"Your comment": "Vòstre comentari",
|
"Your comment": "Vòstre comentari",
|
||||||
"anonyme": "anonim"
|
"anonyme": "anonim"
|
||||||
},
|
},
|
||||||
@ -104,7 +108,7 @@
|
|||||||
"EditLink": {
|
"EditLink": {
|
||||||
"Edit link for poll \"%s\"": "Ligam de modificacion del sondatge \"%s\"",
|
"Edit link for poll \"%s\"": "Ligam de modificacion del sondatge \"%s\"",
|
||||||
"Here is the link for editing your vote:": "Vaquí lo ligam per modificar vòstre vòte :",
|
"Here is the link for editing your vote:": "Vaquí lo ligam per modificar vòstre vòte :",
|
||||||
"If you don't want to lose your personalized link, we can send it to your email.": "A fin de pèrdre pas lo ligam de modificacion, podèm vos lo mandar per corrièl.",
|
"If you don't want to lose your personalized link, we can send it to your email.": "Se volètz pas perdre vòstre ligam personalizat, podètz vos lo enviar per corrièl",
|
||||||
"Please wait %d seconds before we can send an email to you then try again.": "Mercés d’esperar encara %d segondas abans que poscam vos mandar lo corrièl, puèi tornatz ensajar.",
|
"Please wait %d seconds before we can send an email to you then try again.": "Mercés d’esperar encara %d segondas abans que poscam vos mandar lo corrièl, puèi tornatz ensajar.",
|
||||||
"REMINDER": "RECÒRD",
|
"REMINDER": "RECÒRD",
|
||||||
"Send": "Mandar",
|
"Send": "Mandar",
|
||||||
@ -117,12 +121,12 @@
|
|||||||
"Can't create an empty column.": "Impossible de crear una colomna voida.",
|
"Can't create an empty column.": "Impossible de crear una colomna voida.",
|
||||||
"Can't create the config.php file in '%s'.": "Impossible de crear lo fichièr config.php dins '%s'.",
|
"Can't create the config.php file in '%s'.": "Impossible de crear lo fichièr config.php dins '%s'.",
|
||||||
"Comment failed": "Fracàs del comentari",
|
"Comment failed": "Fracàs del comentari",
|
||||||
"Cookies are disabled on your browser. Theirs activation is required to create a poll.": "Los cookies son desactivats sus vòstre navigador. Lor activacion es requesida per la creacion d’un sondatge.",
|
"Cookies are disabled on your browser. Theirs activation is required to create a poll.": "Los cookies son desactivats sus vòstre navegador. Lor activacion es requesida per la creacion d’un sondatge.",
|
||||||
"Enter a name": "Avètz pas picat cap de nom !",
|
"Enter a name": "Avètz pas picat cap de nom !",
|
||||||
"Enter a name and a comment!": "Mercé de garnir los dos camps !",
|
"Enter a name and a comment!": "Mercé de garnir los dos camps !",
|
||||||
"Enter a title": "Cal picar un títol !",
|
"Enter a title": "Cal picar un títol !",
|
||||||
"Enter an email address": "Cal picar una adreça de messatjariá !",
|
"Enter an email address": "Cal picar una adreça de messatjariá !",
|
||||||
"Error on amount of voters limitation : value must be an integer greater than 0": "Error on amount of voters limitation: Value must be an integer greater than 0",
|
"Error on amount of voters limitation : value must be an integer greater than 0": "Error pel limit de vòtes : la valor deu èsser un entièr màger que 0",
|
||||||
"Error!": "Error !",
|
"Error!": "Error !",
|
||||||
"Failed to delete all comments": "Fracàs de la supression de totes los comentaris",
|
"Failed to delete all comments": "Fracàs de la supression de totes los comentaris",
|
||||||
"Failed to delete all votes": "Fracàs de la supression de totes los vòtes",
|
"Failed to delete all votes": "Fracàs de la supression de totes los vòtes",
|
||||||
@ -131,10 +135,10 @@
|
|||||||
"Failed to delete the poll": "Fracàs de la supression del sondatge",
|
"Failed to delete the poll": "Fracàs de la supression del sondatge",
|
||||||
"Failed to delete the vote!": "Fracàs de la supression del vòte !",
|
"Failed to delete the vote!": "Fracàs de la supression del vòte !",
|
||||||
"Failed to insert the comment!": "Fracàs de l’apondon del comentari !",
|
"Failed to insert the comment!": "Fracàs de l’apondon del comentari !",
|
||||||
"Failed to save poll": "Fracàs del salvament del sondatge",
|
"Failed to save poll": "Fracàs d’enregistrament del sondatge",
|
||||||
"Forbidden!": "Defendut !",
|
"Forbidden!": "Defendut !",
|
||||||
"Framadate is not properly installed, please check the \"INSTALL\" to setup the database before continuing.": "Framadate es pas installat coma cal, legissètz lo fichièr per configurar la banca de donadas abans de contunhar.",
|
"Framadate is not properly installed, please check the \"INSTALL\" to setup the database before continuing.": "Framadate es pas installat coma cal, legissètz lo fichièr per configurar la banca de donadas abans de contunhar.",
|
||||||
"Javascript is disabled on your browser. Its activation is required to create a poll.": "Javascript es desactivat sus vòstre navigador. Son activacion es requesida per la creacion d’un sondatge.",
|
"Javascript is disabled on your browser. Its activation is required to create a poll.": "Javascript es desactivat sus vòstre navegador. Son activacion es requesida per la creacion d’un sondatge.",
|
||||||
"MISSING_VALUES": "Mancan de valors",
|
"MISSING_VALUES": "Mancan de valors",
|
||||||
"No polls found": "Cap de sondatge pas trobat",
|
"No polls found": "Cap de sondatge pas trobat",
|
||||||
"Password is empty": "Lo senhal es void.",
|
"Password is empty": "Lo senhal es void.",
|
||||||
@ -143,29 +147,46 @@
|
|||||||
"Poll id already used": "L’identificant es ja utilizat",
|
"Poll id already used": "L’identificant es ja utilizat",
|
||||||
"Something is going wrong...": "I a quicòm que truca...",
|
"Something is going wrong...": "I a quicòm que truca...",
|
||||||
"Something is wrong with the format": "I a quicòm que truca amb lo format.",
|
"Something is wrong with the format": "I a quicòm que truca amb lo format.",
|
||||||
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Something is wrong with the format: Customized URLs should only consist of alphanumeric characters and hyphens.",
|
"Something is wrong with the format: customized urls should only consist of alphanumeric characters and hyphens.": "Quicòm a trucat amb lo format : las URL personalizadas devon èsser compausadas de caractèrs alfanumerics e de jonhents longs.",
|
||||||
"Something is wrong with the format: name shouldn't have any spaces before or after": "Something is wrong with the format: name shouldn't have any spaces before or after",
|
"Something is wrong with the format: name shouldn't have any spaces before or after": "Quicòm a trucat amb lo format : lo nom deu pas conténer d’espacis avant nimai aprèp",
|
||||||
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "L’adreça picada es pas corrècta ! Cal una adreça valida (per exemple r.stallman@outlock.com) per recebre lo ligam cap al sondatge.",
|
"The address is not correct! You should enter a valid email address (like r.stallman@outlock.com) in order to receive the link to your poll.": "L’adreça picada es pas corrècta ! Cal una adreça valida (per exemple r.stallman@outlock.com) per recebre lo ligam cap al sondatge.",
|
||||||
"The column already exists": "La colomna existís ja",
|
"The column already exists": "La colomna existís ja",
|
||||||
"The name is invalid.": "Lo nom es pas valid.",
|
"The name is invalid.": "Lo nom es pas valid.",
|
||||||
"The name you've chosen already exist in this poll!": "Lo nom qu’avètz causit existís ja !",
|
"The name you've chosen already exist in this poll!": "Lo nom qu’avètz causit existís ja !",
|
||||||
"There is a problem with your choices": "I a un problèma amb vòstras causidas",
|
"There is a problem with your choices": "I a un problèma amb vòstras causidas",
|
||||||
|
"This id is not allowed": "This identifier is not allowed",
|
||||||
"This poll doesn't exist !": "Aqueste sondatge existís pas !",
|
"This poll doesn't exist !": "Aqueste sondatge existís pas !",
|
||||||
"Update vote failed": "La mesa a jorn del vòte a fracassat",
|
"Update vote failed": "La mesa a jorn del vòte a fracassat",
|
||||||
"You already voted": "Avètz ja votat",
|
"You already voted": "Avètz ja votat",
|
||||||
"You can't create a poll with hidden results with the following edition option:": "Podètz pas crear de sondatges amb de resultats amagats amb las opcions d’edicion seguentas : ",
|
"You can't create a poll with hidden results with the following edition option:": "Podètz pas crear de sondatges amb de resultats amagats amb las opcions d’edicion seguentas : ",
|
||||||
"You can't select more than %d dates": "Podètz pas causir mai de %d datas",
|
"You can't select more than %d dates": "Podètz pas causir mai de %d datas",
|
||||||
|
"You haven't filled the first section of the poll creation, or your session has expired.": "Avètz pas garnit la primièra seccion de la creacion del sondatge, o vòstra session a expirat.",
|
||||||
"You haven't filled the first section of the poll creation.": "Avètz pas garnit la primièra pagina del sondatge",
|
"You haven't filled the first section of the poll creation.": "Avètz pas garnit la primièra pagina del sondatge",
|
||||||
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
"Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry.": "Your vote wasn't counted, because someone voted in the meantime and it conflicted with your choices and the poll conditions. Please retry."
|
||||||
},
|
},
|
||||||
"FindPolls": {
|
"FindPolls": {
|
||||||
|
"Address": "Adreça",
|
||||||
|
"Created polls": "Sondatges creats",
|
||||||
"Have a good day!": "Bona jornada !",
|
"Have a good day!": "Bona jornada !",
|
||||||
"Here is the list of the polls that you manage on %s:": "Vaquí la lista dels sondatges que gerissètz sus %s :",
|
"Here is the list of the polls that you manage on %s:": "Vaquí la lista dels sondatges que gerissètz sus %s :",
|
||||||
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Se sètz pas a l’origina d’aquesta accion e que pensatz que s’agís d’un abús, podètz o senhalar a l’administrator sus %s.",
|
"If you weren't the source of this action and if you think this is an abuse of the service, please notify the administrator on %s.": "Se sètz pas a l’origina d’aquesta accion e se pensatz qu’es un abús, mercés de contactar l’administrator a %s.",
|
||||||
|
"Last access date": "Data de darrièr accès",
|
||||||
"List of your polls": "Lista de vòstres sondatges",
|
"List of your polls": "Lista de vòstres sondatges",
|
||||||
|
"Local Storage Help": "Per vos ajudar a retrapar vòstres sondatges precedents, salvagardam cada sondatge que creatz o qu’accedissètz dins vòstre navegador. Aquestas donadas son enregistradas pas que dins aqueste navigador. Las donadas seguentas seràn salvagardadas :",
|
||||||
|
"Local Storage Help Delete": "Per suprimir aquesta donada clicatz l’escobilhièr de la linha correspondenta o clicatz l’opcion « suprimir mon ensenhador de sondatge ». Aquò suprimirà pas vòstres sondatges.",
|
||||||
|
"Local Storage Help Information Accessed": "La data qu’avètz creat o accedit al sondatge",
|
||||||
|
"Local Storage Help Information Address": "It's address",
|
||||||
|
"Local Storage Help Information Title": "Lo títol del sondatge",
|
||||||
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS : aqueste corrièl es estat mandat perque avètz – o qualqu’un mai – a demandat la recuperacion dels sondatges creats amb aquesta adreça de corrièl.",
|
"PS: this email has been sent because you – or someone else – asked to get back the polls created with your email address.": "PS : aqueste corrièl es estat mandat perque avètz – o qualqu’un mai – a demandat la recuperacion dels sondatges creats amb aquesta adreça de corrièl.",
|
||||||
|
"Polls saved inside this browser": "Sondatges enregistrats dins aqueste navegador",
|
||||||
"Polls sent": "Sondatges mandats",
|
"Polls sent": "Sondatges mandats",
|
||||||
"Send me my polls": "Mandar mos sondatges"
|
"Remove all polls from this browser": "Levar totes mos sondatges de l’ensenhador del navegador",
|
||||||
|
"Remove poll from index": "Levar lo sondatge de l’ensenhador",
|
||||||
|
"Send me my polls": "Mandar mos sondatges",
|
||||||
|
"Send my polls by email": "Enviar mos sondatges per corrièl",
|
||||||
|
"There are no polls saved inside your browser yet": "Vòstre navegador a pas cap de sondatges enregistrats",
|
||||||
|
"Title": "Títol",
|
||||||
|
"Visited polls": "Sondatges consultats"
|
||||||
},
|
},
|
||||||
"Generic": {
|
"Generic": {
|
||||||
"(in the format name@mail.com)": "(al format nom@mail.com)",
|
"(in the format name@mail.com)": "(al format nom@mail.com)",
|
||||||
@ -174,7 +195,7 @@
|
|||||||
"Back": "Tornar",
|
"Back": "Tornar",
|
||||||
"Back to the homepage of": "Tornar a la pagina d’acuèlh de",
|
"Back to the homepage of": "Tornar a la pagina d’acuèlh de",
|
||||||
"Cancel": "Anullar",
|
"Cancel": "Anullar",
|
||||||
"Caption": "Legenda",
|
"Caption": "Informacions",
|
||||||
"Choice": "Causida",
|
"Choice": "Causida",
|
||||||
"Classic": "Classic",
|
"Classic": "Classic",
|
||||||
"Close": "Tampar",
|
"Close": "Tampar",
|
||||||
@ -185,10 +206,10 @@
|
|||||||
"Edit": "Modificar",
|
"Edit": "Modificar",
|
||||||
"Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate es un servici en linha que permet d’organizar un rendètz-vos o de prene de decisions rapidament e simplament.",
|
"Framadate is an online service for planning an appointment or make a decision quickly and easily.": "Framadate es un servici en linha que permet d’organizar un rendètz-vos o de prene de decisions rapidament e simplament.",
|
||||||
"Home": "Acuèlh",
|
"Home": "Acuèlh",
|
||||||
"Ifneedbe": "Se cal",
|
"Ifneedbe": "Amb resèrva",
|
||||||
"Legend:": "Legenda :",
|
"Legend:": "Legenda :",
|
||||||
"Link": "Ligam",
|
"Link": "Ligam",
|
||||||
"Make your polls": "Organizar de rencontres simplament, liurament",
|
"Make your polls": "Creatz vòstres sondatges",
|
||||||
"Markdown": "Markdown",
|
"Markdown": "Markdown",
|
||||||
"Next": "Contunhar",
|
"Next": "Contunhar",
|
||||||
"No": "Non",
|
"No": "Non",
|
||||||
@ -219,9 +240,12 @@
|
|||||||
"AppMail": "Adreça de corrièl de l’aplicacion",
|
"AppMail": "Adreça de corrièl de l’aplicacion",
|
||||||
"AppName": "Nom de l’aplicacion",
|
"AppName": "Nom de l’aplicacion",
|
||||||
"CleanUrl": "URL clars",
|
"CleanUrl": "URL clars",
|
||||||
"Database": "Banca de donadas",
|
"Database": "Nom de la basa de donadas",
|
||||||
"DbConnectionString": "Cadena de connexion",
|
"DbDriver": "Pilòt de la basa de donadas",
|
||||||
|
"DbHost": "Nom d’òst de la basa de donadas",
|
||||||
|
"DbName": "Nom de la basa de donadas",
|
||||||
"DbPassword": "Senhal",
|
"DbPassword": "Senhal",
|
||||||
|
"DbPort": "Pòrt de la basa de donadas",
|
||||||
"DbPrefix": "Prefixe",
|
"DbPrefix": "Prefixe",
|
||||||
"DbUser": "Utilizaire",
|
"DbUser": "Utilizaire",
|
||||||
"DefaultLanguage": "Lenga per defaut",
|
"DefaultLanguage": "Lenga per defaut",
|
||||||
@ -235,17 +259,17 @@
|
|||||||
"Select the language": "Seleccionar la lenga"
|
"Select the language": "Seleccionar la lenga"
|
||||||
},
|
},
|
||||||
"Mail": {
|
"Mail": {
|
||||||
"Author's message": "Reservat a l’autor",
|
"Author's message": "Messatge per l’autor",
|
||||||
"FOOTER": "« La rota es longa, mai lo camin es liure… »<br/>Framasoft viu solament amb vòstres dons (qu’òm pòt tirar de vòstres impòstes).<br/> Mercé d’avança pel vòstre sosten https://soutenir.framasoft.org.",
|
"FOOTER": "« La rota es longa, mai lo camin es liure… »<br/>Framasoft viu solament amb vòstres dons (qu’òm pòt tirar de vòstres impòstes).<br/> Mercé d’avança pel vòstre sosten https://soutenir.framasoft.org.",
|
||||||
"For sending to the polled users": "Per difusion als sondats",
|
"For sending to the polled users": "Per difusion als sondats",
|
||||||
"Notification of poll: %s": "Notificacion d’un sondatge : %s",
|
"Notification of poll: %s": "Notificacion d’un sondatge : %s",
|
||||||
"Poll's participation: %s": "Participacion al sondatge : %s",
|
"Poll's participation: %s": "Participacion al sondatge : %s",
|
||||||
"Someone just change your poll available at the following link %s.": "Qualqu’un ven de modificar vòstre sondatge accessible amb lo ligam seguent <a href=\"%1$s\">%1$s</a>.",
|
"Someone just change your poll available at the following link %s.": "Qualqu’un ven de modificar vòstre sondatge accessible amb lo ligam seguent <a href=\"%1$s\">%1$s</a>.",
|
||||||
"Someone just delete your poll %s.": "Qualqu’un ven de suprimir vòstre sondatge \"%s\".",
|
"Someone just delete your poll %s.": "Qualqu’un ven de suprimir vòstre sondatge \"%s\".",
|
||||||
"Thanks for filling the poll at the link above": "Mercé de ben voler participar al sondatge a l’adreça seguenta",
|
"Thanks for filling the poll at the link above": "Mercés de vòstra participacion al sondatge al ligam seguent",
|
||||||
"Thanks for your trust.": "Mercé per vòstra fisança.",
|
"Thanks for your trust.": "Mercé per vòstra fisança.",
|
||||||
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Aquò es lo messatge que serà mandat als sondats.<br/>Podètz ara transmetre aqueste messatge a totas las personas susceptiblas de participar al vòte.",
|
"This is the message you have to send to the people you want to poll. \nNow, you have to send this message to everyone you want to poll.": "Aquò es lo messatge que serà mandat als sondats.<br/>Podètz ara transmetre aqueste messatge a totas las personas susceptiblas de participar al vòte.",
|
||||||
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Aqueste messatge deu PAS èsser difusat als sondats. Es reservat a l’autor del sondatge.<br/><br/>Podètz modificar aqueste sondatge amb lo ligam seguent ",
|
"This message should NOT be sent to the polled people. It is private for the poll's creator.\n\nYou can now modify it at the link above": "Aqueste messatge deu PAS èsser mandat als participants. Vos cal lo gardar privat.<br/><br/>Podètz modificar lo sondatge amb lo ligam seguent",
|
||||||
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Avètz modificat la configuracion del sondatge.<br/>Podètz modificar aqueste sondatge amb lo ligam seguent",
|
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Avètz modificat la configuracion del sondatge.<br/>Podètz modificar aqueste sondatge amb lo ligam seguent",
|
||||||
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] Cambi de configuracion del sondatge",
|
"[ADMINISTRATOR] New settings for your poll": "[ADMINISTRATOR] Cambi de configuracion del sondatge",
|
||||||
"filled a vote.\nYou can find your poll at the link": "ven de votar.<br/>Podètz tornar a vòstre sondatge amb lo ligam seguent",
|
"filled a vote.\nYou can find your poll at the link": "ven de votar.<br/>Podètz tornar a vòstre sondatge amb lo ligam seguent",
|
||||||
@ -266,24 +290,27 @@
|
|||||||
"You have to provide a password to access the poll.": "Vos cal donar lo senhal per aver accès a aqueste sondatge."
|
"You have to provide a password to access the poll.": "Vos cal donar lo senhal per aver accès a aqueste sondatge."
|
||||||
},
|
},
|
||||||
"Poll results": {
|
"Poll results": {
|
||||||
|
"%s option": "%s option",
|
||||||
"Addition": "Soma",
|
"Addition": "Soma",
|
||||||
|
"Anyone will be able to access your email address after your vote": "Tot lo monde poirà veire vòstra adreça de corrièl aprèp vòstre vòte",
|
||||||
"Best choice": "Milhora causida",
|
"Best choice": "Milhora causida",
|
||||||
"Best choices": "Milhoras causidas",
|
"Best choices": "Milhoras causidas",
|
||||||
"Chart": "Grafic",
|
"Chart": "Grafic",
|
||||||
"Display the chart of the results": "Afichar lo grafic dels resultats",
|
"Display the chart of the results": "Afichar lo grafic dels resultats",
|
||||||
"Edit the line: %s": "Modificar la linha : %s",
|
"Edit the line: %s": "Modificar la linha : %s",
|
||||||
"Link to edit this particular line": "Link to edit this particular line",
|
"Link to edit this particular line": "Ligam per modificar aquesta linha en particular",
|
||||||
"Link to edit this particular line has been copied inside the clipboard!": "The link to edit this particular line has been copied to the clipboard!",
|
"Link to edit this particular line has been copied inside the clipboard!": "Lo ligam per modificar aquesta linha en particular es estada copiada al quichapapièrs !",
|
||||||
"Remove the line:": "Suprimir la linha :",
|
"Remove the line:": "Suprimir la linha :",
|
||||||
"Save the choices": "Enregistrar las causidas",
|
"Save the choices": "Enregistrar las causidas",
|
||||||
"Scroll to the left": "Far desfilar a man esquèrra",
|
"Scroll to the left": "Far desfilar a man esquèrra",
|
||||||
"Scroll to the right": "Far desfilar a man drecha",
|
"Scroll to the right": "Far desfilar a man drecha",
|
||||||
"The best choice at this time is:": "Pel moment, la causida amb lo mai de vòtes es :",
|
"The best choice at this time is:": "Pel moment, la causida amb lo mai de vòtes es :",
|
||||||
"The bests choices at this time are:": "Pel moment, las causidas amb lo mai de vòtes son :",
|
"The bests choices at this time are:": "Pel moment, las causidas amb lo mai de vòtes son :",
|
||||||
"Vote ifneedbe for": "Vote under reserve for",
|
"Vote ifneedbe for": "Vòtes amb resèrva per",
|
||||||
"Vote no for": "Votar « non » per",
|
"Vote no for": "Votar « non » per",
|
||||||
"Vote yes for": "Votar « òc » per",
|
"Vote yes for": "Votar « òc » per",
|
||||||
"Votes of the poll": "Vòtes del sondatge",
|
"Votes of the poll": "Vòtes del sondatge",
|
||||||
|
"Warning : anyone can access to your email address after voting": "Warning: Anyone can see your email address after voting",
|
||||||
"polled user": "votant",
|
"polled user": "votant",
|
||||||
"polled users": "votants"
|
"polled users": "votants"
|
||||||
},
|
},
|
||||||
@ -295,6 +322,8 @@
|
|||||||
"Cancel the name edit": "Anullar lo cambiament d’autor",
|
"Cancel the name edit": "Anullar lo cambiament d’autor",
|
||||||
"Cancel the rules edit": "Anullar lo cambiament de permissions",
|
"Cancel the rules edit": "Anullar lo cambiament de permissions",
|
||||||
"Cancel the title edit": "Anullar lo cambiament de títol",
|
"Cancel the title edit": "Anullar lo cambiament de títol",
|
||||||
|
"Collect of the polled users email addresses": "Collec the polled users' email addresses",
|
||||||
|
"Collecting the polled users emails": "Collècta de las adreças dels votants",
|
||||||
"Edit the description": "Modificar la descripcion",
|
"Edit the description": "Modificar la descripcion",
|
||||||
"Edit the email adress": "Modificar l’adreça",
|
"Edit the email adress": "Modificar l’adreça",
|
||||||
"Edit the expiration date": "Modificar la data d’expiracion",
|
"Edit the expiration date": "Modificar la data d’expiracion",
|
||||||
@ -305,6 +334,7 @@
|
|||||||
"Expiration date": "Data d’expiracion",
|
"Expiration date": "Data d’expiracion",
|
||||||
"Export to CSV": "Exportar en CSV",
|
"Export to CSV": "Exportar en CSV",
|
||||||
"Initiator of the poll": "Autor del sondatge",
|
"Initiator of the poll": "Autor del sondatge",
|
||||||
|
"No collect of the polled users email addresses": "The polled users' email addresses are not collected",
|
||||||
"No password": "Pas cap de senhal",
|
"No password": "Pas cap de senhal",
|
||||||
"Only votes are protected": "Only votes are protected",
|
"Only votes are protected": "Only votes are protected",
|
||||||
"Password protected": "Protegit per senhal",
|
"Password protected": "Protegit per senhal",
|
||||||
@ -326,12 +356,23 @@
|
|||||||
"Save the new title": "Enregistrar lo novèl títol",
|
"Save the new title": "Enregistrar lo novèl títol",
|
||||||
"Simple editor": "Editor simple",
|
"Simple editor": "Editor simple",
|
||||||
"Title": "Títol del sondatge",
|
"Title": "Títol del sondatge",
|
||||||
|
"Voters email adresses are collected": "Voters' email adresses are collected",
|
||||||
|
"Voters email adresses are collected and required": "Voters' email adresses are collected and required",
|
||||||
|
"Voters email adresses are collected, required and verified": "Voters' email adresses are collected, required and verified",
|
||||||
|
"Voters email adresses are not collected": "Voters' email adresses are not collected",
|
||||||
"Votes and comments are locked": "Los vòtes e comentaris son clavats",
|
"Votes and comments are locked": "Los vòtes e comentaris son clavats",
|
||||||
"Votes protected by password": "Vòtes protegits per senhal"
|
"Votes protected by password": "Vòtes protegits per senhal"
|
||||||
},
|
},
|
||||||
"Step 1": {
|
"Step 1": {
|
||||||
"All voters can modify any vote": "Totes los votants pòdon modificar sos vòtes",
|
"All voters can modify any vote": "Totes los votants pòdon modificar sos vòtes",
|
||||||
|
"Collect the polled users email addresses": "Collecting the polled users' email addresses",
|
||||||
|
"Collect users email": "Collectar las adreças dels utilizaires",
|
||||||
|
"Collect voters email": "Collect voters' email addresses",
|
||||||
"Customize the URL": "Personalizar lo ligam",
|
"Customize the URL": "Personalizar lo ligam",
|
||||||
|
"Email addresses are collected but not required": "Email addresses are collected but not required",
|
||||||
|
"Email addresses are not collected": "Email addresses are not collected",
|
||||||
|
"Email addresses are required": "Email addresses are required",
|
||||||
|
"Email addresses are required and verified": "Email addresses are required and verified",
|
||||||
"Go to step 2": "Anar a l’etapa 2",
|
"Go to step 2": "Anar a l’etapa 2",
|
||||||
"Limit the amount of voters per option": "Limitar lo nombre de votants per opcion",
|
"Limit the amount of voters per option": "Limitar lo nombre de votants per opcion",
|
||||||
"More informations here:": "Mai d’informacion aquí :",
|
"More informations here:": "Mai d’informacion aquí :",
|
||||||
@ -353,9 +394,11 @@
|
|||||||
"To receive an email for each new vote": "Recebre un messatge per cada participacion",
|
"To receive an email for each new vote": "Recebre un messatge per cada participacion",
|
||||||
"Use a password to restrict access": "Emplegar un senhal per restrénher l’accès al sondatge",
|
"Use a password to restrict access": "Emplegar un senhal per restrénher l’accès al sondatge",
|
||||||
"Value Max": "Valor maximala",
|
"Value Max": "Valor maximala",
|
||||||
"ValueMax instructions": "votants per opcions",
|
"ValueMax instructions": "votacion per opcion",
|
||||||
"Voters can modify their vote themselves": "Cadun pòt modificar son pròpri vòte",
|
"Voters can modify their vote themselves": "Cadun pòt modificar son pròpri vòte",
|
||||||
"Votes cannot be modified": "Cap de vòte pòt pas èsser modificat",
|
"Votes cannot be modified": "Cap de vòte pòt pas èsser modificat",
|
||||||
|
"Warning : anyone can access to the polled users's email addresses.": "Warning: Anyone can see the polled users' email addresses.",
|
||||||
|
"Warning: anyone can access the polled users email addresses since all voters can modify any vote. You should restrict permission rules.": "Avertiment : qual que siá pòt veire las adreças dels votants del moment que totes los votants pòdon modificar quin que siá vòte. Vos caldriá restrénher las permissions.",
|
||||||
"You are in the poll creation section.": "Avètz causit de crear un sondatge novèl.",
|
"You are in the poll creation section.": "Avètz causit de crear un sondatge novèl.",
|
||||||
"You can enable or disable the editor at will.": "Podètz activar o desactivar l’editor coma volgatz."
|
"You can enable or disable the editor at will.": "Podètz activar o desactivar l’editor coma volgatz."
|
||||||
},
|
},
|
||||||
@ -412,6 +455,8 @@
|
|||||||
"As poll administrator, you can change all the lines of this poll with this button": "En qualitat d’administrator podètz modificar totas las linhas d’aqueste sondatge amb aqueste boton",
|
"As poll administrator, you can change all the lines of this poll with this button": "En qualitat d’administrator podètz modificar totas las linhas d’aqueste sondatge amb aqueste boton",
|
||||||
"Back to the poll": "Tornar al sondatge",
|
"Back to the poll": "Tornar al sondatge",
|
||||||
"Choice added": "Causida aponduda",
|
"Choice added": "Causida aponduda",
|
||||||
|
"Collect the emails of the polled users for the choice": "Collècta de las adreças dels votants per la causida",
|
||||||
|
"Collect the emails of the polled users for this column": "Collect the email addresses of the polled users for this column",
|
||||||
"Column removed": "Colomna suprimida",
|
"Column removed": "Colomna suprimida",
|
||||||
"Column's adding": "Apondon de colomna",
|
"Column's adding": "Apondon de colomna",
|
||||||
"Comment deleted": "Comentari suprimit",
|
"Comment deleted": "Comentari suprimit",
|
||||||
@ -419,7 +464,7 @@
|
|||||||
"Confirm removal of all votes of the poll": "Confirmar la supression de totes los vòtes d’aqueste sondatge",
|
"Confirm removal of all votes of the poll": "Confirmar la supression de totes los vòtes d’aqueste sondatge",
|
||||||
"Confirm removal of the column.": "Confirmar la supression d’aquesta colomna.",
|
"Confirm removal of the column.": "Confirmar la supression d’aquesta colomna.",
|
||||||
"Confirm removal of the poll": "Confirmar la supression del sondatge",
|
"Confirm removal of the poll": "Confirmar la supression del sondatge",
|
||||||
"Delete the poll": "Suprimir lo sondatge",
|
"Delete the poll": "Delete poll",
|
||||||
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Per acabar podètz tanben modificar las informacions a prepaus d’aqueste sondatge coma lo títol, los comentaris o vòstre corrièl.",
|
"Finally, you can change the informations of this poll like the title, the comments or your email address.": "Per acabar podètz tanben modificar las informacions a prepaus d’aqueste sondatge coma lo títol, los comentaris o vòstre corrièl.",
|
||||||
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Se volètz apondre un orari a una data existenta, botatz la meteissa data e causissètz un orari mai. Serà normalament integrat al sondatge existent.",
|
"If you just want to add a new hour to an existant date, put the same date and choose a new hour.": "Se volètz apondre un orari a una data existenta, botatz la meteissa data e causissètz un orari mai. Serà normalament integrat al sondatge existent.",
|
||||||
"Keep comments": "Gardar los comentaris",
|
"Keep comments": "Gardar los comentaris",
|
||||||
@ -429,11 +474,11 @@
|
|||||||
"Keep this poll": "Gardar aqueste sondatge",
|
"Keep this poll": "Gardar aqueste sondatge",
|
||||||
"Keep votes": "Gardar los vòtes",
|
"Keep votes": "Gardar los vòtes",
|
||||||
"Poll fully deleted": "Sondatge totalament suprimit",
|
"Poll fully deleted": "Sondatge totalament suprimit",
|
||||||
"Poll saved": "Sondatge salvagardat",
|
"Poll saved": "Sondatge enregistrat",
|
||||||
"Remove the column": "Suprimir la colomna",
|
"Remove the column": "Suprimir la colomna",
|
||||||
"Remove the comments": "Suprimir los comentaris",
|
"Remove the comments": "Suprimir los comentaris",
|
||||||
"Remove the votes": "Suprimir los vòtes",
|
"Remove the votes": "Suprimir los vòtes",
|
||||||
"The poll is created.": "The poll was created.",
|
"The poll is created.": "Lo sondatge es estada creat.",
|
||||||
"Vote added": "Vòte apondut",
|
"Vote added": "Vòte apondut",
|
||||||
"Vote deleted": "Vòte suprimit",
|
"Vote deleted": "Vòte suprimit",
|
||||||
"Vote updated": "Vòte mes a jorn",
|
"Vote updated": "Vòte mes a jorn",
|
||||||
@ -442,10 +487,18 @@
|
|||||||
"and add a new column with": "E se avètz oblidat de picar una causida, podètz tornar apondre una colomna en clicant sus",
|
"and add a new column with": "E se avètz oblidat de picar una causida, podètz tornar apondre una colomna en clicant sus",
|
||||||
"remove a column or a line with": "escafar una colomna o una linha amb"
|
"remove a column or a line with": "escafar una colomna o una linha amb"
|
||||||
},
|
},
|
||||||
|
"display_mails": {
|
||||||
|
"People who have answered 'If need be' to this option have left those email addresses :": "Users who voted 'If need be' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'If need be' to this option have not left any email addresses.": "Users who voted 'If need be' for this option have not left any email addresses:",
|
||||||
|
"People who have answered 'No' to this option have left those email addresses :": "Users who voted 'No' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'No' to this option have not left any email addresses.": "Users who voted 'No' for this option have not left any email addresses.",
|
||||||
|
"People who have answered 'Yes' to this option have left those email addresses :": "Users who voted 'Yes' for this option have left those email addresses:",
|
||||||
|
"People who have answered 'Yes' to this option have not left any email addresses.": "Users who voted 'Yes' for this option have not left any email addresses."
|
||||||
|
},
|
||||||
"studs": {
|
"studs": {
|
||||||
"Adding the vote succeeded": "Apondon del vòte capitat",
|
"Adding the vote succeeded": "Apondon del vòte capitat",
|
||||||
"Deletion date:": "Data de supression :",
|
"Deletion date:": "Data de supression :",
|
||||||
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "Per participar a aqueste sondatge, picatz vòstre nom, triatz totas las valors que vos agradan e validatz amb lo boton al cap de linha.",
|
"If you want to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.": "Se volètz votar per aqueste sondatge, avètz de donar vòstre nom, far una causida, e l’enviar en seleccionar lo boton de salvagarda al cap de la linha.",
|
||||||
"POLL_LOCKED_WARNING": "L’administrator a clavat aqueste sondatge. Los vòtes e comentaris son gelats, es pas mai possible de participar",
|
"POLL_LOCKED_WARNING": "L’administrator a clavat aqueste sondatge. Los vòtes e comentaris son gelats, es pas mai possible de participar",
|
||||||
"The poll is expired, it will be deleted soon.": "Lo sondatge a expirat, serà lèu suprimit.",
|
"The poll is expired, it will be deleted soon.": "Lo sondatge a expirat, serà lèu suprimit.",
|
||||||
"Update vote succeeded": "Mesa a jorn del vòte amb succès",
|
"Update vote succeeded": "Mesa a jorn del vòte amb succès",
|
||||||
|
25
scripts/locale-add-key.pl
Executable file
25
scripts/locale-add-key.pl
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use JSON;
|
||||||
|
|
||||||
|
my $json = JSON->new->utf8->space_before(0)->space_after(1)->indent(4)->canonical(1);
|
||||||
|
|
||||||
|
my $en_file = 'locale/en.json';
|
||||||
|
my $en;
|
||||||
|
{
|
||||||
|
open my $fh, '<', $en_file or die;
|
||||||
|
local $/ = undef;
|
||||||
|
$en = <$fh>;
|
||||||
|
close $fh;
|
||||||
|
}
|
||||||
|
|
||||||
|
$en = $json->decode($en);
|
||||||
|
|
||||||
|
my ($key, $trad) = $ARGV[0] =~ m#^([^:]*):(.*)$#;
|
||||||
|
$en->{$key}->{$trad} = $trad;
|
||||||
|
|
||||||
|
open my $fh, '>', $en_file or die;
|
||||||
|
print $fh $json->encode($en);
|
||||||
|
close $fh;
|
9
scripts/locales.sh
Executable file
9
scripts/locales.sh
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
python -m json.tool < locale/en.json
|
||||||
|
if [[ $? == 0 ]];
|
||||||
|
then
|
||||||
|
json2po -P -i locale/en.json -t locale/en.json -o po/framadate.pot
|
||||||
|
else
|
||||||
|
echo "Can't convert json files to po, the json file is incorrect"
|
||||||
|
exit 1
|
||||||
|
fi
|
@ -1,202 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* This software is governed by the CeCILL-B license. If a copy of this license
|
|
||||||
* is not distributed with this file, you can obtain one at
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
|
|
||||||
*
|
|
||||||
* Authors of STUdS (initial project): Guilhem BORGHESI (borghesi@unistra.fr) and Rapha?l DROZ
|
|
||||||
* Authors of Framadate/OpenSondage: Framasoft (https://github.com/framasoft)
|
|
||||||
*
|
|
||||||
* =============================
|
|
||||||
*
|
|
||||||
* Ce logiciel est r?gi par la licence CeCILL-B. Si une copie de cette licence
|
|
||||||
* ne se trouve pas avec ce fichier vous pouvez l'obtenir sur
|
|
||||||
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
|
|
||||||
*
|
|
||||||
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Rapha?l DROZ
|
|
||||||
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
|
|
||||||
*/
|
|
||||||
|
|
||||||
function d($thing) {
|
|
||||||
echo $thing . "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
function i($if, $thing, $copied = ' copied') {
|
|
||||||
if ($if) {
|
|
||||||
echo $thing . $copied . "\n";
|
|
||||||
} else {
|
|
||||||
echo '[fail] ' . $thing . "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function rcopy($src, $dst) {
|
|
||||||
$dir = opendir($src);
|
|
||||||
@mkdir($dst);
|
|
||||||
$copied = true;
|
|
||||||
while (false !== ($file = readdir($dir))) {
|
|
||||||
if (($file !== '.') && ($file !== '..')) {
|
|
||||||
if (is_dir($src . '/' . $file)) {
|
|
||||||
$copied &= rcopy($src . '/' . $file, $dst . '/' . $file);
|
|
||||||
} else {
|
|
||||||
$copied &= copy($src . '/' . $file, $dst . '/' . $file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
closedir($dir);
|
|
||||||
return !!$copied;
|
|
||||||
}
|
|
||||||
|
|
||||||
function rrmdir($dir) {
|
|
||||||
$files = array_diff(scandir($dir), ['.', '..']);
|
|
||||||
foreach ($files as $file) {
|
|
||||||
(is_dir("$dir/$file")) ? rrmdir("$dir/$file") : unlink("$dir/$file");
|
|
||||||
}
|
|
||||||
return rmdir($dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
function copyDependencyToBuild($dirname) {
|
|
||||||
return @mkdir(BUILD_VENDOR . $dirname, 755, true) && @rcopy(VENDOR . $dirname, BUILD_VENDOR . $dirname);
|
|
||||||
}
|
|
||||||
|
|
||||||
function copyFiles($files, &$result) {
|
|
||||||
foreach ($files as $key => $file) {
|
|
||||||
if (is_int($key)) {
|
|
||||||
$key = $file;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_dir(ROOT . '/' . $key)) {
|
|
||||||
$result->$key = @rcopy(ROOT . '/' . $key, BUILD . '/' . $file);
|
|
||||||
} elseif (is_file(ROOT . '/' . $key)) {
|
|
||||||
$result->$key = @copy(ROOT . '/' . $key, BUILD . '/' . $file);
|
|
||||||
}
|
|
||||||
|
|
||||||
i($result->$key, $key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function zip($source, $destination) {
|
|
||||||
if (extension_loaded('zip')) {
|
|
||||||
if (file_exists($source)) {
|
|
||||||
$zip = new ZipArchive();
|
|
||||||
if ($zip->open($destination, ZIPARCHIVE::CREATE)) {
|
|
||||||
$source = realpath($source);
|
|
||||||
if (is_dir($source)) {
|
|
||||||
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
|
|
||||||
foreach ($files as $file) {
|
|
||||||
if (in_array(basename($file), ['.', '..'], true)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$file = realpath($file);
|
|
||||||
if ($file !== $source && is_dir($file)) {
|
|
||||||
$zip->addEmptyDir(str_replace($source . '\\', '', str_replace($source . '/', '', $file)));
|
|
||||||
} else if (is_file($file)) {
|
|
||||||
$zip->addFromString(str_replace($source . '\\', '', str_replace($source . '/', '', $file)), file_get_contents($file));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (is_file($source)) {
|
|
||||||
$zip->addFromString(basename($source), file_get_contents($source));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $zip->close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
ini_set('max_execution_time', 600);
|
|
||||||
ini_set('memory_limit', '1024M');
|
|
||||||
|
|
||||||
define('ROOT', realpath(__DIR__ . '/..'));
|
|
||||||
define('VENDOR', ROOT . '/vendor');
|
|
||||||
define('DIST', ROOT . '/dist');
|
|
||||||
define('BUILD', ROOT . '/build');
|
|
||||||
define('BUILD_VENDOR', BUILD . '/vendor');
|
|
||||||
|
|
||||||
include ROOT . '/app/inc/constants.php';
|
|
||||||
|
|
||||||
$result = new stdClass();
|
|
||||||
|
|
||||||
echo '<pre>';
|
|
||||||
|
|
||||||
// Delete old dist>build directories
|
|
||||||
|
|
||||||
if (file_exists(DIST)) {
|
|
||||||
$result->rmdirDist = rrmdir(DIST);
|
|
||||||
i($result->rmdirDist, 'Dist', ' deleted');
|
|
||||||
}
|
|
||||||
if (file_exists(BUILD)) {
|
|
||||||
$result->rmdirBuild = rrmdir(BUILD);
|
|
||||||
i($result->rmdirBuild, 'Build', ' deleted');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create dist>build directories
|
|
||||||
|
|
||||||
$result->mkdirDist = mkdir(DIST, 755);
|
|
||||||
i($result->mkdirDist, 'Dist', ' created');
|
|
||||||
$result->mkdirBuild = mkdir(BUILD, 755);
|
|
||||||
i($result->mkdirBuild, 'Build', ' created');
|
|
||||||
|
|
||||||
// Copy dependencies files
|
|
||||||
|
|
||||||
d('# Dependencies');
|
|
||||||
|
|
||||||
$result->composer = copyDependencyToBuild('/composer');
|
|
||||||
i($result->composer, 'composer');
|
|
||||||
|
|
||||||
$result->o80 = copyDependencyToBuild('/o80/i18n/src');
|
|
||||||
i($result->o80, 'o80-i18n');
|
|
||||||
|
|
||||||
$result->smarty = copyDependencyToBuild('/smarty/smarty/libs');
|
|
||||||
i($result->smarty, 'smarty');
|
|
||||||
|
|
||||||
$result->autoload = @copy(VENDOR . '/autoload.php', BUILD_VENDOR . '/autoload.php');
|
|
||||||
i($result->autoload, 'autoload');
|
|
||||||
|
|
||||||
// Copy assets
|
|
||||||
|
|
||||||
d('# Assets');
|
|
||||||
copyFiles(['css', 'fonts', 'images', 'js'], $result);
|
|
||||||
|
|
||||||
// Copy sources
|
|
||||||
|
|
||||||
d('# Source directories');
|
|
||||||
copyFiles(['admin', 'app', 'locale', 'tpl'], $result);
|
|
||||||
|
|
||||||
d('# Source files');
|
|
||||||
$files = [
|
|
||||||
'adminstuds.php',
|
|
||||||
'bandeaux.php',
|
|
||||||
'create_classic_poll.php',
|
|
||||||
'create_date_poll.php',
|
|
||||||
'create_poll.php',
|
|
||||||
'exportcsv.php',
|
|
||||||
'favicon.ico',
|
|
||||||
'htaccess.txt',
|
|
||||||
'index.php',
|
|
||||||
'INSTALL.md',
|
|
||||||
'LICENCE.fr.txt',
|
|
||||||
'LICENSE.en.txt',
|
|
||||||
'maintenance.php',
|
|
||||||
'php.ini',
|
|
||||||
'README.md',
|
|
||||||
'robots.txt',
|
|
||||||
'studs.php'
|
|
||||||
];
|
|
||||||
copyFiles($files, $result);
|
|
||||||
|
|
||||||
// Zip Dist
|
|
||||||
$output = DIST . '/framadate-' . VERSION . '-' . date('Ymd') . '.zip';
|
|
||||||
zip(BUILD, $output);
|
|
||||||
rrmdir(BUILD);
|
|
||||||
|
|
||||||
if (isset($_GET['verbose'])) {
|
|
||||||
var_dump($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
d('--------');
|
|
||||||
d('Distribution file: ' . realpath($output));
|
|
||||||
|
|
||||||
$generatedIn = round((microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']), 4);
|
|
||||||
d('========');
|
|
||||||
d('Generated in: ' . $generatedIn . ' secondes');
|
|
||||||
echo '</pre>';
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user