Merge branch 'release' into develop

This commit is contained in:
Antonin 2016-08-08 15:23:42 +02:00
commit e79a0bf683
19 changed files with 337 additions and 353 deletions

View File

@ -1,17 +1,36 @@
# Changelog de framadate
## Version 1.0 (Antonin - Julien - Luc - Olivier - Pierre)
- Technique : Travail sur le service des notifications
- Technique : Prise en compte de l'entête X-Forwarded-Proto
- Technique : Utilisation de PHPMailer pour l'envoi de mails
## Version 1.0 (Erik - Markus - Ecmu - Julien - Imre - Luc - Pierre - Antonin - Olivier)
- Amélioration : Conserver les votes en cours lors que l'utilisateur envoie un commentaire
- Amélioration : Les mails sont envoyés en multipart pour les lecteurs ne supportant pas HMTL
- Amélioration : Les mails sont envoyés en multipart pour les lecteurs ne supportant pas HTML
- Amélioration : Masquer l'encart au dessus du tableau des votes, maintenant visible grâce à un bouton
- Amélioration : Les commentaires sont horodatés
- Amélioration : Auto wrapping de la description du sondage
- Amélioration : Possibilité de choisir l'URL du sondage
- Amélioration : Protection de sondages par mots de passe
- Amélioration : Un click dans les champs URL sélectionne le contenu
- Amélioration : Choix du lien du sondage
- Amélioration : Possibilité de modifier un sondage après expiration
- Amélioration : Confirmation demandée pour supprimer une colonne
- Amélioration : Création d'une sondage par intervale de dates
- Amélioration : Possibilité de ne pas faire de choix sur une colonne
- Amélioration : Amélioration du format des mails
- Amélioration : Amélioration du mode où chaque votant ne peut modifier que son vote
- Amélioration : Fichier check.php pour vérifier la possibilité d'installation
- Amélioration : Changements de libellés
- Amélioration : Admin - Rechercher un sondage grâce à l'adresse mail
- Amélioration : Fluidification du défilement de la page
- Fix : Correction de traductions
- Fix : Corrections diverses sur les dates et leurs formats
- Fix : Impossible d'ajouter une colonne vide
- Fix : Possibilité de supprimer des colonnes vides
- Fix : Correction du formulaire de commentaires
- Fix : Correction d'échappements de caractères
- Fix : Rectification des contraintes sur les sondage expirés
- Technique : Travail sur le service des notifications
- Technique : Prise en compte de l'entête X-Forwarded-Proto
- Technique : Utilisation de PHPMailer pour l'envoi de mails
- Technique : Encore de la Smartization
- Technique : Pas mal de nettoyage de code
## Version 0.9.6 (goofy-bz - Olivier - Quentin - Vincent)
- Fix : Corrections mineures de langues

View File

@ -122,8 +122,7 @@ if (isset($_POST['update_poll_info'])) {
break;
}
} elseif ($field == 'expiration_date') {
$expiration_date = filter_input(INPUT_POST, 'expiration_date', FILTER_VALIDATE_REGEXP,
['options' => ['regexp' => '#^[0-9]{4}-[0-9]{2}-[0-9]{2}$#']]);
$expiration_date = $inputService->filterDate($_POST['expiration_date']);
if ($expiration_date) {
$poll->end_date = $expiration_date;
$updated = true;

View File

@ -52,6 +52,12 @@ class Form
*/
public $hidden;
/**
* If true, the author want to customize the URL
* @var boolean
*/
public $use_customized_url;
/**
* If true, a password will be needed to access the poll
* @var boolean
@ -99,4 +105,4 @@ class Form
usort($this->choices, array('Framadate\Choice', 'compare'));
}
}
}

View File

@ -4,6 +4,7 @@ namespace Framadate\Services;
use Framadate\Exception\MomentAlreadyExistsException;
use Framadate\FramaDB;
use Framadate\Repositories\RepositoryFactory;
use Framadate\Utils;
/**
* Class AdminPollService
@ -33,7 +34,7 @@ class AdminPollService {
function updatePoll($poll) {
global $config;
if ($poll->end_date > $poll->creation_date && $poll->end_date <= strtotime($poll->creation_date) + (86400 * $config['default_poll_duration'])) {
if ($poll->end_date > $poll->creation_date) {
return $this->pollRepository->update($poll);
} else {
return false;

View File

@ -17,6 +17,7 @@
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
*/
namespace Framadate\Services;
use DateTime;
/**
* This class helps to clean all inputs from the users or external services.
@ -90,6 +91,11 @@ class InputService {
return $this->returnIfNotBlank($comment);
}
public function filterDate($date) {
$dDate = DateTime::createFromFormat(__('Date', 'datetime_parseformat'), $date)->setTime(0, 0, 0);
return $dDate->format('Y-m-d H:i:s');
}
/**
* Return the value if it's not blank.
*
@ -107,4 +113,4 @@ class InputService {
return null;
}
}
}

View File

@ -59,8 +59,12 @@ class Utils {
<link rel="stylesheet" href="' . self::get_server_name() . 'css/print.css" media="print" />
<script type="text/javascript" src="' . self::get_server_name() . 'js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="' . self::get_server_name() . 'js/bootstrap.min.js"></script>
<script type="text/javascript" src="' . self::get_server_name() . 'js/bootstrap-datepicker.js"></script>
<script type="text/javascript" src="' . self::get_server_name() . 'js/locales/bootstrap-datepicker.' . $locale . '.js"></script>
<script type="text/javascript" src="' . self::get_server_name() . 'js/bootstrap-datepicker.js"></script>';
if ('en' != $locale) {
echo '
<script type="text/javascript" src="' . self::get_server_name() . 'js/locales/bootstrap-datepicker.' . $locale . '.js"></script>';
}
echo '
<script type="text/javascript" src="' . self::get_server_name() . 'js/core.js"></script>';
if (is_file($_SERVER['DOCUMENT_ROOT'] . "/nav/nav.js")) {
echo '<script src="/nav/nav.js" id="nav_js" type="text/javascript" charset="utf-8"></script><!-- /Framanav -->';
@ -183,7 +187,7 @@ class Utils {
}
public static function fromPostOrDefault($postKey, $default = '') {
return !empty($_POST[$postKey]) ? Utils::htmlEscape($_POST[$postKey]) : $default;
return !empty($_POST[$postKey]) ? $_POST[$postKey] : $default;
}
public static function base64url_encode($input) {

View File

@ -56,8 +56,8 @@ if (isset($_GET['type']) && $_GET['type'] == 'date' ||
$goToStep2 = filter_input(INPUT_POST, GO_TO_STEP_2, FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => '/^(date|classic)$/']]);
if ($goToStep2) {
$title = $inputService->filterTitle($_POST['title']);
$customizeId = isset($_POST['customize_id']) ? $inputService->filterBoolean($_POST['customize_id']) : false;
$id = $customizeId == true ? $inputService->filterId($_POST['id']) : null;
$use_customized_url = isset($_POST['use_customized_url']) ? $inputService->filterBoolean($_POST['use_customized_url']) : false;
$customized_url = $use_customized_url == true ? $inputService->filterId($_POST['customized_url']) : null;
$name = $inputService->filterName($_POST['name']);
$mail = $config['use_smtp'] == true ? $inputService->filterMail($_POST['mail']) : null;
$description = $inputService->filterDescription($_POST['description']);
@ -77,10 +77,11 @@ if ($goToStep2) {
$error_on_description = false;
$error_on_password = false;
$error_on_password_repeat = false;
$error_on_id = false;
$error_on_customized_url = false;
$_SESSION['form']->title = $title;
$_SESSION['form']->id = $id;
$_SESSION['form']->id = $customized_url;
$_SESSION['form']->use_customized_url = $use_customized_url;
$_SESSION['form']->admin_name = $name;
$_SESSION['form']->admin_mail = $mail;
$_SESSION['form']->description = $description;
@ -102,12 +103,12 @@ if ($goToStep2) {
$error_on_title = true;
}
if ($customizeId) {
if ($id === false) {
$error_on_id = true;
} else if ($pollRepository->existsById($id)) {
$error_on_id = true;
$error_on_id_msg = __('Error', 'Poll id already used');
if ($use_customized_url) {
if ($customized_url === false) {
$error_on_customized_url = true;
} else if ($pollRepository->existsById($customized_url)) {
$error_on_customized_url = true;
$error_on_customized_url_msg = __('Error', 'Poll id already used');
}
}
@ -134,7 +135,7 @@ if ($goToStep2) {
}
}
if ($title && $name && $email_OK && !$error_on_title && !$error_on_id && !$error_on_description && !$error_on_name
if ($title && $name && $email_OK && !$error_on_title && !$error_on_customized_url && !$error_on_description && !$error_on_name
&& !$error_on_password && !$error_on_password_repeat
) {
@ -172,7 +173,7 @@ $errors = array(
'aria' => '',
'class' => ''
),
'id' => array(
'customized_url' => array(
'msg' => '',
'aria' => '',
'class' => ''
@ -215,10 +216,10 @@ if (!empty($_POST[GO_TO_STEP_2])) {
$errors['title']['msg'] = __('Error', 'Something is wrong with the format');
}
if ($error_on_id) {
$errors['id']['aria'] = 'aria-describeby="poll_comment_error" ';
$errors['id']['class'] = ' has-error';
$errors['id']['msg'] = isset($error_on_id_msg) ? $error_on_id_msg : __('Error', 'Something is wrong with the format');
if ($error_on_customized_url) {
$errors['customized_url']['aria'] = 'aria-describeby="customized_url" ';
$errors['customized_url']['class'] = ' has-error';
$errors['customized_url']['msg'] = isset($error_on_customized_url_msg) ? $error_on_customized_url_msg : __('Error', 'Something is wrong with the format');
}
if ($error_on_description) {
@ -270,7 +271,8 @@ $smarty->assign('goToStep2', GO_TO_STEP_2);
$smarty->assign('poll_type', $poll_type);
$smarty->assign('poll_title', Utils::fromPostOrDefault('title', $_SESSION['form']->title));
$smarty->assign('poll_id', Utils::fromPostOrDefault('id', $_SESSION['form']->id));
$smarty->assign('customized_url', Utils::fromPostOrDefault('customized_url', $_SESSION['form']->id));
$smarty->assign('use_customized_url', Utils::fromPostOrDefault('use_customized_url', $_SESSION['form']->use_customized_url));
$smarty->assign('poll_description', !empty($_POST['description']) ? $_POST['description'] : $_SESSION['form']->description);
$smarty->assign('poll_name', Utils::fromPostOrDefault('name', $_SESSION['form']->admin_name));
$smarty->assign('poll_mail', Utils::fromPostOrDefault('mail', $_SESSION['form']->admin_mail));

View File

@ -36,7 +36,7 @@ $pollService = new PollService($connect, new $logService());
/* ---- */
$demoPoll = $pollService->findById('aqg259dth55iuhwm');
$nbcol = $config['show_what_is_that'] + $config['show_the_software'] + $config['show_cultivate_your_garden'];
$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_the_software', $config['show_the_software']);

View File

@ -34,27 +34,13 @@ $(document).ready(function () {
});
/**
* Enable/Disable custom id options
* Enable/Disable custom url options
*/
var $pollId = $("#poll_id");
var $customizeId = $("#customize_id");
// Init checkbox + input
if (($pollId.val() || $pollId.attr('value') || "").length > 0) {
$customizeId.attr('checked', 'checked');
$pollId.removeAttr("disabled");
}
// Listen for checkbox changes
$customizeId.change(function () {
$("#use_customized_url").change(function () {
if ($(this).prop("checked")) {
$pollId
.removeAttr("disabled")
.val($pollId.attr("tmp") || $pollId.attr('value'));
$("#customized_url_options").removeClass("hidden");
} else {
$pollId
.attr("disabled", "disabled")
.attr("tmp", $pollId.val())
.val("");
$("#customized_url_options").addClass("hidden");
}
});
@ -95,4 +81,4 @@ $(document).ready(function () {
wrapper.enable();
}
});
});

View File

@ -230,6 +230,7 @@
"Required fields cannot be left blank.": "Trugarez da leuniañ ar maeziennoù ret, merket gant ur *.",
"Poll title": "Titl ar sontadeg",
"Poll id": "Naoudi",
"Customize the URL": "BR_Personnaliser le lien",
"Poll id rules": "Gallout a ra an naoudi enderc'hel lizherennoù, niverennoù ha tiredoù \"-\".",
"Poll id warning": "Ma lakait un naoudi re simpl e c'hallo tud all dont war bajenn ho sontadeg. Aliet eo gwareziñ anezhañ gant ur ger-tremen.",
"Votes cannot be modified": "N'hall ket ar mouezhioù bezañ kemmet",
@ -329,95 +330,3 @@
"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ñ.",
"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."
},
"Mail": {
"Poll's participation: %s": "Mouezh nevez: %s",
"Notification of poll: %s": "Rebuziñ ur sontadeg: %s",
"filled a vote.\nYou can find your poll at the link": "a zo o paouez mouezhiañ.<br/>Gallout a rit adkavout ho sontadeg gant an ere da heul",
"updated a vote.\nYou can find your poll at the link": "a zo o paouez hizivaat ur vouezh.<br/>Gallout a rit adkavout ho sontadeg gant an ere da heul",
"wrote a comment.\nYou can find your poll at the link": "a zo o paouez skrivañ un evezhiadenn.<br/>Gallout a rit adkavout ho sontadeg gant an ere da heul",
"Someone just change your poll available at the following link %s.": "Kemmet eo bet ho sontadeg. Gallout a rit e adkavout gant an ere-mañ: <a href=\"%1$s\">%1$s</a>.",
"Someone just delete your poll %s.": "Dilamet eo bet ho sontadeg \"%s\".",
"Thanks for your trust.": "Trugarez evit ho fiziañs.",
"FOOTER": "« Hir eo an hent, met frank eo ar roudenn… »<br/>Framasoft a vev gant ho roadoù hepken (didennadus eus an tailhoù).<br/>Trugarez en a-raok evit ho skoazell http://soutenir.framasoft.org.",
"[ADMINISTRATOR] New settings for your poll": "[MEROUR] Kemm kefluniadur ho sontadeg",
"You have changed the settings of your poll. \nYou can modify this poll with this link": "Kemmet ho peus kefluniadur ho sontadeg.<br/>Gallout a rit kemmañ ho sontadeg gant an ere da-heul",
"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.": "Setu ar gemennadenn a rank bezañ kaset d'an holl dud sontet.<br/>Gallout a rit bremañ treuzkas ar gemennadenn-mañ d'an holl dud a rank kemer perzh er sontadeg.",
"hast just created a poll called": " a zo o paouez krouiñ ur sontadeg anvet ",
"Thanks for filling the poll at the link above": "Trugarez da gemer perzh er sontadeg dre an ere a-us",
"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": "ARABAT treuzkas ar gemennadenn-mañ d'an dud sontet. Evit aozer ar sontadeg eo nemetken.<br/><br/>Gallout a rit kemmañ ar sontadeg gant an ere da heul ",
"Author's message": "Evit an aozer hepken",
"For sending to the polled users": "Da gas d'an dud sontet"
},
"Installation": {
"AppMail": "Chomlec'h postel an arload",
"AppName": "Anv an arload",
"CleanUrl": "URL naet",
"Database": "Stlennvon",
"DbConnectionString": "Chadenn gennaskañ",
"DbPassword": "Ger-tremen",
"DbPrefix": "Rakger",
"DbUser": "Arveriad",
"DefaultLanguage": "Yezh dre ziouer",
"General": "Hollek",
"Install": "Staliañ",
"MigrationTable": "Taol dreuztiriañ",
"ResponseMail": "Chomlec'h postel respont"
},
"Error": {
"Error!": "Fazi!",
"Enter a title": "Ret eo enankañ un titl!",
"Something is going wrong...": "Un dra bennak a-dreuz a zo...",
"Something is wrong with the format": "Un dra bennak a-dreuz a zo gant ar mentrezh",
"Enter an email address": "Ret eo enankañ ur chomlec'h postel",
"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.": "Didalvoudek eo ar chomlec'h postel enanket. Ret eo lakaat ur chomlec'h postel talvoudek (skouer: mari-jo@gozmail.bzh)evit resevout ere ar sontadeg.",
"No polls found": "N'eus bet kavet sontadeg ebet",
"There is a problem with your choices": "Ur gudenn a zo gant ho tibaboù",
"You haven't filled the first section of the poll creation.": "N'ho peus ket leuniet lodenn gentañ ar sontadeg",
"Javascript is disabled on your browser. Its activation is required to create a poll.": "Diweredekaet eo JavaScript war ho merdeer. Ret eo gweredekaat anezhañ evit krouiñ ur sontadeg.",
"Cookies are disabled on your browser. Theirs activation is required to create a poll.": "Diweredekaet eo an toupinoù war ho merdeer. Ret eo gweredekaat anezho evit krouiñ ur sontadeg.",
"This poll doesn't exist !": "N'eus ket eus ar sontadeg-mañ!",
"Enter a name": "Ret eo deoc'h enankañ un 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!",
"Enter a name and a comment!": "Enankit un anv hag un evezhiadenn!",
"Failed to insert the comment!": "C'hwitadenn en ur enlakaat an evezhiadenn!",
"Failed to delete the vote!": "C'hwitadenn en ur zilemel ar vouezh!",
"Framadate is not properly installed, please check the \"INSTALL\" to setup the database before continuing.": "N'eo ket staliet Framadate en un doare dereat. Lennit ar restr INSTALL evit kefluniañ ar stlennvon a-raok kenderc'hel.",
"Failed to save poll": "C'hwitadenn war enrolladenn ar sontadeg",
"Update vote failed": "C'hwitadenn war hizivadenn ar vouezh",
"Adding vote failed": "C'hwitadenn war ouzhpennadenn ar vouezh",
"You already voted": "Mouezhzt ho peus endeo",
"Poll has been updated before you vote": "Hizivaet eo bet ar sontadeg a-raok ho mouezh",
"Comment failed": "C'hiwtadenn war an evezhiadenn",
"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:",
"Failed to delete column": "C'hwitadenn war zilemel ar bann",
"The column already exists": "Ar bann a zo anezhañ endeo",
"MISSING_VALUES": "Talvoudoù a vank",
"CANT_CONNECT_TO_DATABASE": "N'haller ket kennaskañ ouzh ar stlennvon",
"Password is empty": "Goullo eo ar ger-tremen.",
"Passwords do not match": "Ne glot ket ar gerioù-tremen.",
"Poll id already used": "Arveret eo an naoudi endeo",
"You can't select more than %d dates": "N'hallit ket diuzañ ouzhpenn %d a zeiziadoù",
"Can't create the config.php file in '%s'.": "N'haller ket krouiñ ar restr config.php e '%s'.",
"Can't create an empty column.": "N'haller ket krouiñ ur bann goullo."
},
"Check": {
"Installation checking": "Gwiriañ ar staliadur",
"Your PHP version (%s) is too old. This application needs at least PHP %s.": "Re gozh eo hoc'h handelv PHP (%s). PHP %s a zo dleet evit an arload-ma d'an nebeutañ.",
"PHP version %s is enough (needed at least PHP %s).": "Trawalc'h eo an handelv PHP %s (PHP %s goulennet d'an nebeutañ).",
"You need to enable the PHP Intl extension.": "Ret eo deoc'h gweredekaat an askouezh PHP Intl.",
"PHP Intl extension is enabled.": "Gweredekaet eo an askouezh PHP Intl.",
"The template compile directory (%s) is not writable.": "N'haller ket skrivañ e kavlec'h kempunañ ar patromoù (%s).",
"The template compile directory (%s) is writable.": "Gallout a raer skrivañ e kavlec'h kempunañ ar patromoù (%s).",
"The config file directory (%s) is not writable and the config file (%s) dos not exists.": "N'haller ket skrivañ e kavlec'h ar restr kefluniañ (%s) ha n'eus ket eus ar restr kefluniañ (%s).",
"The config file exists.": "Amañ mañ ar restr kefnluniañ.",
"The config file directory (%s) is writable.": "Gallout a raer skrivañ e kavlec'h ar restr kefluniañ (%s).",
"OpenSSL extension loaded.": "Askouezh OpenSSL karget.",
"Consider enabling the PHP extension OpenSSL for increased security.": "Aliañ a reomp gweredekaat an askouezh OpenSSL evit ;uioc'h a surentez.",
"date.timezone is set.": "Arventennet eo date.timezone.",
"Consider setting the date.timezone in php.ini.": "Aliañ a reomp da lakaat date.timezone e php.ini.",
"Check again": "Gwiriañ en-dro",
"Continue the installation": "Kenderc'hel gant ar staliadur"
}
}

View File

@ -51,10 +51,10 @@
"DATE": "%Y-%m-%d",
"MONTH_YEAR": "%B %Y",
"DATETIME": "%Y-%m-%d %H:%M",
"Add range dates": "DE_Ajout d'un intervalle de dates",
"Max dates count": "DE_Vous pouvez sélectionner au maximum 4 mois",
"Start date": "DE_Date de début",
"End date": "DE_Date de fin"
"Add range dates": "Datumsbereich hinzufügen",
"Max dates count": "Es können maximal 4 Monate ausgewählt werden",
"Start date": "Startdatum",
"End date": "Enddatum"
},
"Language selector": {
"Select the language": "Sprache wählen",
@ -129,10 +129,10 @@
"Cancel the rules edit": "Abbruch, Regeln nicht ändern",
"Results are hidden": "Ergebnisse werden ausgeblendet",
"Results are visible": "Ergebnisse sind sichtbar",
"Password protected": "DE_Protégé par mot de passe",
"Votes protected by password": "DE_Votes protégés par mot de passe",
"No password": "DE_Pas de mot de passe",
"Remove password": "DE_Supprimer le mot de passe",
"Password protected": "Passwortgeschützt",
"Votes protected by password": "Wertungen sind passwortgeschützt",
"No password": "Kein Passwort",
"Remove password": "Passwort entfernen",
"Rich editor": "DE_Editeur avancé",
"Simple editor": "DE_Editeur simple"
},
@ -166,11 +166,11 @@
"Comment added": "Kommentar hinzugefügt"
},
"Password": {
"Password": "DE_Mot de passe",
"Wrong password": "DE_Mot de passe incorrect.",
"Submit access": "DE_Accèder",
"You have to provide a password to access the poll.": "DE_Vous devez donner le mot de passe pour avoir accès à ce sondage.",
"You have to provide a password so you can participate to the poll.": "DE_Vous devez donner le mot de passe pour pouvoir participer à ce sondage."
"Password": "Passwort",
"Wrong password": "Falsches Passwort",
"Submit access": "Eingabe bestätigen",
"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 so you can participate to the poll.": "Sie müssen ein Passwort eingeben um an der Abstimmung teilzunehmen."
},
"studs": {
"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.",
@ -182,14 +182,14 @@
"Adding the vote succeeded": "Die Wertung wurde hinzugefügt"
},
"EditLink": {
"Send": "DE_Envoyer",
"If you don't want to lose your personalized link, we can send it to your email.": "DE_Afin de ne pas perdre ce lien d'édition de vote, nous pouvons vous l'envoyer par courriel.",
"The email address is not correct.": "DE_Courriel incorrect.",
"REMINDER": "DE_RAPPEL",
"Edit link for poll \"%s\"": "DE_Lien d'édition du sondage \"%s\"",
"Please wait %d seconds before we can send an email to you then try again.": "DE_Veuillez patienter encore %d seconds avant que nous puissions vous envoyer un email, puis réessayez.",
"Here is the link for editing your vote:": "DE_Voici le lien pour éditer votre vote :",
"Your reminder has been successfully sent!": "DE_Votre rappel a été envoyé avec succès !"
"Send": "Absenden",
"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.",
"The email address is not correct.": "Die E-Mail-Adresse ist fehlerhaft.",
"REMINDER": "HINWEIS",
"Edit link for poll \"%s\"": "Link für die Abstimmung \"%s\" bearbeiten",
"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.",
"Here is the link for editing your vote:": "Hier ist der Link zum Ändern ihrer Wertung:",
"Your reminder has been successfully sent!": "Ihre Erinnerungsnachricht wurde erfolgreich abgesendet."
},
"adminstuds": {
"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",
@ -212,7 +212,7 @@
"Back to the poll": "Zurück zur Umfrage",
"Add a column": "Spalte hinzufügen",
"Remove the column": "Spalte entfernen",
"Confirm removal of the column.": "DE_Confirmer la supression de cette colonne.",
"Confirm removal of the column.": "Bestätigen Sie die Entfernung der Spalte",
"Column removed": "Spalte entfernt",
"Choice added": "Alternative hinzugefügt",
"Confirm removal of all votes of the poll": "Bestätigen Sie die Entfernung aller Wertungen aus der Umfrage",
@ -232,21 +232,23 @@
"You are in the poll creation section.": "Hier erstellen Sie die Umfrage",
"Required fields cannot be left blank.": "Mit * markierte Felder müssen ausgefüllt sein.",
"Poll title": "Titel der Umfrage",
"Poll id": "DE_Identifiant",
"Poll id rules": "DE_L'identifiant peut contenir des lettres, des chiffres et des tirets \"-\".",
"Poll id warning": "DE_En définissant un identifiant cela 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": "Bezeichner",
"Customize the URL": "DE_Personnaliser le lien",
"Poll id rules": "Der Bezeichner kann Buchstaben, Zahlen und Bindestriche enhalten \"-\".",
"Poll id warning": "Mit der Verwendung eines Bezeichners können möglicherweise Personen unerwünscht Zugriff auf die Umfrage erhalten. Es wird empfohlen sie mit einem Passwort zu schützen.",
"Votes cannot be modified": "Wertungen können nicht verändert werden",
"All voters can modify any vote": "Jeder Teilnehmer kann jede abgegebene Wertung ändern",
"Voters can modify their vote themselves": "Teilnehmer können ihre Wertungen verändern",
"To receive an email for each new vote": "Bei jeder neuen Wertung eine E-Mail erhalten",
"To receive an email for each new comment": "Bei jedem neuen Kommentar eine E-Mail erhalten",
"Only the poll maker can see the poll's results": "Einzig der Autor der Abstimmung kann die Ergebnisse einsehen",
"Use a password to restrict access": "DE_Utiliser un mot de passe pour restreindre l'accès au sondage",
"The results are publicly visible": "DE_Les résultats sont visibles sans mot de passe",
"Poll password": "DE_Mot de passe",
"Confirm password": "DE_Confirmer votre mot de passe",
"Go to step 2": "Weiter zum 2. Schritt",
"To make the description more attractive, you can use the Markdown format.": "DE_Afin de rendre le descriptif de ce sondage plus attractif, vous pouvez utiliser le formatage Markdown.",
"Use a password to restrict access": "Verwende ein Passwort um den Zugriff zu beschänken",
"The results are publicly visible": "Die Ergebnisse sind öffentlich Einsehbar",
"Poll password": "Password",
"Password choice": "DE_Choix",
"Password confirmation": "DE_Confirmation",
"Permissions": "DE_Permissions",
"Go to step 2": "Weiter zum 2. Schritt""To make the description more attractive, you can use the Markdown format.": "DE_Afin de rendre le descriptif de ce sondage plus attractif, vous pouvez utiliser le formatage Markdown.",
"You can enable or disable the editor at will.": "DE_Vous pouvez activer ou désactiver l'éditeur à votre guise.",
"More informations here:": "DE_Plus d'informations ici :"
},
@ -292,8 +294,8 @@
"Your poll will be automatically archived in %d days.": "Ihre Umfrage wird automatisch in %d Tage archiviert werden.",
"You can set a closer archiving date for it.": "Sie können das Datum der Archivierung vorverlegen.",
"Archiving date:": "Tag der Archivierung:",
"Your poll will automatically be archived": "DE_Your poll will automatically be archived",
"after the last date of your poll.": "DE_after the last date of your poll."
"Your poll will automatically be archived": "Ihre Umfrage wird automatisch",
"after the last date of your poll.": "nach dem letzten Termin der Abstimmung archiviert."
},
"Admin": {
"Back to administration": "Zurück zur Verwaltung",
@ -329,11 +331,11 @@
"FindPolls": {
"Send me my polls": "Senden Sie mir mein Umfragen",
"Polls sent": "Umfragen abgeschickt",
"List of your polls": "DE_Liste de vos sondages",
"Here is the list of the polls that you manage on %s:": "DE_Voici la liste des sondages que vous administrez sur %s :",
"Have a good day!": "DE_Bonne journée !",
"PS: this email has been sent because you or someone else asked to get back the polls created with your email address.": "DE_PS : ce mail a été envoyé parce que vous ou quelqu'un d'autre a demandé la récupération des sondages créés à l'aide de votre adresse email.",
"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.": "DE_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 sur %s."
"List of your polls": "Liste Ihrer Umfragen",
"Here is the list of the polls that you manage on %s:": "Hier ist die Liste der Umfragen die Sie auf %s verwalten:",
"Have a good day!": "Einen schönen Tag noch!",
"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.",
"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, benachrichtene Sie bitte den Administrator auf %s."
},
"Mail": {
"Poll's participation: %s": "Beteiligung an der Umfrage: %s",
@ -355,19 +357,19 @@
"For sending to the polled users": "Nachricht für die Teilnehmer"
},
"Installation": {
"AppMail": "DE_Adresse mail de l'application",
"AppName": "DE_Nom de l'application",
"CleanUrl": "DE_URL propres",
"Database": "DE_Base de données",
"DbConnectionString": "DE_Chaîne de connexion",
"DbPassword": "DE_Mot de passe",
"DbPrefix": "DE_Préfixe",
"DbUser": "DE_Utilisateur",
"DefaultLanguage": "DE_Langue par défaut",
"General": "DE_Général",
"AppMail": "E-Mail-Adresse der Anwendung/des Datenbankadministrators",
"AppName": "Name der Anwendung",
"CleanUrl": "Säubere URLs (boolean)",
"Database": "Datenbank",
"DbConnectionString": "Name des Datenbankservers, leer lassen um eine lokale Socket-Verbindung zu nutzen",
"DbPassword": "Datenbank-Passwort",
"DbPrefix": "Tabellen-Präfix",
"DbUser": "Datenbank-Nutzername",
"DefaultLanguage": "Standardsprache",
"General": "Allgemeine Konfiguration",
"Install": "DE_Installer",
"MigrationTable": "DE_Table de migration",
"ResponseMail": "DE_Mail de réponse"
"MigrationTable": "Name der Tabelle welche den Migrationsstatus speichert",
"ResponseMail": "E-Mail-Adresse für automatische Antworten (sollte auf \"no-reply\" gesetzt werden)"
},
"Error": {
"Error!": "Fehler!",
@ -387,42 +389,42 @@
"The name you've chosen already exist in this poll!": "Der von Ihnen eingegebenen Name existiert schon in dieser Umfrage",
"Enter a name and a comment!": "Geben Sie einen Namen und ein Kommentar ein!",
"Failed to insert the comment!": "Einfügen des Kommentars gescheitert!",
"Failed to delete the vote!": "DE_Échec de la suppression du vote !",
"Failed to delete the vote!": "Löschen der Wertung gescheitert!",
"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 \"INSTALL\".",
"Failed to save poll": "Speichern der Umfrage fehlgeschlagen",
"Update vote failed": "Aktualisierung der Wertung fehlgeschlagen",
"Adding vote failed": "Stimmabgabe fehlgeschlagen",
"You already voted": "DE_Vous avez déjà voté",
"Poll has been updated before you vote": "DE_Le sondage a été mis à jour avant votre vote",
"You already voted": "Sie haben bereits abgestimmt",
"Poll has been updated before you vote": "Die Abstimmung wurde vor Ihrer Stimmabgabe aktualisiert",
"Comment failed": "Abgabe des Kommentars gescheitert",
"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:",
"Failed to delete column": "Löschen der Spalte fehlgeschlagen",
"The column already exists": "DE_La colonne existe déjà",
"The column already exists": "Die Spalte existiert bereits",
"MISSING_VALUES": "Fehlende Werte",
"CANT_CONNECT_TO_DATABASE": "Kann nicht mit der Datenbank verbinden",
"Password is empty": "DE_Le mot de passe est vide.",
"Passwords do not match": "DE_Les mot de passes ne correspondent pas.",
"Poll id already used": "DE_L'identifiant est déjà utilisé",
"You can't select more than %d dates": "DE_Vous ne pouvez pas choisir plus de %d dates",
"Can't create the config.php file in '%s'.": "DE_Impossible de créer le fichier config.php dans '%s'.",
"Can't create an empty column.": "DE_Impossible de créer une colonne vide."
"Password is empty": "Das Passwort ist leer.",
"Passwords do not match": "Die Passwörter stimmen nicht überein.",
"Poll id already used": "Der Bezeichner ist bereits in Verwendung",
"You can't select more than %d dates": "Es können nicht mehr als %d Termine ausgewählt werden",
"Can't create the config.php file in '%s'.": "Kann die config.php nicht in '%s' angelegen.",
"Can't create an empty column.": "Kann keine leere Spalte anlegen."
},
"Check": {
"Installation checking": "DE_Vérifications de l'installation",
"Your PHP version (%s) is too old. This application needs at least PHP %s.": "DE_Votre version de PHP (%s) est trop vieille. Cette application a besoin de PHP %s au moins.",
"PHP version %s is enough (needed at least PHP %s).": "DE_Version de PHP %s suffisante (nécessite au moins PHP %s).",
"You need to enable the PHP Intl extension.": "DE_Vous devez activer l'extension PHP Intl.",
"PHP Intl extension is enabled.": "DE_L'extension PHP Intl est activée.",
"The template compile directory (%s) is not writable.": "DE_Le dossier de compilation des templates (%s) n'est pas accessible en écriture.",
"The template compile directory (%s) is writable.": "DE_Le dossier de compilation des templates (%s) est accessible en écriture.",
"The config file directory (%s) is not writable and the config file (%s) dos not exists.": "DE_Le dossier du fichier de configuration (%s) n'est pas accessible en écriture et le fichier de configuration (%s) n'éxiste pas.",
"The config file exists.": "DE_Le fichier de configuration existe.",
"The config file directory (%s) is writable.": "DE_Le dossier du fichier de configuration (%s) est accessible en écriture.",
"OpenSSL extension loaded.": "DE_L'extension PHP OpenSSL est chargée.",
"Consider enabling the PHP extension OpenSSL for increased security.": "DE_Veuillez considérer l'activation de l'extension PHP OpenSSL pour améliorer la sécurité.",
"date.timezone is set.": "DE_date.timezone est défini.",
"Consider setting the date.timezone in php.ini.": "DE_Veuillez considérer la définition de date.timezone dans le php.ini.",
"Check again": "DE_Vérifier à nouveau",
"Continue the installation": "DE_Continuer l'installation"
"Installation checking": "Verifikation der Installation",
"Your PHP version (%s) is too old. This application needs at least PHP %s.": "Ihre PHP-Version (%s) ist zu alt. Diese Anwendung benötigt mindestens PHP Version %s.",
"PHP version %s is enough (needed at least PHP %s).": "PHP Version %s ist ausreichend (mindestens PHP %s wird benötigt).",
"You need to enable the PHP Intl extension.": "Sie müssen die PHP-Erweiterung Intl aktivieren.",
"PHP Intl extension is enabled.": "Die PHP-Erweiterung Intl ist aktiviert.",
"The template compile directory (%s) is not writable.": "Der Vorlagen-Übersetzungspfad (%s) ist nicht beschreibbar.",
"The template compile directory (%s) is writable.": "Der Vorlagen-Übersetzungspfad (%s) ist beschreibbar.",
"The config file directory (%s) is not writable and the config file (%s) dos not exists.": "Der Konfigurationspfad (%s) ist nicht beschreibbar und es existiert keine Konfigurationsdatei (%s).",
"The config file exists.": "Die Konfigurationsdatei existiert.",
"The config file directory (%s) is writable.": "Die Konfigurationsdatei (%s) ist beschreibbar.",
"OpenSSL extension loaded.": "Die OpenSSL-Erweiterung ist geladen.",
"Consider enabling the PHP extension OpenSSL for increased security.": "Ziehen Sie in Erwägung, für eine verbesserte Sicherheit die OpenSSL-Erweiterung zu aktivieren.",
"date.timezone is set.": "date.timezone ist konfiguriert.",
"Consider setting the date.timezone in php.ini.": "Ziehen Sie in Erwägung, date.timezone in php.ini zu konfigurieren.",
"Check again": "Erneut prüfen",
"Continue the installation": "Installation fortsetzen"
}
}

View File

@ -232,7 +232,8 @@
"You are in the poll creation section.": "You are in the poll creation section.",
"Required fields cannot be left blank.": "Required fields cannot be left blank.",
"Poll title": "Poll title",
"Poll id": "Identifier",
"Poll id": "Poll link",
"Customize the URL": "EN_Personnaliser le lien",
"Poll id rules": "The identifier can contain letters, numbers and dashes \"-\".",
"Poll id warning": "By defining an identifier that can facilitate access to the poll for unwanted people. It is recommended to protect it with a password.",
"Votes cannot be modified": "Votes cannot be modified",
@ -244,7 +245,9 @@
"Use a password to restrict access": "Use a password to restrict access",
"The results are publicly visible": "The results are publicly visible",
"Poll password": "Password",
"Confirm password": "Confirmer votre mot de passe",
"Password choice": "Choice",
"Password confirmation": "Confirmation",
"Permissions": "Permissions",
"Go to step 2": "Go to step 2",
"To make the description more attractive, you can use the Markdown format.": "To make the description more attractive, you can use the Markdown format.",
"You can enable or disable the editor at will.": "You can enable or disable the editor at will.",
@ -426,4 +429,4 @@
"Check again": "Check again",
"Continue the installation": "Continue the installation"
}
}
}

View File

@ -233,6 +233,7 @@
"Required fields cannot be left blank.": "Los campos requeridos tienen que ser llenados",
"Poll title": "Título de la encuesta",
"Poll id": "ES_Identifiant",
"Customize the URL": "ES_Personnaliser le lien",
"Poll id rules": "ES_L'identifiant peut contenir des lettres, des chiffres et des tirets \"-\".",
"Poll id warning": "ES_En définissant un identifiant cela 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.",
"Votes cannot be modified": "Los votos no pueden ser modificados",
@ -244,7 +245,9 @@
"Use a password to restrict access": "ES_Utiliser un mot de passe pour restreindre l'accès au sondage",
"The results are publicly visible": "ES_Les résultats sont visibles sans mot de passe",
"Poll password": "ES_Mot de passe",
"Confirm password": "ES_Confirmer votre mot de passe",
"Password choice": "ES_Choix",
"Password confirmation": "ES_Confirmation",
"Permissions": "ES_Permissions",
"Go to step 2": "Ir al paso número 2",
"To make the description more attractive, you can use the Markdown format.": "ES_Afin de rendre le descriptif de ce sondage plus attractif, vous pouvez utiliser le formatage Markdown.",
"You can enable or disable the editor at will.": "ES_Vous pouvez activer ou désactiver l'éditeur à votre guise.",

View File

@ -232,19 +232,22 @@
"You are in the poll creation section.": "Vous avez choisi de créer un nouveau sondage.",
"Required fields cannot be left blank.": "Merci de remplir les champs obligatoires, marqués d'une *.",
"Poll title": "Titre du sondage",
"Poll id": "Identifiant",
"Poll id rules": "L'identifiant peut contenir des lettres, des chiffres et des tirets \"-\".",
"Poll id warning": "En définissant un identifiant cela 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": "Lien du sondage",
"Customize the URL": "Personnaliser le lien",
"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.",
"Votes cannot be modified": "Aucun vote ne peut être modifié",
"All voters can modify any vote": "Tous les sondés peuvent modifier tous les votes",
"Voters can modify their vote themselves": "Chaque sondé peut modifier son propre vote",
"To receive an email for each new vote": "Recevoir un courriel à chaque participation d'un sondé",
"To receive an email for each new vote": "Recevoir un courriel à chaque participation",
"To receive an email for each new comment": "Recevoir un courriel à chaque commentaire",
"Only the poll maker can see the poll's results": "Seul le créateur du sondage peut voir les résultats",
"Use a password to restrict access": "Utiliser un mot de passe pour restreindre l'accès au sondage",
"Use a password to restrict access": "Restreindre l'accès au sondage par mot de passe",
"The results are publicly visible": "Les résultats sont visibles sans mot de passe",
"Poll password": "Mot de passe",
"Confirm password": "Confirmer votre mot de passe ",
"Password choice": "Choix",
"Password confirmation": "Confirmation",
"Permissions": "Permissions",
"Go to step 2": "Aller à l'étape 2",
"To make the description more attractive, you can use the Markdown format.": "Afin de rendre le descriptif de ce sondage plus attractif, vous pouvez utiliser le formatage Markdown.",
"You can enable or disable the editor at will.": "Vous pouvez activer ou désactiver l'éditeur à votre guise.",
@ -425,4 +428,4 @@
"Check again": "Vérifier à nouveau",
"Continue the installation": "Continuer l'installation"
}
}
}

View File

@ -233,6 +233,7 @@
"Required fields cannot be left blank.": "Riempire i campi obbligatori, segnati con *.",
"Poll title": "Titolo del sondaggio",
"Poll id": "IT_Identifiant",
"Customize the URL": "IT_Personnaliser le lien",
"Poll id rules": "IT_L'identifiant peut contenir des lettres, des chiffres et des tirets \"-\".",
"Poll id warning": "IT_En définissant un identifiant cela 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.",
"Votes cannot be modified": "Nessun voto può essere modificato",
@ -244,7 +245,9 @@
"Use a password to restrict access": "Utilizzare una passwor per limitare l'accesso al sondaggio",
"The results are publicly visible": "I risultati sono visibili senza password",
"Poll password": "Password",
"Confirm password": "Conferma della password",
"Password choice": "IT_Choix",
"Password confirmation": "Conferma della password",
"Permissions": "IT_Permissions",
"Go to step 2": "Andare al punto 2",
"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.",
"You can enable or disable the editor at will.": "IT_Vous pouvez activer ou désactiver l'éditeur à votre guise.",

View File

@ -233,6 +233,7 @@
"Required fields cannot be left blank.": "Mercés de garnir totes los formularis obligatòris, marcats amb una *.",
"Poll title": "Títol del sondatge",
"Poll id": "OC_Identifiant",
"Customize the URL": "OC_Personnaliser le lien",
"Poll id rules": "OC_L'identifiant peut contenir des lettres, des chiffres et des tirets \"-\".",
"Poll id warning": "OC_En définissant un identifiant cela 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.",
"Votes cannot be modified": "Cap de vòte pòt pas èsser modificat",
@ -244,7 +245,9 @@
"Use a password to restrict access": "OC_Utiliser un mot de passe pour restreindre l'accès au sondage",
"The results are publicly visible": "OC_Les résultats sont visibles sans mot de passe",
"Poll password": "OC_Mot de passe",
"Confirm password": "OC_Confirmer votre mot de passe ",
"Password choice": "OC_Choix",
"Password confirmation": "OC_Confirmation",
"Permissions": "OC_Permissions",
"Go to step 2": "Anar a l'etapa 2",
"To make the description more attractive, you can use the Markdown format.": "OC_Afin de rendre le descriptif de ce sondage plus attractif, vous pouvez utiliser le formatage Markdown.",
"You can enable or disable the editor at will.": "OC_Vous pouvez activer ou désactiver l'éditeur à votre guise.",
@ -425,4 +428,4 @@
"Check again": "OC_Vérifier à nouveau",
"Continue the installation": "OC_Continuer l'installation"
}
}
}

View File

@ -21,66 +21,6 @@
</p>
</div>
<div class="form-group {$errors['title']['class']}">
<label for="poll_title" class="col-sm-4 control-label">{__('Step 1', 'Poll title')} *</label>
<div class="col-sm-8">
<input id="poll_title" type="text" name="title" class="form-control" {$errors['title']['aria']}
value="{$poll_title|html}"/>
</div>
</div>
{if !empty($errors['title']['msg'])}
<div class="alert alert-danger">
<p id="poll_title_error">
{$errors['title']['msg']}
</p>
</div>
{/if}
<div class="form-group {$errors['id']['class']}">
<label for="poll_id" class="col-sm-4 control-label">{__('Step 1', 'Poll id')}</label>
<div class="col-sm-8">
<div class="input-group">
<span class="input-group-addon">
<input id="customize_id" name="customize_id" type="checkbox"/>
</span>
<input id="poll_id" type="text" name="id" class="form-control" {$errors['id']['aria']}
value="{$poll_id}" aria-describedBy="pollIdDesc" disabled="disabled" maxlength="64"
pattern="[A-Za-z0-9-]+"/>
</div>
<span id="pollIdDesc" class="help-block">{__('Step 1', 'Poll id rules')}</span>
<span class="help-block text-warning">{__('Step 1', 'Poll id warning')}</span>
</div>
</div>
{if !empty($errors['id']['msg'])}
<div class="alert alert-danger">
<p id="poll_title_error">
{$errors['id']['msg']}
</p>
</div>
{/if}
<div class="form-group {$errors['description']['class']}">
<label for="poll_comments" class="col-sm-4 control-label">{__('Generic', 'Description')}</label>
<div class="col-sm-8">
{include 'part/description_markdown.tpl'}
<div>
<textarea id="poll_comments" name="description"
class="form-control" {$errors['description']['aria']}
rows="5">{$poll_description|escape}</textarea>
</div>
</div>
</div>
{if !empty($errors['description']['msg'])}
<div class="alert alert-danger">
<p id="poll_title_error">
{$errors['description']['msg']}
</p>
</div>
{/if}
<div class="form-group {$errors['name']['class']}">
<label for="yourname" class="col-sm-4 control-label">{__('Generic', 'Your name')} *</label>
@ -111,7 +51,7 @@
{if $useRemoteUser}
<input type="hidden" name="mail" value="{$form->admin_mail}">{$form->admin_mail}
{else}
<input id="email" type="text" name="mail" class="form-control" {$errors['email']['aria']} value="{$poll_mail}" />
<input id="email" type="text" name="mail" class="form-control" {$errors['email']['aria']} value="{$poll_mail|html}" />
{/if}
</div>
</div>
@ -125,8 +65,146 @@
{/if}
<div class="form-group {$errors['title']['class']}">
<label for="poll_title" class="col-sm-4 control-label">{__('Step 1', 'Poll title')} *</label>
<div class="col-sm-8">
<input id="poll_title" type="text" name="title" class="form-control" {$errors['title']['aria']}
value="{$poll_title|html}"/>
</div>
</div>
{if !empty($errors['title']['msg'])}
<div class="alert alert-danger">
<p id="poll_title_error">
{$errors['title']['msg']}
</p>
</div>
{/if}
<div class="form-group {$errors['description']['class']}">
<label for="poll_comments" class="col-sm-4 control-label">{__('Generic', 'Description')}</label>
<div class="col-sm-8">
{include 'part/description_markdown.tpl'}
<div>
<textarea id="poll_comments" name="description"
class="form-control" {$errors['description']['aria']}
rows="5">{$poll_description|escape}</textarea>
</div>
</div>
</div>
{if !empty($errors['description']['msg'])}
<div class="alert alert-danger">
<p id="poll_title_error">
{$errors['description']['msg']}
</p>
</div>
{/if}
{* Poll identifier *}
<div class="form-group {$errors['customized_url']['class']}">
<label for="poll_id" class="col-sm-4 control-label">
{__('Step 1', 'Poll id')}<br/>
</label>
<div class="col-sm-8">
<div class="checkbox">
<label>
<input id="use_customized_url" name="use_customized_url" type="checkbox" {if $use_customized_url}checked{/if}/>
{__('Step 1', 'Customize the URL')}
</label>
</div>
</div>
</div>
<div id="customized_url_options" {if !$use_customized_url}class="hidden"{/if}>
<div class="form-group {$errors['customized_url']['class']}">
<label for="customized_url" class="col-sm-4 control-label">
<span id="pollUrlDesc" class="small">{__('Step 1', 'Poll id rules')}</span>
</label>
<div class="col-sm-8">
<div class="input-group">
<span class="input-group-addon">
{$SERVER_URL}
</span>
<input id="customized_url" type="text" name="customized_url" class="form-control" {$errors['customized_url']['aria']}
value="{$customized_url|html}" aria-describedBy="pollUrlDesc" maxlength="64"
pattern="[A-Za-z0-9-]+"/>
</div>
<span class="help-block text-warning">{__('Step 1', 'Poll id warning')}</span>
</div>
</div>
{if !empty($errors['customized_url']['msg'])}
<div class="alert alert-danger">
<p id="poll_customized_url_error">
{$errors['customized_url']['msg']}
</p>
</div>
{/if}
</div>
{* Password *}
<div class="form-group">
<div class="col-sm-offset-4 col-sm-8">
<label for="poll_id" class="col-sm-4 control-label">
{__('Step 1', 'Poll password')}
</label>
<div class="col-sm-8">
<div class="checkbox">
<label>
<input type="checkbox" name="use_password" {if $poll_use_password}checked{/if}
id="use_password">
{__('Step 1', "Use a password to restrict access")}
</label>
</div>
</div>
<div id="password_options"{if !$poll_use_password} class="hidden"{/if}>
<div class="col-sm-offset-4 col-sm-8">
<div class="input-group">
<input id="poll_password" type="password" name="password" class="form-control" {$errors['password']['aria']}/>
<label for="poll_password" class="input-group-addon">{__('Step 1', 'Password choice')}</label>
</div>
</div>
{if !empty($errors['password']['msg'])}
<div class="alert alert-danger">
<p id="poll_password_error">
{$errors['password']['msg']}
</p>
</div>
{/if}
<div class="col-sm-offset-4 col-sm-8">
<div class="input-group">
<input id="poll_password_repeat" type="password" name="password_repeat" class="form-control" {$errors['password_repeat']['aria']}/>
<label for="poll_password_repeat" class="input-group-addon">{__('Step 1', 'Password confirmation')}</label>
</div>
</div>
{if !empty($errors['password_repeat']['msg'])}
<div class="alert alert-danger">
<p id="poll_password_repeat_error">
{$errors['password_repeat']['msg']}
</p>
</div>
{/if}
<div class="col-sm-offset-4 col-sm-8">
<div class="checkbox">
<label>
<input type="checkbox" name="results_publicly_visible"
{if $poll_results_publicly_visible}checked{/if} id="results_publicly_visible"/>
{__('Step 1', "The results are publicly visible")}
</label>
</div>
</div>
</div>
</div>
<div class="form-group">
<label for="poll_id" class="col-sm-4 control-label">
{__('Step 1', 'Permissions')}
</label>
<div class="col-sm-8">
<div class="radio">
<label>
<input type="radio" name="editable" id="editableByAll" {if $poll_editable==constant("Framadate\Editable::EDITABLE_BY_ALL")}checked{/if} value="{constant("Framadate\Editable::EDITABLE_BY_ALL")}">
@ -187,56 +265,6 @@
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-4 col-sm-8">
<div class="checkbox">
<label>
<input type="checkbox" name="use_password" {if $poll_use_password}checked{/if}
id="use_password">
{__('Step 1', "Use a password to restrict access")}
</label>
</div>
</div>
<div id="password_options"{if !$poll_use_password} class="hidden"{/if}>
<label for="poll_password" class="col-sm-4 control-label">{__('Step 1', 'Poll password')}</label>
<div class="col-sm-8">
<input id="poll_password" type="password" name="password" class="form-control" {$errors['password']['aria']}/>
</div>
{if !empty($errors['password']['msg'])}
<div class="alert alert-danger">
<p id="poll_password_error">
{$errors['password']['msg']}
</p>
</div>
{/if}
<label for="poll_password_repeat" class="col-sm-4 control-label">{__('Step 1', 'Confirm password')}</label>
<div class="col-sm-8">
<input id="poll_password_repeat" type="password" name="password_repeat" class="form-control" {$errors['password_repeat']['aria']}/>
</div>
{if !empty($errors['password_repeat']['msg'])}
<div class="alert alert-danger">
<p id="poll_password_repeat_error">
{$errors['password_repeat']['msg']}
</p>
</div>
{/if}
<div class="col-sm-offset-4 col-sm-8">
<div class="checkbox">
<label>
<input type="checkbox" name="results_publicly_visible"
{if $poll_results_publicly_visible}checked{/if} id="results_publicly_visible"/>
{__('Step 1', "The results are publicly visible")}
</label>
</div>
</div>
</div>
</div>
<p class="text-right">
<input type="hidden" name="type" value="$poll_type"/>
<button name="{$goToStep2}" value="{$poll_type}" type="submit"
@ -256,4 +284,4 @@
<div id="cookie-warning" class="alert alert-danger" style="display:none">
{__('Step 1', 'Cookies are disabled on your browser. Theirs activation is required to create a poll.')}
</div>
{/block}
{/block}

View File

@ -17,7 +17,9 @@
<script type="text/javascript" src="{'js/jquery-1.11.1.min.js'|resource}"></script>
<script type="text/javascript" src="{'js/bootstrap.min.js'|resource}"></script>
<script type="text/javascript" src="{'js/bootstrap-datepicker.js'|resource}"></script>
{if "en" != $locale}
<script type="text/javascript" src="{"js/locales/bootstrap-datepicker.$locale.js"|resource}"></script>
{/if}
<script type="text/javascript" src="{'js/core.js'|resource}"></script>
{block name="header"}{/block}

View File

@ -22,7 +22,8 @@
<div class="btn-group pull-right">
<button onclick="print(); return false;" class="btn btn-default"><span class="glyphicon glyphicon-print"></span> {__('PollInfo', 'Print')}</button>
<a href="{$SERVER_URL|html}exportcsv.php?poll={$poll_id|html}" class="btn btn-default"><span class="glyphicon glyphicon-download-alt"></span> {__('PollInfo', 'Export to CSV')}</a>
{if $admin && !$expired}
{if $admin}
{if !$expired}
<button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-trash"></span> <span class="sr-only">{__('Generic', 'Remove')}</span> <span class="caret"></span>
</button>
@ -32,6 +33,12 @@
<li class="divider" role="presentation"></li>
<li><button class="btn btn-link" type="submit" name="delete_poll">{__('PollInfo', 'Remove the poll')}</button></li>
</ul>
{else}
<button class="btn btn-danger" type="submit" name="delete_poll" title="{__('PollInfo', 'Remove the poll')}">
<span class="glyphicon glyphicon-trash"></span>
<span class="sr-only">{__('PollInfo', 'Remove the poll')}</span>
</button>
{/if}
{/if}
</div>
</div>
@ -103,8 +110,8 @@
</div>
<div id="expiration-form" class="form-group col-md-4">
<label class="control-label">{__('PollInfo', 'Expiration date')}</label>
<p>{$poll->end_date|date_format:$date_format['txt_date']|html}{if !$expired} <button class="btn btn-link btn-sm btn-edit" title="{__('PollInfo', 'Edit the expiration date')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{__('Generic', 'Edit')}</span></button>{/if}</p>
{if !$expired}
<p>{$poll->end_date|date_format:$date_format['txt_date']|html} <button class="btn btn-link btn-sm btn-edit" title="{__('PollInfo', 'Edit the expiration date')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{__('Generic', 'Edit')}</span></button></p>
<div class="hidden js-expiration">
<label class="sr-only" for="newexpirationdate">{__('PollInfo', 'Expiration date')}</label>
<div class="input-group">
@ -115,7 +122,7 @@
</span>
</div>
</div>
{/if}
</div>
{/if}
</div>
@ -200,8 +207,7 @@
{$rule_icon = '<span class="glyphicon glyphicon-lock"></span>'}
{$rule_txt = __('PollInfo', 'Votes and comments are locked')}
{/if}
<p class="">{$rule_icon} {$rule_txt|html}{if !$expired} <button class="btn btn-link btn-sm btn-edit" title="{__('PollInfo', 'Edit the poll rules')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{__('Generic', 'Edit')}</span></button>{/if}</p>
{if !$expired}
<p class="">{$rule_icon} {$rule_txt|html} <button class="btn btn-link btn-sm btn-edit" title="{__('PollInfo', 'Edit the poll rules')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{__('Generic', 'Edit')}</span></button></p>
<div class="hidden js-poll-rules">
<label class="sr-only" for="rules">{__('PollInfo', 'Poll rules')}</label>
<div class="input-group">
@ -217,7 +223,6 @@
</span>
</div>
</div>
{/if}
</div>
</div>
</div>