diff --git a/sites/all/modules/webform/CHANGELOG.txt b/sites/all/modules/webform/CHANGELOG.txt new file mode 100644 index 0000000000000000000000000000000000000000..99a1282fd40875fc0250fcbc4cc3478cb7d7aa4f --- /dev/null +++ b/sites/all/modules/webform/CHANGELOG.txt @@ -0,0 +1,38 @@ +Webform 2.x Changelog +--------------------- + +2.x to 3.0 +---------- +- Module directory structure moved around. +- Webform configuration moved to an entirely separate tab. +- E-mail templates are now editable by administrators. +- Conditional fields. +- Submissions may be saved as a draft and resumed later. +- Webform may now be attached to any content type. +- Public API for allowing other modules to provide components. +- Public API for interacting with submission save, insert, update, and delete. +- New rendering capabilities for HTML presentation of submissions and e-mails. +- Print module support. +- Basic Views module support. +- Popup calendar support on Date components (with Date Popup module). +- New Mollom module integration. + +1.x to 2.0 +---------- +- Redirect POST option removed. +- Webform components moved to the "Form components" tab when editing. +- Webform node structure changed. All webform additions to the node are placed in $node->webform. +- Clone option added to components. +- Database storage improved to be more consistent and efficient. +- Additional e-mails may be sent by modifying the $node->webform['additional_emails'] variable in the Additional Validation field. +- The values of select and hidden fields may receive e-mails by using the option in Conditional e-mail recipients field. +- E-mail from name, from address, and from subject may be entered in a text field. +- The complete webform may be shown in the teaser view of a node. +- Submit button text may be changed. +- Theme function theme_webform_create_mailmessage() has been renamed to theme_webform_mail_message(). +- $cid parameter added to theme_webform_mail_message() to create unique e-mails depending on a particular recipient or component. +- Theme function theme_webform_mail_headers added. +- Component descriptions are textareas rather than textfields. +- _webform_filtervalues() has been renamed to _webform_filter_values. + +$Id: CHANGELOG.txt,v 1.10 2010/08/16 19:40:53 quicksketch Exp $ \ No newline at end of file diff --git a/sites/all/modules/webform/LICENSE.txt b/sites/all/modules/webform/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..2c095c8d3f42488e8168f9710a4ffbfc4125a159 --- /dev/null +++ b/sites/all/modules/webform/LICENSE.txt @@ -0,0 +1,274 @@ +GNU GENERAL PUBLIC LICENSE + + Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, +Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute +verbatim copies of this license document, but changing it is not allowed. + + Preamble + +The licenses for most software are designed to take away your freedom to +share and change it. By contrast, the GNU General Public License is +intended to guarantee your freedom to share and change free software--to +make sure the software is free for all its users. This General Public License +applies to most of the Free Software Foundation's software and to any other +program whose authors commit to using it. (Some other Free Software +Foundation software is covered by the GNU Library General Public License +instead.) You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the +freedom to distribute copies of free software (and charge for this service if +you wish), that you receive source code or can get it if you want it, that you +can change the software or use pieces of it in new free programs; and that +you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of the +software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for +a fee, you must give the recipients all the rights that you have. You must make +sure that they, too, receive or can get the source code. And you must show +them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If the +software is modified by someone else and passed on, we want its recipients +to know that what they have is not the original, so that any problems +introduced by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will individually +obtain patent licenses, in effect making the program proprietary. To prevent +this, we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND + MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms +of this General Public License. The "Program", below, refers to any such +program or work, and a "work based on the Program" means either the +Program or any derivative work under copyright law: that is to say, a work +containing the Program or a portion of it, either verbatim or with +modifications and/or translated into another language. (Hereinafter, translation +is included without limitation in the term "modification".) Each licensee is +addressed as "you". + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running the Program is +not restricted, and the output from the Program is covered only if its contents +constitute a work based on the Program (independent of having been made +by running the Program). Whether that is true depends on what the Program +does. + +1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this License +and to the absence of any warranty; and give any other recipients of the +Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you +may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, +thus forming a work based on the Program, and copy and distribute such +modifications or work under the terms of Section 1 above, provided that you +also meet all of these conditions: + +a) You must cause the modified files to carry prominent notices stating that +you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in whole or in +part contains or is derived from the Program or any part thereof, to be +licensed as a whole at no charge to all third parties under the terms of this +License. + +c) If the modified program normally reads commands interactively when run, +you must cause it, when started running for such interactive use in the most +ordinary way, to print or display an announcement including an appropriate +copyright notice and a notice that there is no warranty (or else, saying that +you provide a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this License. +(Exception: if the Program itself is interactive but does not normally print such +an announcement, your work based on the Program is not required to print +an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be +reasonably considered independent and separate works in themselves, then +this License, and its terms, do not apply to those sections when you distribute +them as separate works. But when you distribute the same sections as part +of a whole which is a work based on the Program, the distribution of the +whole must be on the terms of this License, whose permissions for other +licensees extend to the entire whole, and thus to each and every part +regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to +work written entirely by you; rather, the intent is to exercise the right to +control the distribution of derivative or collective works based on the +Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of a +storage or distribution medium does not bring the other work under the scope +of this License. + +3. You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections 1 +and 2 above provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable source +code, which must be distributed under the terms of Sections 1 and 2 above +on a medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three years, to give +any third party, for a charge no more than your cost of physically performing +source distribution, a complete machine-readable copy of the corresponding +source code, to be distributed under the terms of Sections 1 and 2 above on +a medium customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to distribute +corresponding source code. (This alternative is allowed only for +noncommercial distribution and only if you received the program in object +code or executable form with such an offer, in accord with Subsection b +above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source code +means all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation and +installation of the executable. However, as a special exception, the source +code distributed need not include anything that is normally distributed (in +either source or binary form) with the major components (compiler, kernel, +and so on) of the operating system on which the executable runs, unless that +component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to +copy from a designated place, then offering equivalent access to copy the +source code from the same place counts as distribution of the source code, +even though third parties are not compelled to copy the source along with the +object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as +expressly provided under this License. Any attempt otherwise to copy, +modify, sublicense or distribute the Program is void, and will automatically +terminate your rights under this License. However, parties who have received +copies, or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. +However, nothing else grants you permission to modify or distribute the +Program or its derivative works. These actions are prohibited by law if you +do not accept this License. Therefore, by modifying or distributing the +Program (or any work based on the Program), you indicate your acceptance +of this License to do so, and all its terms and conditions for copying, +distributing or modifying the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these terms and +conditions. You may not impose any further restrictions on the recipients' +exercise of the rights granted herein. You are not responsible for enforcing +compliance by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), conditions +are imposed on you (whether by court order, agreement or otherwise) that +contradict the conditions of this License, they do not excuse you from the +conditions of this License. If you cannot distribute so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not distribute the Program at all. +For example, if a patent license would not permit royalty-free redistribution +of the Program by all those who receive copies directly or indirectly through +you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or +other property right claims or to contest validity of any such claims; this +section has the sole purpose of protecting the integrity of the free software +distribution system, which is implemented by public license practices. Many +people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose +that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original copyright +holder who places the Program under this License may add an explicit +geographical distribution limitation excluding those countries, so that +distribution is permitted only in or among countries not thus excluded. In such +case, this License incorporates the limitation as if written in the body of this +License. + +9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will be +similar in spirit to the present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies +a version number of this License which applies to it and "any later version", +you have the option of following the terms and conditions either of that +version or of any later version published by the Free Software Foundation. If +the Program does not specify a version number of this License, you may +choose any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software +Foundation, write to the Free Software Foundation; we sometimes make +exceptions for this. Our decision will be guided by the two goals of +preserving the free status of all derivatives of our free software and of +promoting the sharing and reuse of software generally. + + NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT +PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL +NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR +AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR +ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE +LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, +SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OR INABILITY TO USE THE +PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA +OR DATA BEING RENDERED INACCURATE OR LOSSES +SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN +IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF +THE POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/sites/all/modules/webform/README.txt b/sites/all/modules/webform/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..ed7b78168f00501fd7b105347d2c3412a4a415f8 --- /dev/null +++ b/sites/all/modules/webform/README.txt @@ -0,0 +1,38 @@ +Description +----------- +This module adds a webform content type to your Drupal site. +A webform can be a questionnaire, contact or request form. These can be used +by visitor to make contact or to enable a more complex survey than polls +provide. Submissions from a webform are saved in a database table and +can optionally be mailed to e-mail addresses upon submission. + +Requirements +------------ +Drupal 6.x + +Installation +------------ +1. Copy the entire webform directory the Drupal sites/all/modules directory. + +2. Login as an administrator. Enable the module in the "Administer" -> "Site + Building" -> "Modules" + +3. (Optional) Edit the settings under "Administer" -> "Site configuration" -> + "Webform" + +4. Create a webform node at node/add/webform. + +Upgrading from any previous version +----------------------------------- +1. Copy the entire webform directory the Drupal modules directory. + +2. Login as the FIRST user or change the $access_check in upgrade.php to FALSE + +3. Run upgrade.php (at http://www.example.com/update.php) + +Support +------- +Please use the issue queue for filing bugs with this module at +http://drupal.org/project/issues/webform + +$Id: README.txt,v 1.10 2010/02/10 02:30:53 quicksketch Exp $ \ No newline at end of file diff --git a/sites/all/modules/webform/THEMING.txt b/sites/all/modules/webform/THEMING.txt new file mode 100644 index 0000000000000000000000000000000000000000..710b792c169b4105b2b4e0b38cd75a51e9318274 --- /dev/null +++ b/sites/all/modules/webform/THEMING.txt @@ -0,0 +1,116 @@ +Overview +-------- +Webform supports theming similar to the CCK or Views modules. Any webform +may be themed on the server side, though doing so may require a reasonable +amount of knowledge about the Drupal Form API. More information about the Form +API may be found at http://api.drupal.org/api/file/developer/topics/forms_api.html + +Theme submission e-mails +----------------------- +The default e-mails sent by webform are fairly basic. If you like, you may +customize the display of e-mails sent by each individual webform. + +- Open the Webform module directory. + +- Copy (do not move!) the "webform-mail.tpl.php" file to your theme directory. + +- Open up the new file and edit it to your liking. The webform-mail.tpl.php file + contains further instructions on how to get started with theming the e-mail. + +- If you want to edit the e-mail sent by only one particular webform, rename the + file "webform-mail-[node id here].tpl.php", replacing [node id here] with the + node ID of the webform. + +- Clear the theme cache! Visit admin/settings/performance and click the + "Clear cached data" button at the bottom of the page. You may also find + using devel module will speed up this process a bit. This needs to be done + every time you create or rename a .tpl.php file, but isn't necessary once + these files already exist. + +- To get a better idea of what variables are available to you, you can include + the print_r function in your email. Simply include the line: + + <?php print_r($submission) ?> + + to get a listing of all the available fields you can use in your mail. + +- Advanced Webform e-mail Theming: Theming the e-mail headers may also be done + by overriding the theme_webform_mail_headers() function from webform.module. + Just copy the code out of webform.module and change as necessary in your + template.php file. This allows you to customize the e-mail headers. + +Theme the confirmation page +--------------------------- + +After a user submits a webform, they are directed to a page that contains the +confirmation message set in the webform node settings (assuming the form doesn't +direct to a complete URL). These instructions let you customize the format of +the confirmation page of a single node or all webforms on your site. + +- Open the Webform module directory. + +- Copy (do not move!) the "webform-confirmation.tpl.php" file to your theme + directory. + +- Open the new file and change it's contents to the your liking. Here's an + example that inserts some additional HTML around the confirmation message and + gives links to edit the submission. + + <?php /* Begin sample webform confirmation page */ ?> + + <div class="confirmation-message"> + <?php print $confirmation_message ?> + </div> + + <ul> + <li><a href="<?php print url('node/'. $node->nid . '/submission/'. $sid)?>">View your submission</a></li> + <li><a href="<?php print url('node/'. $node->nid . '/submission/'. $sid .'/edit')?>">Edit your submission</a></li> + </ul> + + <?php /* End sample webform confirmation page */ ?> + +- You may edit the webform-confirmation.tpl.php file in your theme directory, + this will affect all the webform mails sent by your entire site. Or, if you + want to edit the e-mail sent by only one particular webform, rename the file + "webform-confirmation-[node id here].tpl.php", replacing [node id here] with + the node ID of the webform. + +- Visit admin/settings/performance and click the "Clear cached data" button. + +Theme display of an entire webform +---------------------------------- + +Theming a webform can be useful for rearranging elements or customizing the +appearance of multiple components at once. This tutorial assumes usage +of the phptemplate engine. + +- Copy the "webform-form.tpl.php" file from the webform directory to your + theme directory. You may rename this file + "webform-form-[node id here].tpl.php" if you want to theme one particular + webform on your site. Replace [node id here] with the node ID of the webform. + +- Open up your new file and customize the webform however you like. + +- Visit admin/settings/performance and click the "Clear cached data" button. + +- All Webform forms have 2 main fieldsets: "submitted", and "details". Although + you may move things around as you wish, keep all your components within the + "submitted" fieldset. Only the "submitted" fieldset is displayed and Webform + depends on the other two to operate properly, so don't mess with them unless + you have good reason to do so (like you're forwarding your webform to a custom + PHP or PERL script). + +Theme display of a webform submission display +--------------------------------------------- + +Theming the display of a webform submission works the same way as theming a +webform form. Webform uses Drupal "renderable" style arrays for the display of +submissions, just like most forms in Drupal. + +The template file for theming submissions is webform-submission.tpl.php. You can +use webform-submission-[node id here].tpl.php for individual nodes if desired. +Note that the contents of this template are used not only for display of +submissions in the Webform interface but also in e-mails when printing out +the %email_values token. + +$Id: THEMING.txt,v 1.13 2010/08/30 17:01:58 quicksketch Exp $ diff --git a/sites/all/modules/webform/components/date.inc b/sites/all/modules/webform/components/date.inc new file mode 100644 index 0000000000000000000000000000000000000000..5d152d842b183d1269cb3901c09934d58c720c0e --- /dev/null +++ b/sites/all/modules/webform/components/date.inc @@ -0,0 +1,410 @@ +<?php +// $Id: date.inc,v 1.47 2011/01/06 18:34:54 quicksketch Exp $ + +/** + * @file + * Webform module date component. + */ + +/** + * Implementation of _webform_defaults_component(). + */ +function _webform_defaults_date() { + return array( + 'name' => '', + 'form_key' => NULL, + 'pid' => 0, + 'weight' => 0, + 'value' => '', + 'mandatory' => 0, + 'extra' => array( + 'timezone' => 'user', + 'year_start' => '-2', + 'year_end' => '+2', + 'year_textfield' => 0, + 'datepicker' => 1, + 'title_display' => 0, + 'description' => '', + ), + ); +} + +/** + * Implementation of _webform_theme_component(). + */ +function _webform_theme_date() { + return array( + 'webform_date' => array( + 'render element' => 'element', + ), + 'webform_display_date' => array( + 'render element' => 'element', + ), + 'webform_calendar' => array( + 'variables' => array('component' => NULL, 'calendar_classes' => NULL), + 'template' => 'templates/webform-calendar', + ), + ); +} + +/** + * Implementation of _webform_edit_component(). + */ +function _webform_edit_date($component) { + $form = array(); + $form['value'] = array( + '#type' => 'textfield', + '#title' => t('Default value'), + '#default_value' => $component['value'], + '#description' => t('The default value of the field.') . '<br />' . t('Accepts any date in any <a href="http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid.'), + '#size' => 60, + '#maxlength' => 127, + '#weight' => 0, + ); + $form['extra']['timezone'] = array( + '#type' => 'radios', + '#title' => t('Default value timezone'), + '#default_value' => empty($component['extra']['timezone']) ? 'user' : $component['extra']['timezone'], + '#description' => t('Adjust the default time value according to a specific timezone.'), + '#options' => array('user' => t('User timezone'), 'site' => t('Website timezone')), + '#weight' => -1, + '#access' => variable_get('configurable_timezones', 1), + ); + + $form['display']['datepicker'] = array( + '#type' => 'checkbox', + '#title' => t('Enable popup calendar'), + '#default_value' => $component['extra']['datepicker'], + '#description' => t('Enable a JavaScript date picker next to the date field.'), + '#weight' => 2, + '#parents' => array('extra', 'datepicker'), + ); + + $form['display']['year_textfield'] = array( + '#type' => 'checkbox', + '#title' => t('Use a textfield for year'), + '#default_value' => $component['extra']['year_textfield'], + '#description' => t('If checked, the generated date field will use a textfield for the year. Otherwise it will use a select list.'), + '#weight' => 5, + '#parents' => array('extra', 'year_textfield'), + ); + + $form['validation']['year_start'] = array( + '#type' => 'textfield', + '#title' => t('Start year'), + '#default_value' => $component['extra']['year_start'], + '#description' => t('The first year that is allowed to be entered. May be relative (i.e. -2 or +2) or simply the year (i.e. 1950).'), + '#size' => 10, + '#maxlength' => 4, + '#weight' => 3, + '#parents' => array('extra', 'year_start'), + ); + $form['validation']['year_end'] = array( + '#type' => 'textfield', + '#title' => t('End year'), + '#default_value' => $component['extra']['year_end'], + '#description' => t('The last year that is allowed to be entered. May be relative (i.e. -2 or +2) or simply the year (i.e. 1950).'), + '#size' => 10, + '#maxlength' => 4, + '#weight' => 4, + '#parents' => array('extra', 'year_end'), + ); + + return $form; +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_render_date($component, $value = NULL, $filter = TRUE) { + $element = array( + '#title' => $filter ? _webform_filter_xss($component['name']) : $component['name'], + '#title_display' => $component['extra']['title_display'] ? $component['extra']['title_display'] : 'before', + '#weight' => $component['weight'], + '#type' => 'date', + '#description' => $filter ? _webform_filter_descriptions($component['extra']['description']) : $component['extra']['description'], + '#required' => $component['mandatory'], + '#year_start' => $component['extra']['year_start'], + '#year_end' => $component['extra']['year_end'], + '#process' => array('webform_expand_date'), + '#theme' => 'webform_date', + '#theme_wrappers' => array('webform_element'), + '#element_validate' => array('webform_validate_date'), + '#webform_component' => $component, + ); + + if ($component['extra']['datepicker']) { + $element['#datepicker'] = TRUE; + $element['#attached'] = array( + 'library' => array( + array('system', 'ui.datepicker'), + ), + ); + } + + if (isset($value[0]) && $value[0] !== '') { + $value = webform_date_array($value[0], 'date'); + $element['#default_value'] = $value; + } + + return $element; +} + +/** + * Form API #process function for Webform date fields. + */ +function webform_expand_date($element) { + $component = $element['#webform_component']; + + // Set defaults according to existing #default_value (set by Form API) + if (isset($element['#default_value']['month']) || isset($element['#default_value']['day']) || isset($element['#default_value']['year'])) { + $default_values = array( + 'month' => $element['#default_value']['month'], + 'day' => $element['#default_value']['day'], + 'year' => $element['#default_value']['year'], + ); + } + // Or, if none, use set the defaults of the component. + elseif (drupal_strlen($component['value']) > 0) { + $timezone = $component['extra']['timezone'] != 'user' ? NULL : 'user'; + $default_values = webform_date_array(webform_strtodate('c', $component['value'], $timezone), 'date'); + } + else { + $default_values = array( + 'day' => NULL, + 'month' => NULL, + 'year' => NULL, + ); + } + + // Let Drupal do it's normal expansion. + $element = form_process_date($element); + + // Set default values. + foreach ($default_values as $type => $value) { + switch ($type) { + case 'month': + $none = t('Month'); + break; + case 'day': + $none = t('Day'); + break; + case 'year': + $none = t('Year'); + break; + } + unset($element[$type]['#value']); + $element[$type]['#default_value'] = isset($default_values[$type]) ? $default_values[$type] : NULL; + $element[$type]['#options'] = array('' => $none) + $element[$type]['#options']; + } + + // Convert relative dates to absolute ones. + foreach (array('year_start', 'year_end') as $start_end) { + $year = $element['#' . $start_end]; + if (strpos($year, '-') === 0 || strpos($year, '+') === 0) { + $timezone = $component['extra']['timezone'] != 'user' ? NULL : 'user'; + $element['#' . $start_end] = webform_strtodate('Y', $year . ' years', $timezone); + } + } + + // Tweak the year field. + if ($component['extra']['year_textfield']) { + $element['year']['#type'] = 'textfield'; + $element['year']['#size'] = 5; + $element['year']['#maxlength'] = 4; + unset($element['year']['#options']); + } + elseif (is_numeric($element['#year_start']) && is_numeric($element['#year_end'])) { + $element['year']['#options'] = array('' => t('Year')) + drupal_map_assoc(range($element['#year_start'], $element['#year_end'])); + } + + return $element; +} + +/** + * Theme a webform date element. + */ +function theme_webform_date($variables) { + $element = $variables['element']; + + $element['year']['#attributes']['class'] = array('year'); + $element['month']['#attributes']['class'] = array('month'); + $element['day']['#attributes']['class'] = array('day'); + + // Add error classes to all items within the element. + if (form_get_error($element)) { + $element['year']['#attributes']['class'][] = 'error'; + $element['month']['#attributes']['class'][] = 'error'; + $element['day']['#attributes']['class'][] = 'error'; + } + + $class = array('webform-container-inline'); + + // Add the JavaScript calendar if available (provided by Date module package). + if (!empty($element['#datepicker'])) { + $class[] = 'webform-datepicker'; + $calendar_class = array('webform-calendar'); + if ($element['#year_start'] && is_numeric($element['#year_start'])) { + $calendar_class[] = 'webform-calendar-start-' . $element['#year_start']; + } + if ($element['#year_start'] && is_numeric($element['#year_end'])) { + $calendar_class[] = 'webform-calendar-end-' . $element['#year_end']; + } + $calendar_class[] ='webform-calendar-day-' . variable_get('date_first_day', 0); + + $calendar = theme('webform_calendar', array('component' => $element['#webform_component'], 'calendar_classes' => $calendar_class)); + } + + $output = ''; + $output .= '<div class="' . implode(' ', $class) . '">'; + $output .= drupal_render_children($element); + $output .= isset($calendar) ? $calendar : ''; + $output .= '</div>'; + + return $output; +} + +/** + * Element validation for Webform date fields. + */ +function webform_validate_date($element, $form_state) { + $component = $element['#webform_component']; + $form_key = $component['form_key']; + $name = $component['name']; + + // Check if the user filled the required fields. + foreach (array('day', 'month', 'year') as $field_type) { + if (!is_numeric($element[$field_type]['#value']) && $element['#required']) { + form_error($element, t('!name field is required.', array('!name' => $name))); + return; + } + } + // Check for a valid date. + if ($element['month']['#value'] !== '' || $element['day']['#value'] !== '' || $element['year']['#value'] !== '') { + if (!checkdate((int)$element['month']['#value'], (int)$element['day']['#value'], (int)$element['year']['#value'])) { + form_error($element, t('Entered !name is not a valid date.', array('!name' => $name))); + return; + } + } + // Check the date is between allowed years. + if ($element['year']['#value'] !== '' && is_numeric($element['#year_start']) && is_numeric($element['#year_end'])) { + // Allow years to be in reverse order. + $start = $element['#year_start'] < $element['#year_end'] ? $element['#year_start'] : $element['#year_end']; + $end = $element['#year_start'] > $element['#year_end'] ? $element['#year_start'] : $element['#year_end']; + if ($element['year']['#value'] < $start || $element['year']['#value'] > $end) { + form_error($element['year'], t('The entered date needs to be between the years @start and @end.', array('@start' => $start, '@end' => $end))); + return; + } + } +} + +/** + * Implementation of _webform_submit_component(). + */ +function _webform_submit_date($component, $value) { + // Convert the date to an ISO 8601 format. + return ($value['year'] && $value['month'] && $value['day']) ? webform_date_string($value, 'date') : ''; +} + +/** + * Implementation of _webform_display_component(). + */ +function _webform_display_date($component, $value, $format = 'html') { + $value = webform_date_array(isset($value[0]) ? $value[0] : '', 'date'); + + return array( + '#title' => $component['name'], + '#weight' => $component['weight'], + '#theme' => 'webform_display_date', + '#theme_wrappers' => $format == 'html' ? array('webform_element') : array('webform_element_text'), + '#format' => $format, + '#value' => $value, + '#webform_component' => $component, + ); +} + +/** + * Format the text output for this component. + */ +function theme_webform_display_date($variables) { + $element = $variables['element']; + $output = ' '; + if ($element['#value']['year'] && $element['#value']['month'] && $element['#value']['day']) { + $timestamp = webform_strtotime($element['#value']['month'] . '/' . $element['#value']['day'] . '/' . $element['#value']['year']); + $format = webform_date_format('medium'); + $output = format_date($timestamp, 'custom', $format, 'UTC'); + } + + return $output; +} + +/** + * Implementation of _webform_analysis_component(). + */ +function _webform_analysis_date($component, $sids = array()) { + $query = db_select('webform_submitted_data', 'wsd', array('fetch' => PDO::FETCH_ASSOC)) + ->fields('wsd', array('no', 'data')) + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']) + ->orderBy('sid'); + + if (count($sids)) { + $query->condition('sid', $sids, 'IN'); + } + + $result = $query->execute(); + + $dates = array(); + $submissions = 0; + foreach ($result as $row) { + $submissions++; + if ($row['data']) { + $dates[] = webform_date_array($row['data']); + } + } + + // Display stats. + $nonblanks = count($dates); + $rows[0] = array(t('Left Blank'), ($submissions - $nonblanks)); + $rows[1] = array(t('User entered value'), $nonblanks); + return $rows; +} + +/** + * Implementation of _webform_table_component(). + */ +function _webform_table_date($component, $value) { + if ($value[0]) { + $timestamp = webform_strtotime($value[0]); + $format = webform_date_format('short'); + return format_date($timestamp, 'custom', $format, 'UTC'); + } + else { + return ''; + } +} + +/** + * Implementation of _webform_csv_headers_component(). + */ +function _webform_csv_headers_date($component, $export_options) { + $header = array(); + $header[0] = ''; + $header[1] = ''; + $header[2] = $component['name']; + return $header; +} + +/** + * Implementation of _webform_csv_data_component(). + */ +function _webform_csv_data_date($component, $export_options, $value) { + if ($value[0]) { + $timestamp = webform_strtotime($value[0]); + $format = webform_date_format('short'); + return format_date($timestamp, 'custom', $format, 'UTC'); + } + else { + return ''; + } +} diff --git a/sites/all/modules/webform/components/email.inc b/sites/all/modules/webform/components/email.inc new file mode 100644 index 0000000000000000000000000000000000000000..09da538cee00c40f491613f3b66b65ff9fbe6e65 --- /dev/null +++ b/sites/all/modules/webform/components/email.inc @@ -0,0 +1,250 @@ +<?php +// $Id: email.inc,v 1.38 2010/10/18 07:21:10 quicksketch Exp $ + +/** + * @file + * Webform module email component. + */ + +/** + * Implementation of _webform_defaults_component(). + */ +function _webform_defaults_email() { + return array( + 'name' => '', + 'form_key' => NULL, + 'pid' => 0, + 'weight' => 0, + 'value' => '', + 'mandatory' => 0, + 'extra' => array( + 'width' => '', + 'unique' => 0, + 'disabled' => 0, + 'title_display' => 0, + 'description' => '', + 'attributes' => array(), + ), + ); +} + +/** + * Implementation of _webform_theme_component(). + */ +function _webform_theme_email() { + return array( + 'webform_display_email' => array( + 'render element' => 'element', + ), + ); +} + +/** + * Implementation of _webform_edit_component(). + */ +function _webform_edit_email($component) { + $form['value'] = array( + '#type' => 'textfield', + '#title' => t('Default value'), + '#default_value' => $component['value'], + '#description' => t('The default value of the field.') . theme('webform_token_help'), + '#size' => 60, + '#maxlength' => 127, + '#weight' => 0, + '#attributes' => ($component['value'] == '%useremail' && count(form_get_errors()) == 0) ? array('disabled' => TRUE) : array(), + '#id' => 'email-value', + ); + $form['user_email'] = array( + '#type' => 'checkbox', + '#title' => t('User email as default'), + '#default_value' => $component['value'] == '%useremail' ? 1 : 0, + '#description' => t('Set the default value of this field to the user email, if he/she is logged in.'), + '#attributes' => array('onclick' => 'getElementById("email-value").value = (this.checked ? "%useremail" : ""); getElementById("email-value").disabled = this.checked;'), + '#weight' => 0, + '#element_validate' => array('_webform_edit_email_validate'), + ); + $form['display']['width'] = array( + '#type' => 'textfield', + '#title' => t('Width'), + '#default_value' => $component['extra']['width'], + '#description' => t('Width of the textfield.') . ' ' . t('Leaving blank will use the default size.'), + '#size' => 5, + '#maxlength' => 10, + '#parents' => array('extra', 'width'), + ); + $form['display']['disabled'] = array( + '#type' => 'checkbox', + '#title' => t('Disabled'), + '#return_value' => 1, + '#description' => t('Make this field non-editable. Useful for setting an unchangeable default value.'), + '#weight' => 11, + '#default_value' => $component['extra']['disabled'], + '#parents' => array('extra', 'disabled'), + ); + $form['validation']['unique'] = array( + '#type' => 'checkbox', + '#title' => t('Unique'), + '#return_value' => 1, + '#description' => t('Check that all entered values for this field are unique. The same value is not allowed to be used twice.'), + '#weight' => 1, + '#default_value' => $component['extra']['unique'], + '#parents' => array('extra', 'unique'), + ); + return $form; +} + +/** + * Element validation function for the email edit form. + */ +function _webform_edit_email_validate($element, &$form_state) { + if ($form_state['values']['user_email']) { + $form_state['values']['value'] = '%useremail'; + } +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_render_email($component, $value = NULL, $filter = TRUE) { + global $user; + $element = array( + '#type' => 'textfield', + '#title' => $filter ? _webform_filter_xss($component['name']) : $component['name'], + '#title_display' => $component['extra']['title_display'] ? $component['extra']['title_display'] : 'before', + '#default_value' => _webform_filter_values($component['value']), + '#required' => $component['mandatory'], + '#weight' => $component['weight'], + '#description' => $filter ? _webform_filter_descriptions($component['extra']['description']) : $component['extra']['description'], + '#attributes' => $component['extra']['attributes'], + '#element_validate' => array('_webform_validate_email'), + '#theme_wrappers' => array('webform_element'), + '#webform_component' => $component, + ); + + // Add an e-mail class for identifying the difference from normal textfields. + $element['#attributes']['class'][] = 'email'; + + // Enforce uniqueness. + if ($component['extra']['unique']) { + $element['#element_validate'][] = 'webform_validate_unique'; + } + + if (isset($value)) { + $element['#default_value'] = $value[0]; + } + + if ($component['extra']['disabled']) { + $element['#attributes']['readonly'] = 'readonly'; + } + + // Change the 'width' option to the correct 'size' option. + if ($component['extra']['width'] > 0) { + $element['#size'] = $component['extra']['width']; + } + + return $element; +} + +/** + * A Drupal Form API Validation function. Validates the entered values from + * email components on the client-side form. + * + * @param $form_element + * The e-mail form element. + * @param $form_state + * The full form state for the webform. + * @return + * None. Calls a form_set_error if the e-mail is not valid. + */ +function _webform_validate_email($form_element, &$form_state) { + $component = $form_element['#webform_component']; + $value = trim($form_element['#value']); + if (!empty($value) && !valid_email_address($value)) { + form_error($form_element, t('%value is not a valid email address.', array('%value' => $value))); + } + else { + form_set_value($form_element, $value, $form_state); + } +} + +/** + * Implementation of _webform_display_component(). + */ +function _webform_display_email($component, $value, $format = 'html') { + return array( + '#title' => $component['name'], + '#weight' => $component['weight'], + '#theme' => 'webform_display_email', + '#theme_wrappers' => $format == 'html' ? array('webform_element') : array('webform_element_text'), + '#format' => $format, + '#value' => isset($value[0]) ? $value[0] : '', + '#webform_component' => $component, + ); +} + +/** + * Format the text output for this component. + */ +function theme_webform_display_email($variables) { + $element = $variables['element']; + $element['#value'] = empty($element['#value']) ? ' ' : $element['#value']; + return $element['#format'] == 'html' ? check_plain($element['#value']) : $element['#value']; +} + +/** + * Implementation of _webform_analysis_component(). + */ +function _webform_analysis_email($component, $sids = array()) { + $query = db_select('webform_submitted_data', 'wsd', array('fetch' => PDO::FETCH_ASSOC)) + ->fields('wsd', array('no', 'data')) + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']); + + if (count($sids)) { + $query->condition('sid', $sids, 'IN'); + } + + $nonblanks = 0; + $submissions = 0; + $wordcount = 0; + + $result = $query->execute(); + foreach ($result as $data) { + if (drupal_strlen(trim($data['data'])) > 0) { + $nonblanks++; + $wordcount += str_word_count(trim($data['data'])); + } + $submissions++; + } + + $rows[0] = array(t('Left Blank'), ($submissions - $nonblanks)); + $rows[1] = array(t('User entered value'), $nonblanks); + $rows[2] = array(t('Average submission length in words (ex blanks)'), ($nonblanks != 0 ? number_format($wordcount/$nonblanks, 2) : '0')); + return $rows; +} + +/** + * Implementation of _webform_table_component(). + */ +function _webform_table_email($component, $value) { + return check_plain(empty($value[0]) ? '' : $value[0]); +} + + +/** + * Implementation of _webform_csv_headers_component(). + */ +function _webform_csv_headers_email($component, $export_options) { + $header = array(); + $header[0] = ''; + $header[1] = ''; + $header[2] = $component['name']; + return $header; +} + +/** + * Implementation of _webform_csv_data_component(). + */ +function _webform_csv_data_email($component, $export_options, $value) { + return empty($value[0]) ? '' : $value[0]; +} diff --git a/sites/all/modules/webform/components/fieldset.inc b/sites/all/modules/webform/components/fieldset.inc new file mode 100644 index 0000000000000000000000000000000000000000..132282701f8268d296ea973edb207d3c283729b7 --- /dev/null +++ b/sites/all/modules/webform/components/fieldset.inc @@ -0,0 +1,97 @@ +<?php +// $Id: fieldset.inc,v 1.18 2010/10/19 04:53:39 quicksketch Exp $ + +/** + * @file + * Webform module fieldset component. + */ + +/** + * Implementation of _webform_defaults_component(). + */ +function _webform_defaults_fieldset() { + return array( + 'name' => '', + 'form_key' => NULL, + 'pid' => 0, + 'weight' => 0, + 'extra' => array( + 'title_display' => 0, + 'collapsible' => 0, + 'collapsed' => 0, + 'description' => '', + ), + ); +} + +/** + * Implementation of _webform_edit_component(). + */ +function _webform_edit_fieldset($component) { + $form = array(); + $form['display']['collapsible'] = array( + '#type' => 'checkbox', + '#title' => t('Collapsible'), + '#default_value' => $component['extra']['collapsible'], + '#description' => t('If this fieldset is collapsible, the user may open or close the fieldset.'), + '#weight' => 0, + '#parents' => array('extra', 'collapsible'), + ); + $form['display']['collapsed'] = array( + '#type' => 'checkbox', + '#title' => t('Collapsed by Default'), + '#default_value' => $component['extra']['collapsed'], + '#description' => t('Collapsible fieldsets are "open" by default. Select this option to default the fieldset to "closed."'), + '#weight' => 3, + '#parents' => array('extra', 'collapsed'), + ); + return $form; +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_render_fieldset($component, $value = NULL, $filter = TRUE) { + $element = array( + '#type' => $component['type'], + '#title' => $filter ? _webform_filter_xss($component['name']) : $component['name'], + '#weight' => $component['weight'], + '#description' => $filter ? _webform_filter_descriptions($component['extra']['description']) : $component['extra']['description'], + '#collapsible' => $component['extra']['collapsible'], + '#collapsed' => $component['extra']['collapsed'], + '#attributes' => array('class' => array('webform-component-' . $component['type']), 'id' => 'webform-component-' . $component['form_key']), + '#pre_render' => array('webform_fieldset_prerender'), + '#webform_component' => $component, + ); + + return $element; +} + +/** + * Pre-render function to set a fieldset ID. + */ +function webform_fieldset_prerender($element) { + $element['#attributes']['id'] = 'webform-component-' . str_replace('_', '-', implode('--', array_slice($element['#parents'], 1))); + return $element; +} + +/** + * Implementation of _webform_display_component(). + */ +function _webform_display_fieldset($component, $value, $format = 'html') { + if ($format == 'text') { + $element = array( + '#title' => $component['name'], + '#weight' => $component['weight'], + '#theme_wrappers' => array('webform_element_text'), + ); + } + else { + $element = _webform_render_fieldset($component, $value); + } + + $element['#webform_component'] = $component; + $element['#format'] = $format; + + return $element; +} diff --git a/sites/all/modules/webform/components/file.inc b/sites/all/modules/webform/components/file.inc new file mode 100644 index 0000000000000000000000000000000000000000..6328243b7c1a134be35968e55b66f743a019de3a --- /dev/null +++ b/sites/all/modules/webform/components/file.inc @@ -0,0 +1,622 @@ +<?php +// $Id: file.inc,v 1.30 2011/01/12 06:55:50 quicksketch Exp $ + +/** + * @file + * Webform module file component. + */ + +/** + * Implementation of _webform_defaults_component(). + */ +function _webform_defaults_file() { + return array( + 'name' => '', + 'form_key' => NULL, + 'mandatory' => 0, + 'pid' => 0, + 'weight' => 0, + 'extra' => array( + 'filtering' => array( + 'types' => array('gif', 'jpg', 'png'), + 'addextensions' => '', + 'size' => 800, + ), + 'savelocation' => '', + 'width' => '', + 'title_display' => 0, + 'description' => '', + 'attributes' => array(), + ), + ); +} + +/** + * Implementation of _webform_theme_component(). + */ +function _webform_theme_file() { + return array( + 'webform_edit_file' => array( + 'render element' => 'form', + ), + 'webform_render_file' => array( + 'render element' => 'element', + ), + 'webform_display_file' => array( + 'render element' => 'element', + ), + ); +} + +/** + * Implementation of _webform_edit_component(). + */ +function _webform_edit_file($component) { + $form = array(); + $form['#theme'] = 'webform_edit_file'; + + $form['validation']['filtering'] = array( + '#element_validate' => array('_webform_edit_file_filtering_validate'), + '#parents' => array('extra', 'filtering'), + ); + + // Find the list of all currently valid extensions. + $current_types = isset($component['extra']['filtering']['types']) ? $component['extra']['filtering']['types'] : array(); + + $types = array('gif', 'jpg', 'png'); + $form['validation']['filtering']['types']['webimages'] = array( + '#type' => 'checkboxes', + '#title' => t('Web Images'), + '#options' => drupal_map_assoc($types), + '#default_value' => array_intersect($current_types, $types), + ); + + $types = array('bmp', 'eps', 'tif', 'pict', 'psd'); + $form['validation']['filtering']['types']['desktopimages'] = array( + '#type' => 'checkboxes', + '#title' => t('Desktop Images'), + '#options' => drupal_map_assoc($types), + '#default_value' => array_intersect($current_types, $types), + ); + + $types = array('txt', 'rtf', 'html', 'odf', 'pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'xml'); + $form['validation']['filtering']['types']['documents'] = array( + '#type' => 'checkboxes', + '#title' => t('Documents'), + '#options' => drupal_map_assoc($types), + '#default_value' => array_intersect($current_types, $types), + ); + + $types = array('avi', 'mov', 'mp3', 'ogg', 'wav'); + $form['validation']['filtering']['types']['media'] = array( + '#type' => 'checkboxes', + '#title' => t('Media'), + '#options' => drupal_map_assoc($types), + '#default_value' => array_intersect($current_types, $types), + ); + + $types = array('bz2', 'dmg', 'gz', 'jar', 'rar', 'sit', 'tar', 'zip'); + $form['validation']['filtering']['types']['archives'] = array( + '#type' => 'checkboxes', + '#title' => t('Archives'), + '#options' => drupal_map_assoc($types), + '#default_value' => array_intersect($current_types, $types), + ); + + $form['validation']['filtering']['addextensions'] = array( + '#type' => 'textfield', + '#title' => t('Additional Extensions'), + '#default_value' => $component['extra']['filtering']['addextensions'], + '#description' => t('Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above.'), + '#size' => 60, + '#weight' => 3, + '#default_value' => $component['extra']['filtering']['addextensions'], + ); + + $form['validation']['filtering']['size'] = array( + '#type' => 'textfield', + '#title' => t('Max Upload Size'), + '#default_value' => $component['extra']['filtering']['size'], + '#description' => t('Enter the max file size a user may upload (in KB).'), + '#size' => 10, + '#weight' => 3, + '#field_suffix' => t('KB'), + '#default_value' => $component['extra']['filtering']['size'], + '#parents' => array('extra', 'filtering', 'size'), + '#element_validate' => array('_webform_edit_file_size_validate'), + ); + $form['extra']['savelocation'] = array( + '#type' => 'textfield', + '#title' => t('Upload Directory'), + '#default_value' => $component['extra']['savelocation'], + '#description' => t('Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files.'), + '#weight' => 3, + '#field_prefix' => file_stream_wrapper_get_instance_by_scheme(file_default_scheme())->getDirectoryPath() . '/webform/', + '#element_validate' => array('_webform_edit_file_check_directory'), + '#after_build' => array('_webform_edit_file_check_directory'), + ); + $form['display']['width'] = array( + '#type' => 'textfield', + '#title' => t('Width'), + '#default_value' => $component['extra']['width'], + '#description' => t('Width of the file field.') . ' ' . t('Leaving blank will use the default size.'), + '#size' => 5, + '#maxlength' => 10, + '#weight' => 4, + '#parents' => array('extra', 'width') + ); + return $form; +} + +/** + * A Form API element validate function to check filesize is numeric. + */ +function _webform_edit_file_size_validate($element) { + if (!empty($element['#value'])) { + if (!is_numeric($element['#value']) || intval($element['#value']) != $element['#value']) { + form_error($element, t('Max upload size must be a number in KB.')); + } + } +} + +/** + * A Form API after build function. + * + * Ensure that the destination directory exists and is writable. + */ +function _webform_edit_file_check_directory($element) { + $destination_dir = file_build_uri('webform/' . $element['#value']); + $destination_success = file_prepare_directory($destination_dir, FILE_CREATE_DIRECTORY); + if (!$destination_success) { + form_set_error('savelocation', t('The save directory %directory could not be created. Check that the webform files directory is writtable.', array('%directory' => $destination_dir))); + } + return $element; +} + +/** + * A Form API element validate function. + * + * Change the submitted values of the component so that all filtering extensions + * are saved as a single array. + */ +function _webform_edit_file_filtering_validate($element, &$form_state) { + // Predefined types. + $extensions = array(); + foreach (element_children($element['types']) as $category) { + foreach (array_keys($element['types'][$category]['#value']) as $extension) { + if ($element['types'][$category][$extension]['#value']) { + $extensions[] = $extension; + } + } + } + + // Additional types. + $additional_extensions = explode(',', $element['addextensions']['#value']); + foreach ($additional_extensions as $extension) { + $clean_extension = drupal_strtolower(trim($extension)); + if (!empty($clean_extension) && !in_array($clean_extension, $extensions)) { + $extensions[] = $clean_extension; + } + } + + form_set_value($element['types'], $extensions, $form_state); +} + +function theme_webform_edit_file($variables) { + $form = $variables['form']; + + // Add a little JavaScript to check all the items in one type. + $javascript = ' + function check_category_boxes() { + var checkValue = !document.getElementById("edit-extra-filtering-types-"+arguments[0]+"-"+arguments[1]).checked; + for(var i=1; i < arguments.length; i++) { + document.getElementById("edit-extra-filtering-types-"+arguments[0]+"-"+arguments[i]).checked = checkValue; + } + } + '; + drupal_add_js($javascript, 'inline'); + + // Format the components into a table. + $per_row = 6; + $rows = array(); + foreach (element_children($form['validation']['filtering']['types']) as $key => $filtergroup) { + $row = array(); + $first_row = count($rows); + if ($form['validation']['filtering']['types'][$filtergroup]['#type'] == 'checkboxes') { + // Add the title. + $row[] = $form['validation']['filtering']['types'][$filtergroup]['#title']; + $row[] = ' '; + // Convert the checkboxes into individual form-items. + $checkboxes = form_process_checkboxes($form['validation']['filtering']['types'][$filtergroup]); + // Render the checkboxes in two rows. + $checkcount = 0; + $jsboxes = ''; + foreach (element_children($checkboxes) as $key) { + $checkbox = $checkboxes[$key]; + if ($checkbox['#type'] == 'checkbox') { + $checkcount++; + $jsboxes .= "'" . $checkbox['#return_value'] . "',"; + if ($checkcount <= $per_row) { + $row[] = array('data' => drupal_render($checkbox)); + } + elseif ($checkcount == $per_row + 1) { + $rows[] = array('data' => $row, 'style' => 'border-bottom: none;'); + $row = array(array('data' => ' '), array('data' => ' ')); + $row[] = array('data' => drupal_render($checkbox)); + } + else { + $row[] = array('data' => drupal_render($checkbox)); + } + } + } + // Pretty up the table a little bit. + $current_cell = $checkcount % $per_row; + if ($current_cell > 0) { + $colspan = $per_row - $current_cell + 1; + $row[$current_cell + 1]['colspan'] = $colspan; + } + // Add the javascript links. + $jsboxes = drupal_substr($jsboxes, 0, drupal_strlen($jsboxes) - 1); + $rows[] = array('data' => $row); + $select_link = ' <a href="javascript:check_category_boxes(\'' . $filtergroup . '\',' . $jsboxes . ')">(select)</a>'; + $rows[$first_row]['data'][1] = array('data' => $select_link, 'width' => 40); + unset($form['validation']['filtering']['types'][$filtergroup]); + } + elseif ($filtergroup != 'size') { + // Add other fields to the table (ie. additional extensions). + $row[] = $form['validation']['filtering']['types'][$filtergroup]['#title']; + unset($form['validation']['filtering']['types'][$filtergroup]['#title']); + $row[] = array( + 'data' => drupal_render($form['validation']['filtering']['types'][$filtergroup]), + 'colspan' => $per_row + 1, + ); + unset($form['validation']['filtering']['types'][$filtergroup]); + $rows[] = array('data' => $row); + } + } + $header = array(array('data' => t('Category'), 'colspan' => '2'), array('data' => t('Types'), 'colspan' => $per_row)); + + // Create the table inside the form. + $form['validation']['filtering']['types']['table'] = array( + '#theme' => 'table', + '#header' => $header, + '#rows' => $rows + ); + + $output = drupal_render_children($form); + + return $output; +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_render_file($component, $value = NULL, $filter = TRUE) { + $node = node_load($component['nid']); + $form_key = implode('_', webform_component_parent_keys($node, $component)); + $element[$form_key] = array( + '#type' => $component['type'], + //'#required' => $component['mandatory'], // Drupal core bug with required file uploads. + '#attributes' => $component['extra']['attributes'], + '#tree' => FALSE, // file_check_upload assumes a flat $_FILES structure. + '#element_validate' => array( + '_webform_validate_file', + '_webform_required_file', // Custom required routine. + ), + '#webform_component' => $component, + '#theme_wrappers' => array(), + ); + $element['#webform_component'] = $component; + $element['#webform_required'] = $component['mandatory']; + $element['#webform_form_key'] = $form_key; + $element['#weight'] = $component['weight']; + $element['#title'] = $filter ? _webform_filter_xss($component['name']) : $component['name']; + $element['#title_display'] = $component['extra']['title_display'] ? $component['extra']['title_display'] : 'before'; + $element['#description'] = $filter ? _webform_filter_descriptions($component['extra']['description']) : $component['extra']['description']; + + $element['#theme'] = 'webform_render_file'; + $element['#theme_wrappers'] = array('webform_element'); + + // Change the 'width' option to the correct 'size' option. + if ($component['extra']['width'] > 0) { + $element[$form_key]['#size'] = $component['extra']['width']; + } + + // Add a hidden element to store the FID for new files. + $element['_fid'] = array( + '#type' => 'hidden', + '#default_value' => '', + ); + + // Add a hidden element to store the FID for existing files. + $element['_old'] = array( + '#type' => 'hidden', + '#value' => isset($value[0]) ? $value[0] : NULL, + ); + + return $element; +} + +/** + * Render a File component. + */ +function theme_webform_render_file($variables) { + $element = $variables['element']; + + // Add information about the existing file, if any. + $value = $element['_fid']['#value'] ? $element['_fid']['#value'] : $element['_old']['#value']; + if ($value && ($file = webform_get_file($value))) { + $firstchild = array_shift(array_keys($element)); + $element[$firstchild]['#suffix'] = ' ' . l(t('Download !filename', array('!filename' => webform_file_name($file->filepath))), webform_file_url($file->filepath)) . (isset($element['#suffix']) ? $element['#suffix'] : ''); + $element[$firstchild]['#description'] = ' <div class="webform-newfile-message">'. t('Uploading a new file will replace the current file.') .'</div>'. $element[$firstchild]['#description']; + } + + // Add the required asterisk. + if ($element['#webform_required']) { + $element[$element['#webform_form_key']]['#required'] = TRUE; + } + + return drupal_render_children($element); +} + +/** + * A Form API element validate function. + * + * Fix Drupal core's handling of required file fields. + */ +function _webform_required_file($element, $form_state) { + $component = $element['#webform_component']; + $parents = $element['#array_parents']; + array_pop($parents); + $form_key = implode('_', $parents); + + // Do not validate requiredness on back or draft button. + if (isset($form_state['clicked_button']['#validate']) && empty($form_state['clicked_button']['#validate'])) { + return; + } + + // Check if a value is already set in the hidden field. + $values = $form_state['values']; + $key = array_shift($parents); + $found = FALSE; + while (isset($values[$key])) { + if (isset($values[$key])) { + $values = $values[$key]; + $found = TRUE; + } + else { + $found = FALSE; + } + $key = array_shift($parents); + } + + if (!$found || (empty($values['_fid']) && empty($values['_old']))) { + if (empty($_FILES['files']['name'][$form_key]) && $component['mandatory']) { + form_error($element, t('%field field is required.', array('%field' => $component['name']))); + } + } +} + +/** + * A Form API element validate function. + * + * Ensure that the uploaded file matches the specified file types. + */ +function _webform_validate_file($element, &$form_state) { + $component = $element['#webform_component']; + $form_key = implode('_', $element['#parents']); + + if (empty($_FILES['files']['name'][$form_key])) { + return; + } + + // Build a human readable list of extensions: + $extensions = $component['extra']['filtering']['types']; + $extension_list = ''; + if (count($extensions) > 1) { + for ($n = 0; $n < count($extensions) - 1; $n++) { + $extension_list .= $extensions[$n] . ', '; + } + $extension_list .= 'or ' . $extensions[count($extensions) - 1]; + } + elseif (!empty($extensions)) { + $extension_list = $extensions[0]; + } + + if (in_array('jpg', $extensions)) { + $extensions[] = 'jpeg'; + } + + $dot = strrpos($_FILES['files']['name'][$form_key], '.'); + $extension = drupal_strtolower(substr($_FILES['files']['name'][$form_key], $dot+1)); + $file_error = FALSE; + if (!empty($extensions) && !in_array($extension, $extensions)) { + form_error($element, t("Files with the '%ext' extension are not allowed, please upload a file with a %exts extension.", array('%ext' => $extension, '%exts' => $extension_list))); + $file_error = TRUE; + } + + // Now let's check the file size (limit is set in KB). + if ($_FILES['files']['size'][$form_key] > $component['extra']['filtering']['size'] * 1024) { + form_error($element, t("The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller.", array('%filename' => $_FILES['files']['name'][$form_key], '%filesize' => (int) ($_FILES['files']['size'][$form_key]/1024), '%maxsize' => $component['extra']['filtering']['size']))); + $file_error = TRUE; + } + + // Save the file to a temporary location. + if (!$file_error) { + $upload_dir = file_build_uri('webform/' . $component['extra']['savelocation']); + if (file_prepare_directory($upload_dir, FILE_CREATE_DIRECTORY)) { + $file = file_save_upload($form_key, array('file_validate_extensions' => array(implode(' ', $component['extra']['filtering']['types']))), $upload_dir); + if ($file) { + // Set the hidden field value. + $parents = $element['#array_parents']; + array_pop($parents); + $parents[] = '_fid'; + form_set_value(array('#parents' => $parents), $file->fid, $form_state); + } + else { + drupal_set_message(t('The uploaded file %filename was unable to be saved. The destination directory may not be writable.', array('%filename' => $file->filename)), 'error'); + } + } + else { + drupal_set_message(t('The uploaded file was unable to be saved. The destination directory does not exist.'), 'error'); + } + } +} + +/** + * Implementation of _webform_submit_component(). + */ +function _webform_submit_file($component, $value) { + + if ($value['_fid'] && ($file = webform_get_file($value['_fid']))) { + // Save any new files permanently. + $file->status = FILE_STATUS_PERMANENT; + file_save($file); + + // Delete any previous files. + if ($value['_old'] && ($existing = webform_get_file($value['_old']))) { + file_delete($existing->filepath); + db_query("DELETE FROM {files} WHERE fid = %d", $existing->fid); + } + + $value = $file->fid; + } + else { + $value = $value['_old'] ? $value['_old'] : NULL; + } + + return $value; +} + +/** + * Implementation of _webform_display_component(). + */ +function _webform_display_file($component, $value, $format = 'html') { + $fid = isset($value[0]) ? $value[0] : NULL; + return array( + '#title' => $component['name'], + '#value' => $fid ? webform_get_file($fid) : NULL, + '#weight' => $component['weight'], + '#theme' => 'webform_display_file', + '#theme_wrappers' => $format == 'text' ? array('webform_element_text') : array('webform_element'), + '#webform_component' => $component, + '#format' => $format, + ); +} + +/** + * Format the output of text data for this component + */ +function theme_webform_display_file($variables) { + $element = $variables['element']; + + $file = $element['#value']; + $url = !empty($file) ? webform_file_url($file->uri) : t('no upload'); + return !empty($file) ? ($element['#format'] == 'text' ? $url : l($file->filename, $url)) : ' '; +} + +/** + * Implementation of _webform_delete_component(). + */ +function _webform_delete_file($component, $value) { + // Delete an individual submission file. + if (isset($value[0]) && ($file = webform_get_file($value[0]))) { + file_delete($file); + } +} + +/** + * Implementation of _webform_analysis_component(). + */ +function _webform_analysis_file($component, $sids = array()) { + $query = db_select('webform_submitted_data', 'wsd', array('fetch' => PDO::FETCH_ASSOC)) + ->fields('wsd', array('no', 'data')) + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']); + + if (count($sids)) { + $query->condition('sid', $sids, 'IN'); + } + + $nonblanks = 0; + $sizetotal = 0; + $submissions = 0; + + $result = $query->execute(); + foreach ($result as $data) { + $file = webform_get_file($data['data']); + if (isset($file->filesize)) { + $nonblanks++; + $sizetotal += $file->filesize; + } + $submissions++; + } + + $rows[0] = array(t('Left Blank'), ($submissions - $nonblanks)); + $rows[1] = array(t('User uploaded file'), $nonblanks); + $rows[2] = array(t('Average uploaded file size'), ($sizetotal != 0 ? (int) (($sizetotal/$nonblanks)/1024) . ' KB' : '0')); + return $rows; +} + +/** + * Implementation of _webform_table_component(). + */ +function _webform_table_file($component, $value) { + $output = ''; + $file = webform_get_file($value[0]); + if (!empty($file->fid)) { + $output = '<a href="' . webform_file_url($file->uri) . '">' . webform_file_name($file->uri) . '</a>'; + $output .= ' (' . (int) ($file->filesize/1024) . ' KB)'; + } + return $output; +} + +/** + * Implementation of _webform_csv_headers_component(). + */ +function _webform_csv_headers_file($component, $export_options) { + $header = array(); + // Two columns in header. + $header[0] = array('', ''); + $header[1] = array($component['name'], ''); + $header[2] = array(t('Name'), t('Filesize (KB)')); + return $header; +} + +/** + * Implementation of _webform_csv_data_component(). + */ +function _webform_csv_data_file($component, $export_options, $value) { + $file = webform_get_file($value[0]); + return empty($file->filename) ? array('', '') : array(webform_file_url($file->uri), (int) ($file->filesize/1024)); +} + +/** + * Helper function to create proper file names for uploaded file. + */ +function webform_file_name($filepath) { + if (!empty($filepath)) { + $info = pathinfo($filepath); + $file_name = $info['basename']; + } + return isset($file_name) ? $file_name : ''; +} + +/** + * Helper function to create proper URLs for uploaded file. + */ +function webform_file_url($uri) { + if (!empty($uri)) { + $file_url = file_create_url($uri); + } + return isset($file_url) ? $file_url : ''; +} + +/** + * Helper function to load a file from the database. + * + * @todo We can remove this entirely now the Drupal 7 has native file loading. + */ +function webform_get_file($fid) { + return file_load($fid); +} diff --git a/sites/all/modules/webform/components/grid.inc b/sites/all/modules/webform/components/grid.inc new file mode 100644 index 0000000000000000000000000000000000000000..45ace87fea18191131046965af85561f8af9f903 --- /dev/null +++ b/sites/all/modules/webform/components/grid.inc @@ -0,0 +1,406 @@ +<?php +// $Id: grid.inc,v 1.34 2011/01/07 20:24:08 quicksketch Exp $ + +/** + * @file + * Webform module grid component. + */ + +// Grid depends on functions provided by select. +webform_component_include('select'); + +/** + * Implementation of _webform_defaults_component(). + */ +function _webform_defaults_grid() { + return array( + 'name' => '', + 'form_key' => NULL, + 'mandatory' => 0, + 'pid' => 0, + 'weight' => 0, + 'extra' => array( + 'options' => '', + 'questions' => '', + 'optrand' => 0, + 'qrand' => 0, + 'title_display' => 0, + 'custom_option_keys' => 0, + 'custom_question_keys' => 0, + 'description' => '', + ), + ); +} + + +/** + * Implementation of _webform_theme_component(). + */ +function _webform_theme_grid() { + return array( + 'webform_grid' => array( + 'render element' => 'element', + ), + 'webform_display_grid' => array( + 'render element' => 'element', + ), + ); +} + +/** + * Implementation of _webform_edit_component(). + */ +function _webform_edit_grid($component) { + $form = array(); + + if (module_exists('options_element')) { + $form['options'] = array( + '#type' => 'fieldset', + '#title' => t('Options'), + '#collapsible' => TRUE, + '#description' => t('Options to select across the top. Usually these are ratings such as "poor" through "excellent" or "strongly disagree" through "strongly agree".'), + '#attributes' => array('class' => array('webform-options-element')), + '#element_validate' => array('_webform_edit_validate_options'), + ); + $form['options']['options'] = array( + '#type' => 'options', + '#options' => _webform_select_options_from_text($component['extra']['options'], TRUE), + '#optgroups' => FALSE, + '#default_value' => FALSE, + '#optgroups' => FALSE, + '#key_type' => 'mixed', + '#key_type_toggle' => t('Customize option keys (Advanced)'), + '#key_type_toggled' => $component['extra']['custom_option_keys'], + ); + + $form['questions'] = array( + '#type' => 'fieldset', + '#title' => t('Questions'), + '#collapsible' => TRUE, + '#description' => t('Questions list down the side of the grid.'), + '#attributes' => array('class' => array('webform-options-element')), + '#element_validate' => array('_webform_edit_validate_options'), + ); + $form['questions']['options'] = array( + '#type' => 'options', + '#options' => _webform_select_options_from_text($component['extra']['questions'], TRUE), + '#optgroups' => FALSE, + '#default_value' => FALSE, + '#optgroups' => FALSE, + '#key_type' => 'mixed', + '#key_type_toggle' => t('Customize question keys (Advanced)'), + '#key_type_toggled' => $component['extra']['custom_question_keys'], + ); + } + else { + $form['extra']['options'] = array( + '#type' => 'textarea', + '#title' => t('Options'), + '#default_value' => $component['extra']['options'], + '#description' => t('Options to select across the top. One option per line. <strong>Key-value pairs MUST be specified as "safe_key|Some readable option"</strong>. Only alphanumeric characters and underscores are allowed as a key.') . theme('webform_token_help'), + '#cols' => 60, + '#rows' => 5, + '#weight' => -3, + '#required' => TRUE, + '#wysiwyg' => FALSE, + '#element_validate' => array('_webform_edit_validate_select'), + ); + $form['extra']['questions'] = array( + '#type' => 'textarea', + '#title' => t('Questions'), + '#default_value' => $component['extra']['questions'], + '#description' => t('Questions list down the side of the grid. One question per line. <strong>Key-value pairs MUST be specified as "safe_key|Some readable option"</strong>. Only alphanumeric characters and underscores are allowed as a key.') . theme('webform_token_help'), + '#cols' => 60, + '#rows' => 5, + '#weight' => -2, + '#required' => TRUE, + '#wysiwyg' => FALSE, + '#element_validate' => array('_webform_edit_validate_select'), + ); + } + + $form['display']['optrand'] = array( + '#type' => 'checkbox', + '#title' => t('Randomize Options'), + '#default_value' => $component['extra']['optrand'], + '#description' => t('Randomizes the order of options on the top when they are displayed in the form.'), + '#parents' => array('extra', 'optrand') + ); + $form['display']['qrand'] = array( + '#type' => 'checkbox', + '#title' => t('Randomize Questions'), + '#default_value' => $component['extra']['qrand'], + '#description' => t('Randomize the order of the questions on the side when they are displayed in the form.'), + '#parents' => array('extra', 'qrand') + ); + return $form; +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_render_grid($component, $value = NULL, $filter = TRUE) { + $element = array( + '#title' => $filter ? _webform_filter_xss($component['name']) : $component['name'], + '#title_display' => $component['extra']['title_display'] ? $component['extra']['title_display'] : 'before', + '#required' => $component['mandatory'], + '#weight' => $component['weight'], + '#description' => $filter ? _webform_filter_descriptions($component['extra']['description']) : $component['extra']['description'], + '#theme' => 'webform_grid', + '#theme_wrappers' => array('webform_element'), + '#webform_component' => $component, + ); + + $questions = _webform_select_options_from_text($component['extra']['questions'], TRUE); + $options = _webform_select_options_from_text($component['extra']['options'], TRUE); + + if ($component['extra']['optrand']) { + _webform_shuffle_options($options); + } + + if ($component['extra']['qrand']) { + _webform_shuffle_options($questions); + } + + foreach ($questions as $key => $question) { + if ($question != '') { + $element[$key] = array( + '#title' => $question, + '#required' => $component['mandatory'], + '#options' => $options, + '#type' => 'radios', + '#process' => array('form_process_radios', 'webform_expand_select_ids'), + + // Webform handles validation manually. + '#validated' => TRUE, + '#webform_validated' => FALSE, + ); + } + } + + if (isset($value)) { + foreach (element_children($element) as $key) { + $element[$key]['#default_value'] = isset($value[$key]) ? $value[$key] : NULL; + } + } + + return $element; +} + +/** + * Implementation of _webform_display_component(). + */ +function _webform_display_grid($component, $value, $format = 'html') { + $questions = _webform_select_options_from_text($component['extra']['questions'], TRUE); + $options = _webform_select_options_from_text($component['extra']['options'], TRUE); + + $element = array( + '#title' => $component['name'], + '#weight' => $component['weight'], + '#format' => $format, + '#questions' => $questions, + '#options' => $options, + '#theme' => 'webform_display_grid', + '#theme_wrappers' => $format == 'html' ? array('webform_element') : array('webform_element_text'), + '#sorted' => TRUE, + '#webform_component' => $component, + ); + + foreach ($questions as $key => $question) { + if ($question !== '') { + $element[$question] = array( + '#title' => $question, + '#value' => isset($value[$key]) ? $value[$key] : NULL, + ); + } + } + + return $element; +} + +/** + * Format the text output for this component. + */ +function theme_webform_display_grid($variables) { + $element = $variables['element']; + + $component = $element['#webform_component']; + $format = $element['#format']; + + if ($format == 'html') { + $rows = array(); + $header = array(array('data' => '', 'class' => array('webform-grid-question'))); + foreach ($element['#options'] as $option) { + $header[] = array('data' => _webform_filter_xss($option), 'class' => array('checkbox', 'webform-grid-option')); + } + foreach (element_children($element) as $key) { + $row = array(); + $row[] = array('data' => _webform_filter_xss($element[$key]['#title']), 'class' => array('webform-grid-question')); + foreach ($element['#options'] as $option_value => $option_label) { + if (strcmp($option_value, $element[$key]['#value']) == 0) { + $row[] = array('data' => '<strong>X</strong>', 'class' => array('checkbox', 'webform-grid-option')); + } + else { + $row[] = array('data' => ' ', 'class' => array('checkbox', 'webform-grid-option')); + } + } + $rows[] = $row; + } + + $option_count = count($header) - 1; + $output = theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('class' => array('webform-grid', 'webform-grid-' . $option_count)))); + } + else { + $items = array(); + foreach (element_children($element) as $key) { + $items[] = ' - ' . $element[$key]['#title'] . ': ' . $element[$key]['#value']; + } + $output = implode("\n", $items); + } + + return $output; +} + +/** + * Implementation of _webform_analysis_component(). + */ +function _webform_analysis_grid($component, $sids = array()) { + // Generate the list of options and questions. + $options = _webform_select_options_from_text($component['extra']['options'], TRUE); + $questions = _webform_select_options_from_text($component['extra']['questions'], TRUE); + + // Generate a lookup table of results. + $query = db_select('webform_submitted_data', 'wsd') + ->fields('wsd', array('no', 'data')) + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']) + ->condition('data', '', '<>') + ->groupBy('no') + ->groupBy('data'); + $query->addExpression('COUNT(sid)', 'datacount'); + + if (count($sids)) { + $query->condition('sid', $sids, 'IN'); + } + + $result = $query->execute(); + $counts = array(); + foreach ($result as $data) { + $counts[$data->no][$data->data] = $data->datacount; + } + + // Create an entire table to be put into the returned row. + $rows = array(); + $header = array(''); + + // Add options as a header row. + foreach ($options as $option) { + $header[] = _webform_filter_xss($option); + } + + // Add questions as each row. + foreach ($questions as $qkey => $question) { + $row = array(_webform_filter_xss($question)); + foreach ($options as $okey => $option) { + $row[] = !empty($counts[$qkey][$okey]) ? $counts[$qkey][$okey] : 0; + } + $rows[] = $row; + } + $output = theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('class' => array('webform-grid')))); + + + return array(array(array('data' => $output, 'colspan' => 2))); +} + +/** + * Implementation of _webform_table_component(). + */ +function _webform_table_grid($component, $value) { + $questions = _webform_select_options_from_text($component['extra']['questions'], TRUE); + $output = ''; + // Set the value as a single string. + if (is_array($value)) { + foreach ($value as $item => $value) { + if ($value !== '') { + $output .= _webform_filter_xss($questions[$item]) . ': ' . _webform_filter_xss($value) . '<br />'; + } + } + } + else { + $output = !isset($value[0]) ? '' : _webform_filter_xss($value[0]); + } + return $output; +} + +/** + * Implementation of _webform_csv_headers_component(). + */ +function _webform_csv_headers_grid($component, $export_options) { + $header = array(); + $header[0] = array(''); + $header[1] = array($component['name']); + $items = _webform_select_options_from_text($component['extra']['questions'], TRUE); + $count = 0; + foreach ($items as $key => $item) { + // Empty column per sub-field in main header. + if ($count != 0) { + $header[0][] = ''; + $header[1][] = ''; + } + // The value for this option. + $header[2][] = $item; + $count++; + } + + return $header; +} + +/** + * Implementation of _webform_csv_data_component(). + */ +function _webform_csv_data_grid($component, $export_options, $value) { + $questions = _webform_select_options_from_text($component['extra']['questions'], TRUE); + $return = array(); + foreach ($questions as $key => $question) { + if (isset($value[$key]) && isset($options[$value[$key]])) { + $return[] = $export_options['select_keys'] ? $value[$key] : $options[$value[$key]]; + } + else { + $return[] = ''; + } + } + return $return; +} + +function theme_webform_grid($variables) { + $element = $variables['element']; + + $rows = array(); + $header = array(array('data' => '', 'class' => array('webform-grid-question'))); + $first = TRUE; + foreach (element_children($element) as $key) { + $question_element = $element[$key]; + + // Set the header for the table. + if ($first) { + foreach ($question_element['#options'] as $option) { + $header[] = array('data' => _webform_filter_xss($option), 'class' => array('checkbox', 'webform-grid-option')); + } + $first = FALSE; + } + + // Create a row with the question title. + $row = array(array('data' => _webform_filter_xss($question_element['#title']), 'class' => array('webform-grid-question'))); + + // Render each radio button in the row. + $radios = form_process_radios($question_element); + foreach (element_children($radios) as $key) { + unset($radios[$key]['#title']); + $row[] = array('data' => drupal_render($radios[$key]), 'class' => array('checkbox', 'webform-grid-option')); + } + $rows[] = $row; + } + + $option_count = count($header) - 1; + return theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('class' => array('webform-grid', 'webform-grid-' . $option_count)))); +} diff --git a/sites/all/modules/webform/components/hidden.inc b/sites/all/modules/webform/components/hidden.inc new file mode 100644 index 0000000000000000000000000000000000000000..ddb436ba0a1b9a80f30a59eeab90b7fa6996741e --- /dev/null +++ b/sites/all/modules/webform/components/hidden.inc @@ -0,0 +1,162 @@ +<?php +// $Id: hidden.inc,v 1.27 2010/10/18 07:21:10 quicksketch Exp $ + +/** + * @file + * Webform module hidden component. + */ + +/** + * Implementation of _webform_defaults_component(). + */ +function _webform_defaults_hidden() { + return array( + 'name' => '', + 'form_key' => NULL, + 'pid' => 0, + 'weight' => 0, + 'value' => '', + 'extra' => array( + ), + ); +} + +/** + * Implementation of _webform_theme_component(). + */ +function _webform_theme_hidden() { + return array( + 'webform_display_hidden' => array( + 'render element' => 'element', + ), + ); +} + +/** + * Implementation of _webform_edit_component(). + */ +function _webform_edit_hidden($component) { + $form = array(); + $form['value'] = array( + '#type' => 'textarea', + '#title' => t('Default value'), + '#default_value' => $component['value'], + '#description' => t('The default value of the field.') . theme('webform_token_help'), + '#cols' => 60, + '#rows' => 5, + '#weight' => 0, + ); + $form['extra']['description'] = array(); // Hide the description box. + $form['display'] = array('#type' => 'markup'); // Hide the display options. + $form['display']['title_display'] = array(); + return $form; +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_render_hidden($component, $value = NULL, $filter = TRUE) { + $element = array( + '#type' => 'hidden', + '#title' => $filter ? _webform_filter_xss($component['name']) : $component['name'], + '#default_value' => $filter ? _webform_filter_values($component['value']) : $component['value'], + '#weight' => $component['weight'], + ); + + if (isset($value[0])) { + $element['#default_value'] = $value[0]; + } + + return $element; +} + +/** + * Implementation of _webform_display_component(). + */ +function _webform_display_hidden($component, $value, $format = 'html') { + $element = array( + '#title' => t('!name (hidden)', array('!name' => $component['name'])), + '#markup' => isset($value[0]) ? $value[0] : NULL, + '#weight' => $component['weight'], + '#theme' => 'webform_display_hidden', + '#format' => $format, + '#theme' => 'webform_display_hidden', + '#theme_wrappers' => $format == 'text' ? array('webform_element_text') : array('webform_element'), + '#webform_component' => $component, + ); + + // TODO: This check is unusual. It shows hidden fields in e-mails but not + // when viewing in the browser unless you're an administrator. This should be + // a more logical check. See these related issues: + // http://drupal.org/node/313639 + // http://drupal.org/node/781786 + if ($format == 'html') { + $element['#access'] = user_access('edit all webform submissions') || user_access('access all webform results'); + } + + return $element; +} + +function theme_webform_display_hidden($variables) { + $element = $variables['element']; + + return $element['#format'] == 'html' ? check_plain($element['#markup']) : $element['#markup']; +} + +/** + * Implementation of _webform_analysis_component(). + */ +function _webform_analysis_hidden($component, $sids = array()) { + $query = db_select('webform_submitted_data', 'wsd', array('fetch' => PDO::FETCH_ASSOC)) + ->fields('wsd', array('no', 'data')) + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']); + + if (count($sids)) { + $query->condition('sid', $sids, 'IN'); + } + + $nonblanks = 0; + $submissions = 0; + $wordcount = 0; + + $result = $query->execute(); + foreach ($result as $data) { + if ( strlen(trim($data['data'])) > 0 ) { + $nonblanks++; + $wordcount += str_word_count(trim($data['data'])); + } + $submissions++; + } + + $rows[0] = array( t('Empty'), ($submissions - $nonblanks)); + $rows[1] = array( t('Non-empty'), $nonblanks); + $rows[2] = array( t('Average submission length in words (ex blanks)'), + ($nonblanks !=0 ? number_format($wordcount/$nonblanks, 2) : '0')); + return $rows; +} + +/** + * Implementation of _webform_csv_data_component(). + */ +function _webform_table_hidden($component, $value) { + return check_plain(empty($value[0]) ? '' : $value[0]); +} + +/** + * Implementation of _webform_csv_data_component(). + */ +function _webform_csv_headers_hidden($component, $export_options) { + $header = array(); + $header[0] = ''; + $header[1] = ''; + $header[2] = $component['name']; + return $header; +} + +/** + * Implementation of _webform_csv_data_component(). + */ +function _webform_csv_data_hidden($component, $export_options, $value) { + return empty($value[0]) ? '' : $value[0]; +} diff --git a/sites/all/modules/webform/components/markup.inc b/sites/all/modules/webform/components/markup.inc new file mode 100644 index 0000000000000000000000000000000000000000..a49e7758e133206b9b658a5c095476cbd7459c59 --- /dev/null +++ b/sites/all/modules/webform/components/markup.inc @@ -0,0 +1,82 @@ +<?php +// $Id: markup.inc,v 1.21 2010/10/18 07:21:10 quicksketch Exp $ + +/** + * @file + * Webform module markup component. + */ + +/** + * Implementation of _webform_defaults_component(). + */ +function _webform_defaults_markup() { + return array( + 'name' => '', + 'form_key' => NULL, + 'pid' => 0, + 'weight' => 0, + 'value' => '', + 'extra' => array( + 'format' => filter_default_format(), + ), + ); +} + +/** + * Implementation of _webform_edit_component(). + */ +function _webform_edit_markup($component) { + $form = array(); + $form['value'] = array( + '#type' => 'text_format', + '#title' => t('Value'), + '#default_value' => $component['value'], + '#description' => t('Markup allows you to enter custom HTML or PHP logic into your form.') . theme('webform_token_help'), + '#weight' => -1, + '#format' => $component['extra']['format'], + '#element_validate' => array('_webform_edit_markup_validate'), + ); + + $form['extra']['description'] = array(); // No description for markup. + $form['display'] = array('#type' => 'markup'); // Hide the display options. + $form['display']['title_display'] = array(); + + return $form; +} + +/** + * Element validate handler; Set the text format value. + */ +function _webform_edit_markup_validate($form, &$form_state) { + if (is_array($form_state['values']['value'])) { + $form_state['values']['extra']['format'] = $form_state['values']['value']['format']; + $form_state['values']['value'] = $form_state['values']['value']['value']; + } +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_render_markup($component, $value = NULL, $filter = TRUE) { + $element = array( + '#type' => 'markup', + '#title' => $filter ? NULL : $component['name'], + '#weight' => $component['weight'], + '#markup' => $filter ? _webform_filter_values(check_markup($component['value'], $component['extra']['format'], FALSE), NULL, NULL, NULL, FALSE) : $component['value'], + '#input_format' => $component['extra']['format'], + '#theme_wrappers' => array('webform_element'), + '#webform_component' => $component, + ); + + // TODO: Remove when #markup becomes available in D7. + $element['#value'] = $element['#markup']; + + return $element; +} + +/** + * Implementation of _webform_display_component(). + */ +function _webform_display_markup($component, $value, $format = 'html') { + return array(); +} diff --git a/sites/all/modules/webform/components/pagebreak.inc b/sites/all/modules/webform/components/pagebreak.inc new file mode 100644 index 0000000000000000000000000000000000000000..568a0690573901e936c9f0522cf99cb5872a754f --- /dev/null +++ b/sites/all/modules/webform/components/pagebreak.inc @@ -0,0 +1,84 @@ +<?php +// $Id: pagebreak.inc,v 1.11 2010/09/28 22:43:49 quicksketch Exp $ + +/** + * @file + * Webform module page break component. + */ + +/** + * Implementation of _webform_defaults_component(). + */ +function _webform_defaults_pagebreak() { + return array( + 'name' => '', + 'form_key' => NULL, + 'pid' => 0, + 'weight' => 0, + 'extra' => array(), + ); +} + +/** + * Implementation of _webform_theme_component(). + */ +function _webform_theme_pagebreak() { + return array( + 'webform_display_pagebreak' => array( + 'render element' => 'element', + ), + ); +} + +/** + * Implementation of _webform_edit_component(). + */ +function _webform_edit_pagebreak($component) { + $form = array(); + // Force the parent to always be root. + $form['position']['pid'] = array( + '#type' => 'hidden', + '#value' => '0', + ); + + $form['extra']['description'] = array(); // No description. + $form['display'] = array('#type' => 'markup'); // Hide the display options. + $form['display']['title_display'] = array(); + + return $form; +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_render_pagebreak($component, $value = NULL, $filter = TRUE) { + $element = array( + '#type' => 'hidden', + '#value' => $component['name'], + '#weight' => $component['weight'], + ); + return $element; +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_display_pagebreak($component, $value = NULL, $format = 'html') { + $element = array( + '#theme' => 'webform_display_pagebreak', + '#title' => $component['name'], + '#weight' => $component['weight'], + '#format' => $format, + '#webform_component' => $component, + ); + return $element; +} + +/** + * Format the text output data for this component. + */ +function theme_webform_display_pagebreak($variables) { + $element = $variables['element']; + + return $element['#format'] == 'html' ? '<h2 class="webform-page">' . check_plain($element['#title']) . '</h2>' : "--" . $element['#title'] . "--\n"; +} diff --git a/sites/all/modules/webform/components/select.inc b/sites/all/modules/webform/components/select.inc new file mode 100644 index 0000000000000000000000000000000000000000..5fe428c3c550ddfdc5ac2a06ae808982f3d6549d --- /dev/null +++ b/sites/all/modules/webform/components/select.inc @@ -0,0 +1,902 @@ +<?php +// $Id: select.inc,v 1.65 2011/01/05 04:39:01 quicksketch Exp $ + +/** + * @file + * Webform module multiple select component. + */ + +/** + * Implementation of _webform_defaults_component(). + */ +function _webform_defaults_select() { + return array( + 'name' => '', + 'form_key' => NULL, + 'mandatory' => 0, + 'pid' => 0, + 'weight' => 0, + 'value' => '', + 'extra' => array( + 'items' => '', + 'multiple' => NULL, + 'aslist' => NULL, + 'optrand' => 0, + 'other_option' => NULL, + 'other_text' => t('Other...'), + 'title_display' => 0, + 'description' => '', + 'custom_keys' => FALSE, + 'options_source' => '', + ), + ); +} + +/** + * Implementation of _webform_theme_component(). + */ +function _webform_theme_select() { + return array( + 'webform_display_select' => array( + 'render element' => 'element', + ), + ); +} + +/** + * Implementation of _webform_edit_component(). + */ +function _webform_edit_select($component) { + $form = array( + '#attached' => array( + 'js' => array( + drupal_get_path('module', 'webform') . '/js/select-admin.js' => array('preprocess' => FALSE), + array('data' => array('webform' => array('selectOptionsUrl' => url('webform/ajax/options/' . $component['nid']))), 'type' => 'setting'), + ), + ), + ); + + $other = array(); + if ($info = _webform_select_options_info()) { + $options = array('' => t('None')); + foreach ($info as $name => $source) { + $options[$name] = $source['title']; + } + + $other['options_source'] = array( + '#title' => t('Load a pre-built option list'), + '#type' => 'select', + '#options' => $options, + '#default_value' => $component['extra']['options_source'], + '#weight' => 1, + '#description' => t('Use a pre-built list of options rather than entering options manually. Options will not be editable if using pre-built list.'), + '#parents' => array('extra', 'options_source'), + '#weight' => 5, + ); + } + + if (module_exists('select_or_other')) { + $other['other_option'] = array( + '#type' => 'checkbox', + '#title' => t('Allow "Other..." option'), + '#default_value' => $component['extra']['other_option'], + '#description' => t('Check this option if you want to allow users to enter an option not on the list.'), + '#parents' => array('extra', 'other_option'), + '#weight' => 2, + ); + $other['other_text'] = array( + '#type' => 'textfield', + '#title' => t('Text for "Other..." option'), + '#default_value' => $component['extra']['other_text'], + '#description' => t('If allowing other options, enter text to be used for other-enabling option.'), + '#parents' => array('extra', 'other_text'), + '#weight' => 3, + ); + } + + if (module_exists('options_element')) { + $options = _webform_select_options($component); + + $form['items'] = array( + '#type' => 'fieldset', + '#title' => t('Options'), + '#collapsible' => TRUE, + '#attributes' => array('class' => array('webform-options-element')), + '#element_validate' => array('_webform_edit_validate_options'), + '#weight' => 2, + ); + + $form['items']['options'] = array( + '#type' => 'options', + '#limit' => 500, + '#optgroups' => $component['extra']['aslist'], + '#multiple' => $component['extra']['multiple'], + '#multiple_toggle' => t('Multiple'), + '#default_value' => $component['value'], + '#options' => $options, + '#key_type' => 'mixed', + '#key_type_toggle' => t('Customize keys (Advanced)'), + '#key_type_toggled' => $component['extra']['custom_keys'], + '#disabled' => !empty($component['extra']['options_source']), + '#weight' => 1, + ); + + $form['items']['options']['option_settings'] = $other; + } + else { + $form['extra']['items'] = array( + '#type' => 'textarea', + '#title' => t('Options'), + '#default_value' => $component['extra']['items'], + '#description' => t('<strong>Key-value pairs MUST be specified as "safe_key|Some readable option"</strong>. Only alphanumeric characters and underscores are allowed as a key. One option per line. Option groups may be specified with <Group Name>. <> can be used to insert items at the root of the menu after specifying a group.') . theme('webform_token_help'), + '#cols' => 60, + '#rows' => 5, + '#weight' => 0, + '#required' => TRUE, + '#wysiwyg' => FALSE, + '#element_validate' => array('_webform_edit_validate_select'), + ); + + if (!empty($component['extra']['options_source'])) { + $form['extra']['items']['#attributes'] = array('readonly' => 'readonly'); + } + + $form['extra'] = array_merge($form['extra'], $other); + $form['value'] = array( + '#type' => 'textfield', + '#title' => t('Default value'), + '#default_value' => $component['value'], + '#description' => t('The default value of the field. For multiple selects use commas to separate multiple defaults.') . theme('webform_token_help'), + '#size' => 60, + '#maxlength' => 256, + '#weight' => 0, + ); + $form['extra']['multiple'] = array( + '#type' => 'checkbox', + '#title' => t('Multiple'), + '#default_value' => $component['extra']['multiple'], + '#description' => t('Check this option if the user should be allowed to choose multiple values.'), + '#weight' => 0, + ); + } + + $form['display']['aslist'] = array( + '#type' => 'checkbox', + '#title' => t('Listbox'), + '#default_value' => $component['extra']['aslist'], + '#description' => t('Check this option if you want the select component to be of listbox type instead of radio buttons or checkboxes.'), + '#parents' => array('extra', 'aslist'), + ); + $form['display']['optrand'] = array( + '#type' => 'checkbox', + '#title' => t('Randomize options'), + '#default_value' => $component['extra']['optrand'], + '#description' => t('Randomizes the order of the options when they are displayed in the form.'), + '#parents' => array('extra', 'optrand'), + ); + + return $form; +} + +/** + * Element validation callback. Ensure keys are not duplicated. + */ +function _webform_edit_validate_select($element, &$form_state) { + // Check for duplicate key values to prevent unexpected data loss. Require + // all options to include a safe_key. + if (!empty($element['#value'])) { + $lines = explode("\n", trim($element['#value'])); + $existing_keys = array(); + $duplicate_keys = array(); + $missing_keys = array(); + $long_keys = array(); + $group = ''; + foreach ($lines as $line) { + $matches = array(); + $line = trim($line); + if (preg_match('/^\<([^>]*)\>$/', $line, $matches)) { + $group = $matches[1]; + $key = NULL; // No need to store group names. + } + elseif (preg_match('/^([^|]*)\|(.*)$/', $line, $matches)) { + $key = $matches[1]; + if (strlen($key) > 128) { + $long_keys[] = $key; + } + } + else { + $missing_keys[] = $line; + } + + if (isset($key)) { + if (isset($existing_keys[$group][$key])) { + $duplicate_keys[$key] = $key; + } + else { + $existing_keys[$group][$key] = $key; + } + } + } + + if (!empty($missing_keys)) { + form_error($element, t('Every option must have a key specified. Specify each option as "safe_key|Some readable option".')); + } + + if (!empty($long_keys)) { + form_error($element, t('Option keys must be less than 128 characters. The following keys exceed this limit:') . theme('item_list', $long_keys)); + } + + if (!empty($duplicate_keys)) { + form_error($element, t('Options within the select list must be unique. The following keys have been used multiple times:') . theme('item_list', array('items' => $duplicate_keys))); + } + + } + + return TRUE; +} + +/** + * Set the appropriate webform values when using the options element module. + */ +function _webform_edit_validate_options($element, &$form_state) { + $key = end($element['#parents']); + $element_options = $form_state['values'][$key]['options']; + unset($form_state['values'][$key]); + + $form_state['values']['extra'][$key] = form_options_to_text($element_options['options'], 'custom'); + + // Options saved for select components. + if ($key == 'items') { + $form_state['values']['extra']['multiple'] = $element_options['multiple']; + $form_state['values']['extra']['custom_keys'] = $element_options['custom_keys']; + $form_state['values']['value'] = is_array($element_options['default_value']) ? implode(', ', $element_options['default_value']) : $element_options['default_value']; + } + // Options saved for grid components. + else { + $form_state['values']['extra']['custom_' . rtrim($key, 's') . '_keys'] = $element_options['custom_keys']; + } +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_render_select($component, $value = NULL, $filter = TRUE) { + $element = array( + '#title' => $filter ? _webform_filter_xss($component['name']) : $component['name'], + '#title_display' => $component['extra']['title_display'] ? $component['extra']['title_display'] : 'before', + '#required' => $component['mandatory'], + '#weight' => $component['weight'], + '#description' => $filter ? _webform_filter_descriptions($component['extra']['description']) : $component['extra']['description'], + '#theme_wrappers' => array('webform_element'), + '#pre_render' => array(), // Needed to disable double-wrapping of radios and checkboxes. + '#webform_component' => $component, + ); + + // Convert the user-entered options list into an array. + $default_value = $filter ? _webform_filter_values($component['value'], NULL, NULL, NULL, FALSE) : $component['value']; + $options = _webform_select_options($component, $filter); + + if ($component['extra']['optrand']) { + _webform_shuffle_options($options); + } + + // Set the component options. + $element['#options'] = $options; + + // Set the default value. + if (isset($value)) { + if ($component['extra']['multiple']) { + // Set the value as an array. + $element['#default_value'] = array(); + foreach ((array) $value as $key => $option_value) { + $element['#default_value'][] = $option_value; + } + } + else { + // Set the value as a single string. + $element['#default_value'] = ''; + foreach ((array) $value as $option_value) { + $element['#default_value'] = $option_value; + } + } + } + elseif ($default_value !== '') { + // Convert default value to a list if necessary. + if ($component['extra']['multiple']) { + $varray = explode(',', $default_value); + foreach ($varray as $key => $v) { + $v = trim($v); + if ($v !== '') { + $element['#default_value'][] = $v; + } + } + } + else { + $element['#default_value'] = $default_value; + } + } + elseif ($component['extra']['multiple']) { + $element['#default_value'] = array(); + } + + if ($component['extra']['other_option'] && module_exists('select_or_other')) { + // Set display as a select list: + $element['#type'] = 'select_or_other'; + $element['#other'] = !empty($component['extra']['other_text']) ? check_plain($component['extra']['other_text']) : t('Other...'); + $element['#other_unknown_defaults'] = 'other'; + $element['#other_delimiter'] = ', '; + if ($component['extra']['multiple']) { + $element['#multiple'] = TRUE; + $element['#select_type'] = 'checkboxes'; + } + else { + $element['#multiple'] = FALSE; + $element['#select_type'] = 'radios'; + } + if ($component['extra']['aslist']) { + $element['#select_type'] = 'select'; + } + } + elseif ($component['extra']['aslist']) { + // Set display as a select list: + $element['#type'] = 'select'; + if ($component['extra']['multiple']) { + $element['#size'] = 4; + $element['#multiple'] = TRUE; + } + } + else { + if ($component['extra']['multiple']) { + // Set display as a checkbox set. + $element['#type'] = 'checkboxes'; + $element['#theme_wrappers'] = array_merge(array('checkboxes'), $element['#theme_wrappers']); + // Drupal 6 hack to properly render on multipage forms. + $element['#process'] = array('webform_expand_checkboxes', 'webform_expand_select_ids'); + } + else { + // Set display as a radio set. + $element['#type'] = 'radios'; + $element['#theme_wrappers'] = array_merge(array('radios'), $element['#theme_wrappers']); + $element['#process'] = array('form_process_radios', 'webform_expand_select_ids'); + } + } + + return $element; +} + +/** + * Drupal 6 hack that properly *renders* checkboxes in multistep forms. This is + * different than the value hack needed in Drupal 5, which is no longer needed. + */ +function webform_expand_checkboxes($element) { + // Elements that have a value set are already in the form structure cause + // them not to be written when the expand_checkboxes function is called. + $default_value = array(); + foreach (element_children($element) as $key) { + if (isset($element[$key]['#default_value'])) { + $default_value[$key] = $element[$key]['#default_value']; + unset($element[$key]); + } + } + + $element = form_process_checkboxes($element); + + // Escape the values of checkboxes. + foreach (element_children($element) as $key) { + $element[$key]['#return_value'] = check_plain($element[$key]['#return_value']); + $element[$key]['#name'] = $element['#name'] . '[' . $element[$key]['#return_value'] . ']'; + } + + foreach ($default_value as $key => $val) { + $element[$key]['#default_value'] = $val; + } + return $element; +} + +/** + * FAPI process function to rename IDs attached to checkboxes and radios. + */ +function webform_expand_select_ids($element) { + $id = $element['#id'] = str_replace('_', '-', _webform_safe_name(strip_tags($element['#id']))); + $delta = 0; + foreach (element_children($element) as $key) { + $delta++; + // Convert the #id for each child to a safe name, regardless of key. + $element[$key]['#id'] = $id . '-' . $delta; + + // Prevent scripts or CSS in the labels for each checkbox or radio. + $element[$key]['#title'] = _webform_filter_xss($element[$key]['#title']); + } + return $element; +} + +/** + * Implementation of _webform_display_component(). + */ +function _webform_display_select($component, $value, $format = 'html') { + $value = (array) $value; + ksort($value); + return array( + '#title' => $component['name'], + '#weight' => $component['weight'], + '#theme' => 'webform_display_select', + '#theme_wrappers' => $format == 'html' ? array('webform_element') : array('webform_element_text'), + '#format' => $format, + '#value' => $value, + '#webform_component' => $component, + ); +} + +/** + * Implementation of _webform_submit_component(). + * + * Convert FAPI 0/1 values into something saveable. + */ +function _webform_submit_select($component, $value) { + // Build a list of all valid keys expected to be submitted. + $options = _webform_select_options($component); + $keys = array(); + foreach ($options as $option_key => $option_value) { + if (is_array($option_key)) { + foreach ($option_key as $option_subkey => $option_subvalue) { + $keys[$option_subkey] = $option_subkey; + } + } + else { + $keys[$option_key] = $option_key; + } + } + + $return = NULL; + if (is_array($value)) { + $return = array(); + foreach ($value as $key => $option_value) { + // Handle options that are specified options. + if ($option_value !== '' && isset($keys[$key])) { + // Checkboxes submit an integer value of 0 when unchecked. A checkbox + // with a value of '0' is valid, so we can't use empty() here. + if ($option_value === 0 && !$component['extra']['aslist'] && $component['extra']['multiple']) { + unset($value[$key]); + } + else { + $return[] = $key; + } + } + // Handle options that are added through the "other" field. + elseif ($component['extra']['other_option'] && module_exists('select_or_other')) { + $return[] = $option_value; + } + } + } + elseif (is_string($value)) { + $return = $value; + } + + return $return; +} + +/** + * Format the text output for this component. + */ +function theme_webform_display_select($variables) { + $element = $variables['element']; + $component = $element['#webform_component']; + + // Convert submitted 'safe' values to un-edited, original form. + $options = _webform_select_options($component); + + $items = array(); + if ($component['extra']['multiple']) { + foreach ((array) $element['#value'] as $option_value) { + if ($option_value !== '') { + // Administer provided values. + if (isset($options[$option_value])) { + $items[] = _webform_filter_xss($options[$option_value]); + } + // User-specified in the "other" field. + else { + $items[] = $option_value; + } + } + } + } + else { + if (isset($element['#value'][0]) && $element['#value'][0] !== '') { + // Administer provided values. + if (isset($options[$element['#value'][0]])) { + $items[] = $element['#format'] == 'html' ? _webform_filter_xss($options[$element['#value'][0]]) : $options[$element['#value'][0]]; + } + // User-specified in the "other" field. + else { + $items[] = $element['#format'] == 'html' ? check_plain($element['#value'][0]) : $element['#value'][0]; + } + } + } + + if ($element['#format'] == 'html') { + $output = count($items) > 1 ? theme('item_list', array('items' => $items)) : (isset($items[0]) ? $items[0] : ' '); + } + else { + if (count($items) > 1) { + foreach ($items as $key => $item) { + $items[$key] = ' - ' . $item; + } + $output = implode("\n", $items); + } + else { + $output = isset($items[0]) ? $items[0] : ' '; + } + } + + return $output; +} + +/** + * Implementation of _webform_analysis_component(). + */ +function _webform_analysis_select($component, $sids = array(), $single = FALSE) { + $options = _webform_select_options($component); + $show_other_results = $single; + + $sid_placeholders = count($sids) ? array_fill(0, count($sids), "'%s'") : array(); + $sid_filter = count($sids) ? " AND sid IN (" . implode(",", $sid_placeholders) . ")" : ""; + + $option_operator = $show_other_results ? 'NOT IN' : 'IN'; + $query = db_select('webform_submitted_data', 'wsd', array('fetch' => PDO::FETCH_ASSOC)) + ->fields('wsd', array('data')) + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']) + ->condition('data', '', '<>') + ->condition('data', $options, $option_operator) + ->groupBy('data'); + $query->addExpression('COUNT(data)', 'datacount'); + + if (count($sids)) { + $query->condition('sid', $sids, 'IN'); + } + + $count_query = db_select('webform_submitted_data', 'wsd', array('fetch' => PDO::FETCH_ASSOC)) + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']) + ->condition('data', '', '<>'); + $count_query->addExpression('COUNT(*)', 'datacount'); + if (count($sids)) { + $count_query->condition('sid', $sids, 'IN'); + } + + $result = $query->execute(); + $rows = array(); + $normal_count = 0; + foreach ($result as $data) { + $display_option = $single ? $data['data'] : $options[$data['data']]; + $rows[$data['data']] = array(_webform_filter_xss($display_option), $data['datacount']); + $normal_count += $data['datacount']; + } + + if (!$show_other_results) { + // Order the results according to the normal options array. + $ordered_rows = array(); + foreach (array_intersect_key($options, $rows) as $key => $label) { + $ordered_rows[] = $rows[$key]; + } + + // Add a row for any unknown or user-entered values. + if ($component['extra']['other_option']) { + $full_count = $count_query->execute()->fetchField(); + $other_count = $full_count - $normal_count; + $display_option = !empty($component['extra']['other_text']) ? check_plain($component['extra']['other_text']) : t('Other...'); + $other_text = $other_count ? $other_count . ' (' . l(t('view'), 'node/' . $component['nid'] . '/webform-results/analysis/' . $component['cid']) . ')' : $other_count; + $ordered_rows[] = array($display_option, $other_text); + } + + $rows = $ordered_rows; + } + + return $rows; +} + +/** + * Implementation of _webform_table_component(). + */ +function _webform_table_select($component, $value) { + $output = ''; + // Set the value as a single string. + if (is_array($value)) { + foreach ($value as $option_value) { + if ($option_value !== '') { + $output .= _webform_filter_xss($option_value) . '<br />'; + } + } + } + else { + $output .= empty($value[0]) ? '' : _webform_filter_xss($value[0]); + } + return $output; +} + +/** + * Implementation of _webform_csv_headers_component(). + */ +function _webform_csv_headers_select($component, $export_options) { + $headers = array( + 0 => array(), + 1 => array(), + 2 => array(), + ); + + if ($component['extra']['multiple'] && $export_options['select_format'] == 'separate') { + $headers[0][] = ''; + $headers[1][] = $component['name']; + $items = _webform_select_options($component); + if ($component['extra']['other_option']) { + $other_label = !empty($component['extra']['other_text']) ? check_plain($component['extra']['other_text']) : t('Other...'); + $items[$other_label] = $other_label; + } + $count = 0; + foreach ($items as $key => $item) { + // Empty column per sub-field in main header. + if ($count != 0) { + $headers[0][] = ''; + $headers[1][] = ''; + } + if ($export_options['select_keys']) { + $headers[2][] = $key; + } else { + $headers[2][] = $item; + } + $count++; + } + } + else { + $headers[0][] = ''; + $headers[1][] = ''; + $headers[2][] = $component['name']; + } + return $headers; +} + +/** + * Implementation of _webform_csv_data_component(). + */ +function _webform_csv_data_select($component, $export_options, $value) { + $options = _webform_select_options($component); + $return = array(); + + if ($component['extra']['multiple']) { + foreach ($options as $key => $item) { + $index = array_search($key, (array) $value); + if ($index !== FALSE) { + if ($export_options['select_format'] == 'separate') { + $return[] = 'X'; + } + else { + $return[] = $export_options['select_keys'] ? $key : $item; + } + unset($value[$index]); + } + elseif ($export_options['select_format'] == 'separate') { + $return[] = ''; + } + } + + // Any remaining items in the $value array will be user-added options. + if ($component['extra']['other_option']) { + $return[] = count($value) ? implode(',', $value) : ''; + } + } + else { + $key = $value[0]; + if ($export_options['select_keys']){ + $return = $key; + } + else { + $return = isset($options[$key]) ? $options[$key] : $key; + } + } + + if ($component['extra']['multiple'] && $export_options['select_format'] == 'compact') { + $return = implode(',', (array) $return); + } + + return $return; +} + +/** + * Menu callback; Return a predefined list of select options as JSON. + */ +function webform_select_options_ajax($source_name = '') { + $info = _webform_select_options_info(); + + $component['extra']['options_source'] = $source_name; + if ($source_name && isset($info[$source_name])) { + $options = _webform_select_options_to_text(_webform_select_options($component, FALSE)); + } + else { + $options = ''; + } + + $return = array( + 'elementId' => module_exists('options_element') ? 'edit-items-options-options-field-widget' : 'edit-extra-items', + 'options' => $options, + ); + + drupal_json_output($return); +} + +/** + * Generate a list of options for a select list. + */ +function _webform_select_options($component, $filter = TRUE) { + if ($component['extra']['options_source']) { + $options = _webform_select_options_callback($component['extra']['options_source'], $component); + } + else { + $options = _webform_select_options_from_text($component['extra']['items'], !$component['extra']['aslist'], $filter); + } + + return isset($options) ? $options : array(); +} + +/** + * Load Webform select option info from 3rd party modules. + */ +function _webform_select_options_info() { + static $info; + if (!isset($info)) { + $info = array(); + + foreach (module_implements('webform_select_options_info') as $module) { + $additions = module_invoke($module, 'webform_select_options_info'); + foreach ($additions as $key => $addition) { + $additions[$key]['module'] = $module; + } + $info = array_merge($info, $additions); + } + drupal_alter('webform_select_options_info', $info); + } + return $info; +} + +/** + * Execute a select option callback. + * + * @param $name + * The name of the options group. + * @param $type + * The callback to be executed, with "form" or "options". + * @param $component + * The full Webform component. + * @param $filter + * Whether information returned should be sanitized. Defaults to TRUE. + */ +function _webform_select_options_callback($name, $component, $flat = FALSE, $filter = TRUE) { + $info = _webform_select_options_info(); + + // Include any necessary files. + if (isset($info[$name]['file'])) { + $pathinfo = pathinfo($info[$name]['file']); + $path = ($pathinfo['dirname'] ? $pathinfo['dirname'] . '/' : '') . basename($pathinfo['basename'], '.' . $pathinfo['extension']); + module_load_include($pathinfo['extension'], $info[$name]['module'], $path); + } + + // Execute the callback function. + if (isset($info[$name]['options callback']) && function_exists($info[$name]['options callback'])) { + $function = $info[$name]['options callback']; + + $options_args = array(); + if (isset($info[$name]['options arguments'])) { + $arguments = $info[$name]['options arguments']; + } + + return $function($component, $flat, $filter, $arguments); + } +} + +/** + * Utility function to split user-entered values from new-line seperated + * text into an array of options. + * + * @param $text + * Text to be converted into a select option array. + * @param $flat + * Optional. If specified, return the option array and exclude any optgroups. + * @param $filter + * Optional. Whether or not to filter returned values. + */ +function _webform_select_options_from_text($text, $flat = FALSE, $filter = TRUE) { + static $option_cache = array(); + + // Keep each processed option block in an array indexed by the MD5 hash of + // the option text and the value of the $flat variable. + $md5 = md5($text); + + // Check if this option block has been previously processed. + if (!isset($option_cache[$flat][$md5])) { + $options = array(); + $rows = array_filter(explode("\n", trim($text))); + $group = NULL; + foreach ($rows as $option) { + $option = trim($option); + /** + * If the Key of the option is within < >, treat as an optgroup + * + * <Group 1> + * creates an optgroup with the label "Group 1" + * + * <> + * Unsets the current group, allowing items to be inserted at the root element. + */ + if (preg_match('/^\<([^>]*)\>$/', $option, $matches)) { + if (empty($matches[1])) { + unset($group); + } + elseif (!$flat) { + $group = $filter ? _webform_filter_values($matches[1], NULL, NULL, NULL, FALSE) : $matches[1]; + } + } + elseif (preg_match('/^([^|]+)\|(.*)$/', $option, $matches)) { + $key = $filter ? _webform_filter_values($matches[1], NULL, NULL, NULL, FALSE) : $matches[1]; + $value = $filter ? _webform_filter_values($matches[2], NULL, NULL, NULL, FALSE) : $matches[2]; + isset($group) ? $options[$group][$key] = $value : $options[$key] = $value; + } + else { + $filtered_option = $filter ? _webform_filter_values($option, NULL, NULL, NULL, FALSE) : $option; + isset($group) ? $options[$group][$filtered_option] = $filtered_option : $options[$filtered_option] = $filtered_option; + } + } + + $option_cache[$flat][$md5] = $options; + } + + // Return our options from the option_cache array. + return $option_cache[$flat][$md5]; +} + + +/** + * Convert an array of options into text. + */ +function _webform_select_options_to_text($options) { + $output = ''; + $previous_key = false; + + foreach ($options as $key => $value) { + // Convert groups. + if (is_array($value)) { + $output .= '<' . $key . '>' . "\n"; + foreach ($value as $subkey => $subvalue) { + $output .= $subkey . '|' . $subvalue . "\n"; + } + $previous_key = $key; + } + // Typical key|value pairs. + else { + // Exit out of any groups. + if (isset($options[$previous_key]) && is_array($options[$previous_key])) { + $output .= "<>\n"; + } + // Skip empty rows. + if ($options[$key] !== '') { + $output .= $key . '|' . $value . "\n"; + } + $previous_key = $key; + } + } + + return $output; +} + +/** + * Utility function to shuffle an array while preserving key-value pairs. + */ +function _webform_shuffle_options(&$array) { + // First shuffle the array keys, then use them as the basis for ordering + // the options. + $aux = array(); + $keys = array_keys($array); + shuffle($keys); + foreach ($keys as $key) { + $aux[$key] = $array[$key]; + } + $array = $aux; +} diff --git a/sites/all/modules/webform/components/textarea.inc b/sites/all/modules/webform/components/textarea.inc new file mode 100644 index 0000000000000000000000000000000000000000..1ff4b41aa547d233107f5e1d9a8069aa9aca8f00 --- /dev/null +++ b/sites/all/modules/webform/components/textarea.inc @@ -0,0 +1,209 @@ +<?php +// $Id: textarea.inc,v 1.29 2010/10/18 07:21:10 quicksketch Exp $ + +/** + * @file + * Webform module textarea component. + */ + +/** + * Implementation of _webform_defaults_component(). + */ +function _webform_defaults_textarea() { + return array( + 'name' => '', + 'form_key' => NULL, + 'pid' => 0, + 'weight' => 0, + 'value' => '', + 'mandatory' => 0, + 'extra' => array( + 'cols' => '', + 'rows' => '', + 'title_display' => 0, + 'resizable' => 1, + 'disabled' => 0, + 'description' => '', + 'attributes' => array(), + ), + ); +} + + +/** + * Implementation of _webform_theme_component(). + */ +function _webform_theme_textarea() { + return array( + 'webform_display_textarea' => array( + 'render element' => 'element', + ), + ); +} + +/** + * Implementation of _webform_edit_component(). + */ +function _webform_edit_textarea($component) { + $form = array(); + $form['value'] = array( + '#type' => 'textarea', + '#title' => t('Default value'), + '#default_value' => $component['value'], + '#description' => t('The default value of the field.') . theme('webform_token_help'), + '#cols' => 60, + '#rows' => 5, + '#weight' => 0, + ); + $form['display']['cols'] = array( + '#type' => 'textfield', + '#title' => t('Width'), + '#default_value' => $component['extra']['cols'], + '#description' => t('Width of the textarea.') . ' ' . t('Leaving blank will use the default size.'), + '#size' => 5, + '#maxlength' => 10, + '#parents' => array('extra', 'cols'), + ); + $form['display']['rows'] = array( + '#type' => 'textfield', + '#title' => t('Height'), + '#default_value' => $component['extra']['rows'], + '#description' => t('Height of the textarea.') . ' ' . t('Leaving blank will use the default size.'), + '#size' => 5, + '#maxlength' => 10, + '#parents' => array('extra', 'rows'), + ); + $form['display']['resizable'] = array( + '#type' => 'checkbox', + '#title' => t('Resizable'), + '#description' => t('Make this field resizable by the user.'), + '#weight' => 2, + '#default_value' => $component['extra']['resizable'], + '#parents' => array('extra', 'resizable'), + ); + $form['display']['disabled'] = array( + '#type' => 'checkbox', + '#title' => t('Disabled'), + '#return_value' => 1, + '#description' => t('Make this field non-editable. Useful for setting an unchangeable default value.'), + '#weight' => 11, + '#default_value' => $component['extra']['disabled'], + '#parents' => array('extra', 'disabled'), + ); + return $form; +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_render_textarea($component, $value = NULL, $filter = TRUE) { + $element = array( + '#type' => 'textarea', + '#title' => $filter ? _webform_filter_xss($component['name']) : $component['name'], + '#title_display' => $component['extra']['title_display'] ? $component['extra']['title_display'] : 'before', + '#default_value' => $filter ? _webform_filter_values($component['value']) : $component['value'], + '#required' => $component['mandatory'], + '#weight' => $component['weight'], + '#description' => $filter ? _webform_filter_descriptions($component['extra']['description']) : $component['extra']['description'], + '#rows' => !empty($component['extra']['rows']) ? $component['extra']['rows'] : 5, + '#cols' => !empty($component['extra']['cols']) ? $component['extra']['cols'] : 60, + '#attributes' => $component['extra']['attributes'], + '#resizable' => (bool) $component['extra']['resizable'], // MUST be FALSE to disable. + '#theme_wrappers' => array('webform_element'), + '#webform_component' => $component, + ); + + if ($component['extra']['disabled']) { + $element['#attributes']['readonly'] = 'readonly'; + } + + if (isset($value)) { + $element['#default_value'] = $value[0]; + } + + return $element; +} + +/** + * Implementation of _webform_display_component(). + */ +function _webform_display_textarea($component, $value, $format = 'html') { + return array( + '#title' => $component['name'], + '#weight' => $component['weight'], + '#theme' => 'webform_display_textarea', + '#theme_wrappers' => $format == 'html' ? array('webform_element') : array('webform_element_text'), + '#format' => $format, + '#value' => isset($value[0]) ? $value[0] : '', + '#webform_component' => $component, + ); +} + +/** + * Format the output of data for this component. + */ +function theme_webform_display_textarea($variables) { + $element = $variables['element']; + $output = $element['#format'] == 'html' ? str_replace("\n", '<br />', check_plain($element['#value'])) : $element['#value']; + if (strlen($output) > 80) { + $output = ($element['#format'] == 'html') ? '<div class="webform-long-answer">' . $output . '</div>' : $output; + } + return $output !== '' ? $output : ' '; +} + +/** + * Implementation of _webform_analysis_component(). + */ +function _webform_analysis_textarea($component, $sids = array()) { + $query = db_select('webform_submitted_data', 'wsd', array('fetch' => PDO::FETCH_ASSOC)) + ->fields('wsd', array('no', 'data')) + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']); + + if (count($sids)) { + $query->condition('sid', $sids, 'IN'); + } + + $nonblanks = 0; + $submissions = 0; + $wordcount = 0; + + $result = $query->execute(); + foreach ($result as $data) { + if (drupal_strlen(trim($data['data'])) > 0) { + $nonblanks++; + $wordcount += str_word_count(trim($data['data'])); + } + $submissions++; + } + + $rows[0] = array(t('Left Blank'), ($submissions - $nonblanks)); + $rows[1] = array(t('User entered value'), $nonblanks); + $rows[2] = array(t('Average submission length in words (ex blanks)'), ($nonblanks != 0 ? number_format($wordcount/$nonblanks, 2) : '0')); + return $rows; +} + +/** + * Implementation of _webform_table_component(). + */ +function _webform_table_textarea($component, $value) { + return empty($value[0]) ? '' : check_plain($value[0]); +} + +/** + * Implementation of _webform_csv_headers_component(). + */ +function _webform_csv_headers_textarea($component, $export_options) { + $header = array(); + $header[0] = ''; + $header[1] = ''; + $header[2] = $component['name']; + return $header; +} + +/** + * Implementation of _webform_csv_data_component(). + */ +function _webform_csv_data_textarea($component, $export_options, $value) { + return empty($value[0]) ? '' : $value[0]; +} diff --git a/sites/all/modules/webform/components/textfield.inc b/sites/all/modules/webform/components/textfield.inc new file mode 100644 index 0000000000000000000000000000000000000000..9cc9429d9b57ffa3c5a1639dd1379d5f93e3fd87 --- /dev/null +++ b/sites/all/modules/webform/components/textfield.inc @@ -0,0 +1,246 @@ +<?php +// $Id: textfield.inc,v 1.31 2010/12/29 03:56:34 quicksketch Exp $ + +/** + * @file + * Webform module textfield component. + */ + +/** + * Implementation of _webform_defaults_component(). + */ +function _webform_defaults_textfield() { + return array( + 'name' => '', + 'form_key' => NULL, + 'pid' => 0, + 'weight' => 0, + 'value' => '', + 'mandatory' => 0, + 'extra' => array( + 'width' => '', + 'maxlength' => '', + 'field_prefix' => '', + 'field_suffix' => '', + 'disabled' => 0, + 'unique' => 0, + 'title_display' => 0, + 'description' => '', + 'attributes' => array(), + ), + ); +} + +/** + * Implementation of _webform_theme_component(). + */ +function _webform_theme_textfield() { + return array( + 'webform_display_textfield' => array( + 'render element' => 'element', + ), + ); +} + +/** + * Implementation of _webform_edit_component(). + */ +function _webform_edit_textfield($component) { + $form = array(); + $form['value'] = array( + '#type' => 'textfield', + '#title' => t('Default value'), + '#default_value' => $component['value'], + '#description' => t('The default value of the field.') . theme('webform_token_help'), + '#size' => 60, + '#maxlength' => 127, + '#weight' => 0, + ); + $form['display']['width'] = array( + '#type' => 'textfield', + '#title' => t('Width'), + '#default_value' => $component['extra']['width'], + '#description' => t('Width of the textfield.') . ' ' . t('Leaving blank will use the default size.'), + '#size' => 5, + '#maxlength' => 10, + '#weight' => 0, + '#parents' => array('extra', 'width'), + ); + $form['display']['field_prefix'] = array( + '#type' => 'textfield', + '#title' => t('Label placed to the left of the textfield'), + '#default_value' => $component['extra']['field_prefix'], + '#description' => t('Examples: $, #, -.'), + '#size' => 20, + '#maxlength' => 127, + '#weight' => 1.1, + '#parents' => array('extra', 'field_prefix'), + ); + $form['display']['field_suffix'] = array( + '#type' => 'textfield', + '#title' => t('Label placed to the right of the textfield'), + '#default_value' => $component['extra']['field_suffix'], + '#description' => t('Examples: lb, kg, %.'), + '#size' => 20, + '#maxlength' => 127, + '#weight' => 1.2, + '#parents' => array('extra', 'field_suffix'), + ); + $form['display']['disabled'] = array( + '#type' => 'checkbox', + '#title' => t('Disabled'), + '#return_value' => 1, + '#description' => t('Make this field non-editable. Useful for setting an unchangeable default value.'), + '#weight' => 11, + '#default_value' => $component['extra']['disabled'], + '#parents' => array('extra', 'disabled'), + ); + $form['validation']['unique'] = array( + '#type' => 'checkbox', + '#title' => t('Unique'), + '#return_value' => 1, + '#description' => t('Check that all entered values for this field are unique. The same value is not allowed to be used twice.'), + '#weight' => 1, + '#default_value' => $component['extra']['unique'], + '#parents' => array('extra', 'unique'), + ); + $form['validation']['maxlength'] = array( + '#type' => 'textfield', + '#title' => t('Maxlength'), + '#default_value' => $component['extra']['maxlength'], + '#description' => t('Maximum length of the textfield value.'), + '#size' => 5, + '#maxlength' => 10, + '#weight' => 2, + '#parents' => array('extra', 'maxlength'), + ); + return $form; +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_render_textfield($component, $value = NULL, $filter = TRUE) { + $element = array( + '#type' => $component['type'], + '#title' => $filter ? _webform_filter_xss($component['name']) : $component['name'], + '#title_display' => $component['extra']['title_display'] ? $component['extra']['title_display'] : 'before', + '#default_value' => $filter ? _webform_filter_values($component['value'], NULL, NULL, NULL, FALSE) : $component['value'], + '#required' => $component['mandatory'], + '#weight' => $component['weight'], + '#field_prefix' => empty($component['extra']['field_prefix']) ? NULL : ($filter ? _webform_filter_xss($component['extra']['field_prefix']) : $component['extra']['field_prefix']), + '#field_suffix' => empty($component['extra']['field_suffix']) ? NULL : ($filter ? _webform_filter_xss($component['extra']['field_suffix']) : $component['extra']['field_suffix']), + '#description' => $filter ? _webform_filter_descriptions($component['extra']['description']) : $component['extra']['description'], + '#attributes' => $component['extra']['attributes'], + '#theme_wrappers' => array('webform_element'), + '#webform_component' => $component, + ); + + if ($component['extra']['disabled']) { + $element['#attributes']['readonly'] = 'readonly'; + } + + // Enforce uniqueness. + if ($component['extra']['unique']) { + $element['#element_validate'][] = 'webform_validate_unique'; + } + + // Change the 'width' option to the correct 'size' option. + if ($component['extra']['width'] > 0) { + $element['#size'] = $component['extra']['width']; + } + if ($component['extra']['maxlength'] > 0) { + $element['#maxlength'] = $component['extra']['maxlength']; + } + + if (isset($value)) { + $element['#default_value'] = $value[0]; + } + + return $element; +} + +/** + * Implementation of _webform_display_component(). + */ +function _webform_display_textfield($component, $value, $format = 'html') { + return array( + '#title' => $component['name'], + '#weight' => $component['weight'], + '#theme' => 'webform_display_textfield', + '#theme_wrappers' => $format == 'html' ? array('webform_element') : array('webform_element_text'), + '#field_prefix' => $component['extra']['field_prefix'], + '#field_suffix' => $component['extra']['field_suffix'], + '#format' => $format, + '#value' => isset($value[0]) ? $value[0] : '', + '#webform_component' => $component, + ); +} + +/** + * Format the output of data for this component. + */ +function theme_webform_display_textfield($variables) { + $element = $variables['element']; + $prefix = $element['#format'] == 'html' ? '' : $element['#field_prefix']; + $suffix = $element['#format'] == 'html' ? '' : $element['#field_suffix']; + $value = $element['#format'] == 'html' ? check_plain($element['#value']) : $element['#value']; + return $value !== '' ? ($prefix . $value . $suffix) : ' '; +} + +/** + * Implementation of _webform_analysis_component(). + */ +function _webform_analysis_textfield($component, $sids = array()) { + $query = db_select('webform_submitted_data', 'wsd', array('fetch' => PDO::FETCH_ASSOC)) + ->fields('wsd', array('data')) + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']); + + if (count($sids)) { + $query->condition('sid', $sids, 'IN'); + } + + $nonblanks = 0; + $submissions = 0; + $wordcount = 0; + + $result = $query->execute(); + foreach ($result as $data) { + if (drupal_strlen(trim($data['data'])) > 0) { + $nonblanks++; + $wordcount += str_word_count(trim($data['data'])); + } + $submissions++; + } + + $rows[0] = array(t('Left Blank'), ($submissions - $nonblanks)); + $rows[1] = array(t('User entered value'), $nonblanks); + $rows[2] = array(t('Average submission length in words (ex blanks)'), ($nonblanks != 0 ? number_format($wordcount/$nonblanks, 2) : '0')); + return $rows; +} + +/** + * Implementation of _webform_table_component(). + */ +function _webform_table_textfield($component, $value) { + return check_plain(empty($value[0]) ? '' : $value[0]); +} + +/** + * Implementation of _webform_csv_headers_component(). + */ +function _webform_csv_headers_textfield($component, $export_options) { + $header = array(); + $header[0] = ''; + $header[1] = ''; + $header[2] = $component['name']; + return $header; +} + +/** + * Implementation of _webform_csv_data_component(). + */ +function _webform_csv_data_textfield($component, $export_options, $value) { + return !isset($value[0]) ? '' : $value[0]; +} diff --git a/sites/all/modules/webform/components/time.inc b/sites/all/modules/webform/components/time.inc new file mode 100644 index 0000000000000000000000000000000000000000..d506615ddb789efe94ca4a52c4556ca088cc120e --- /dev/null +++ b/sites/all/modules/webform/components/time.inc @@ -0,0 +1,370 @@ +<?php +// $Id: time.inc,v 1.38 2010/10/18 07:21:10 quicksketch Exp $ + +/** + * @file + * Webform module time component. + */ + +// Time depends on functions provided by date. +webform_component_include('date'); + +/** + * Implementation of _webform_defaults_component(). + */ +function _webform_defaults_time() { + return array( + 'name' => '', + 'form_key' => NULL, + 'pid' => 0, + 'weight' => 0, + 'value' => '', + 'mandatory' => 0, + 'extra' => array( + 'timezone' => 'user', + 'hourformat' => '12-hour', + 'title_display' => 0, + 'description' => '', + ), + ); +} + +/** + * Implementation of _webform_theme_component(). + */ +function _webform_theme_time() { + return array( + 'webform_time' => array( + 'render element' => 'element', + ), + 'webform_display_time' => array( + 'render element' => 'element', + ), + ); +} + +/** + * Implementation of _webform_edit_component(). + */ +function _webform_edit_time($component) { + $form = array(); + $form['value'] = array( + '#type' => 'textfield', + '#title' => t('Default value'), + '#default_value' => $component['value'], + '#description' => t('The default value of the field.') . '<br />' . t('Accepts a time in any <a href="http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html">GNU Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are all valid.'), + '#size' => 60, + '#maxlength' => 127, + '#weight' => 0, + ); + $form['extra']['timezone'] = array( + '#type' => 'radios', + '#title' => t('Default value timezone'), + '#default_value' => empty($component['extra']['timezone']) ? 'user' : $component['extra']['timezone'], + '#description' => t('Adjust the default time value according to a specific timezone.'), + '#options' => array('user' => t('User timezone'), 'site' => t('Website timezone')), + '#weight' => -1, + '#access' => variable_get('configurable_timezones', 1), + ); + $form['display']['hourformat'] = array( + '#type' => 'radios', + '#title' => t('Time Format'), + '#default_value' => isset($component['extra']['hourformat']) ? $component['extra']['hourformat'] : '12-hour', + '#description' => t('Format the display of the time in 12 or 24 hours.'), + '#options' => array('12-hour' => t('12-hour (am/pm)'), '24-hour' => t('24-hour')), + '#weight' => 2, + '#parents' => array('extra', 'hourformat'), + ); + return $form; +} + +/** + * Implementation of _webform_render_component(). + */ +function _webform_render_time($component, $value = NULL, $filter = TRUE) { + if (drupal_strlen($component['value']) > 0) { + // Adjust the time based on the user or site timezone. + if (variable_get('configurable_timezones', 1) && $component['extra']['timezone'] == 'user') { + $timezone_name = isset($GLOBALS['user']->timezone) ? $GLOBALS['user']->timezone : 'UTC'; + } + else { + $timezone_name = variable_get('date_default_timezone', 'UTC'); + } + + $timezone = new DateTimeZone($timezone_name); + $datetime = new DateTime($component['value'], $timezone); + $default_values = webform_date_array($datetime->format('c'), 'time'); + } + else { + $default_values = array( + 'hour' => '', + 'minute' => '', + 'second' => '', + ); + } + + $first_hour = 0; + $last_hour = 23; + if ($component['extra']['hourformat'] == '12-hour') { + $first_hour = 1; + $last_hour = 12; + $default_values = webform_time_convert($default_values, '12-hour'); + $default_values['ampm'] = $default_values['ampm'] ? $default_values['ampm'] : 'am'; + } + + // Generate the choices for drop-down selects. + $hours[''] = t('hour'); + $minutes[''] = t('minute'); + for ($i = $first_hour; $i <= $last_hour; $i++) $hours[$i] = $i; + for ($i = 0; $i <= 59; $i++) $minutes[$i] = $i < 10 ? "0$i" : $i; + $ampms = array('am' => t('am'), 'pm' => t('pm')); + + $element = array( + '#title' => $filter ? _webform_filter_xss($component['name']) : $component['name'], + '#title_display' => $component['extra']['title_display'] ? $component['extra']['title_display'] : 'before', + '#required' => $component['mandatory'], + '#weight' => $component['weight'], + '#description' => $filter ? _webform_filter_descriptions($component['extra']['description']) : $component['extra']['description'], + '#element_validate' => array('webform_validate_time'), + '#hourformat' => $component['extra']['hourformat'], + '#theme' => 'webform_time', + '#theme_wrappers' => array('webform_element'), + '#webform_component' => $component, + ); + + $element['hour'] = array( + '#prefix' => '', + '#type' => 'select', + '#default_value' => $default_values['hour'], + '#options' => $hours, + ); + $element['minute'] = array( + '#prefix' => ':', + '#type' => 'select', + '#default_value' => $default_values['minute'], + '#options' => $minutes, + ); + if ($component['extra']['hourformat'] == '12-hour') { + $element['ampm'] = array( + '#type' => 'radios', + '#default_value' => $default_values['ampm'], + '#options' => $ampms, + ); + } + + if (isset($value[0]) && $value[0] !== '') { + $value = webform_date_array($value[0], 'time'); + if ($component['extra']['hourformat'] == '12-hour') { + $value = webform_time_convert($value, '12-hour'); + } + + $element['hour']['#default_value'] = $value['hour']; + $element['minute']['#default_value'] = $value['minute']; + if (isset($value['ampm'])) { + $element['ampm']['#default_value'] = $value['ampm']; + } + } + + return $element; +} + +/** + * Theme a webform time element. + */ +function theme_webform_time($variables) { + $element = $variables['element']; + + // Add error classes to all items within the element. + if (form_get_error($element)) { + $element['hour']['#attributes']['class'] = array('error'); + $element['minute']['#attributes']['class'] = array('error'); + } + + $output = '<div class="webform-container-inline">' . drupal_render($element['hour']) . drupal_render($element['minute']) . drupal_render($element['ampm']) . '</div>'; + + return $output; +} + +function webform_validate_time($element, $form_state) { + $form_key = $element['#webform_component']['form_key']; + $name = $element['#webform_component']['name']; + + // Check if the user filled the required fields. + foreach ($element['#hourformat'] == '12-hour' ? array('hour', 'minute', 'ampm') : array('hour', 'minute') as $field_type) { + if ($element[$field_type]['#value'] == '' && $element['#required']) { + form_error($element, t('%field field is required.', array('%field' => $name))); + return; + } + } + + // Check for a valid time. + if ($element['hour']['#value'] !== '' || $element['minute']['#value'] !== '') { + if (!is_numeric($element['hour']['#value']) || !is_numeric($element['minute']['#value']) || (isset($element['ampm']) && $element['ampm']['#value'] === '')) { + form_error($element, t('Entered %name is not a valid time.', array('%name' => $name))); + return; + } + } +} + +/** + * Implementation of _webform_submit_component(). + */ +function _webform_submit_time($component, $value) { + // Convert to 24-hour time before string conversion. + if ($component['extra']['hourformat'] == '12-hour') { + $value = webform_time_convert($value, '24-hour'); + } + + // Convert the value into a ISO 8601 string. + return $value['hour'] !== '' ? webform_date_string($value, 'time') : ''; +} + +/** + * Implementation of _webform_display_component(). + */ +function _webform_display_time($component, $value, $format = 'html') { + $value = webform_date_array(isset($value[0]) ? $value[0] : '', 'time'); + if ($component['extra']['hourformat'] == '12-hour') { + $value = webform_time_convert($value, '12-hour'); + } + + return array( + '#title' => $component['name'], + '#weight' => $component['weight'], + '#theme' => 'webform_display_time', + '#theme_wrappers' => $format == 'html' ? array('webform_element') : array('webform_element_text'), + '#format' => $format, + '#hourformat' => $component['extra']['hourformat'], + '#value' => $value, + '#webform_component' => $component, + ); +} + +/** + * Format the output of data for this component. + */ +function theme_webform_display_time($variables) { + $element = $variables['element']; + $output = ' '; + if (isset($element['#value']['hour']) && $element['#value']['hour'] !== '' && isset($element['#value']['minute']) && $element['#value']['minute'] !== '') { + if ($element['#hourformat'] == '24-hour') { + $output = sprintf('%02d', $element['#value']['hour']) . ':' . sprintf('%02d', $element['#value']['minute']); + } + else { + $output = $element['#value']['hour'] . ':' . sprintf('%02d', $element['#value']['minute']) . ' ' . $element['#value']['ampm']; + } + } + return $output; +} + +/** + * Implementation of _webform_analysis_component(). + */ +function _webform_analysis_time($component, $sids = array()) { + $query = db_select('webform_submitted_data', 'wsd', array('fetch' => PDO::FETCH_ASSOC)) + ->fields('wsd', array('no', 'data')) + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']) + ->orderBy('sid'); + + if (count($sids)) { + $query->condition('sid', $sids, 'IN'); + } + + $result = $query->execute(); + + $times = array(); + $submissions = 0; + foreach ($result as $row) { + $submissions++; + if ($row['data']) { + $times[] = webform_date_array($row['data']); + } + } + + // Display stats. + $nonblanks = count($times); + $rows[0] = array(t('Left Blank'), ($submissions - $nonblanks)); + $rows[1] = array(t('User entered value'), $nonblanks); + return $rows; +} + +/** + * Implementation of _webform_table_component(). + */ +function _webform_table_time($component, $value) { + if ($value[0]) { + $time = webform_date_array($value[0], 'time'); + if ($component['extra']['hourformat'] == '24-hour') { + return sprintf('%02d', $time['hour']) . ':' . sprintf('%02d', $time['minute']); + } + else { + $time = webform_time_convert($time, '12-hour'); + return $time['hour'] . ':' . sprintf('%02d', $time['minute']) . ' ' . $time['ampm']; + } + } + else { + return ''; + } +} + +/** + * Implementation of _webform_csv_headers_component(). + */ +function _webform_csv_headers_time($component, $export_options) { + $header = array(); + $header[0] = ''; + $header[1] = ''; + $header[2] = $component['name']; + return $header; +} + +/** + * Implementation of _webform_csv_data_component(). + */ +function _webform_csv_data_time($component, $export_options, $value) { + if ($value[0]) { + $time = webform_date_array($value[0], 'time'); + if ($component['extra']['hourformat'] == '24-hour') { + return sprintf('%02d', $time['hour']) . ':' . sprintf('%02d', $time['minute']); + } + else { + $time = webform_time_convert($time, '12-hour'); + return $time['hour'] . ':' . sprintf('%02d', $time['minute']) . ' ' . $time['ampm']; + } + } + else { + return ''; + } +} + +/** + * Convert a time between a 24-hour and a 12-hour value. + * + * @param $array + * An array of hour, minute, second, and optionally ampm. + * @param $format + * Either 12-hour or 24-hour. + * @return + * An array with hour, minute, second, and ampm (if using "12-hour"). + */ +function webform_time_convert($array, $format) { + if ($array['hour'] !== '') { + if ($format == '12-hour') { + $array['ampm'] = ($array['hour'] >= 12 && $array['hour'] < 24) ? 'pm' : 'am'; + $array['hour'] = ($array['hour'] > 12 || $array['hour'] == 0) ? abs($array['hour'] - 12) : (int) $array['hour']; + } + elseif ($format == '24-hour' && isset($array['ampm'])) { + $array['hour'] = ($array['hour'] < 12 && $array['ampm'] == 'pm') ? $array['hour'] + 12 : (int) $array['hour']; + } + } + + if ($format == '12-hour' && !isset($array['ampm'])) { + $array['ampm'] = ''; + } + elseif ($format == '24-hour' && isset($array['ampm'])) { + unset($array['ampm']); + } + + return $array; +} diff --git a/sites/all/modules/webform/css/webform-admin.css b/sites/all/modules/webform/css/webform-admin.css new file mode 100644 index 0000000000000000000000000000000000000000..59455e60fd1adc6e112fd119b53bee6c6a50378a --- /dev/null +++ b/sites/all/modules/webform/css/webform-admin.css @@ -0,0 +1,89 @@ +/* $Id: webform-admin.css,v 1.8 2011/01/12 04:49:21 quicksketch Exp $ */ + +.webform-submission-info { + padding: 10px; +} +.webform-submission-info .user-picture { + float: right; + margin-left: 10px; +} +.webform-submission-info-text { + overflow: hidden; +} +.webform-submission-navigation { + text-align: right; +} +.webform-submission-next { + margin-left: 20px; +} +.webform-component-select-wrapper { + max-height: 300px; + overflow: auto; +} +.webform-component-select-table table { + margin: 0; +} +.webform-component-select-table tr.selected td, +.webform-component-select-table tr.selected td.active { + background: inherit; + color: inherit; +} +.form-item .webform-component-select-table .description { + font-size: inherit; +} +.form-item .webform-component-select-table input { + width: 12px; + height: 12px; + margin: 0 2px 2px; +} +.webform-select-list-format table { + border: 1px solid; + width: auto; + font-size: 90%; +} +.webform-select-list-format td, +.webform-select-list-format th { + border: 1px solid; +} +tr.webform-pagebreak td { + border-top: 2px dotted #999; +} +td.webform-pagebreak { + font-weight: bold; +} +.webform-options-element thead { + display: none; +} +.webform-options-element fieldset { + border: none; + background: none; + margin: 0; + padding: 0; +} +.webform-options-element fieldset legend { + display: none; +} +.webform-checkbox { + text-align: center; + width: 40px; +} +.webform-container-inline div, +.webform-container-inline div.form-item { + display: inline; +} +.webform-default-value { + color: #999; +} +.webform-results-per-page a.selected { + font-weight: bold; +} +html.js fieldset.webform-position, +html.js div.webform-position { + display: none; +} +tr.webform-add-form .tabledrag-changed { + display: none; +} +#webform-components tr.webform-add-form { + background-color: inherit; +} diff --git a/sites/all/modules/webform/css/webform.css b/sites/all/modules/webform/css/webform.css new file mode 100644 index 0000000000000000000000000000000000000000..9c263475e9baa0f652b63a2c15f10c2f83162c62 --- /dev/null +++ b/sites/all/modules/webform/css/webform.css @@ -0,0 +1,14 @@ +/* $Id: webform.css,v 1.4 2010/10/17 18:53:13 quicksketch Exp $ */ + +/** + * Front-end styling for the display of webforms. + */ + +input.webform-calendar { + padding: 3px; + vertical-align: top; +} +.webform-container-inline div, +.webform-container-inline div.form-item { + display: inline; +} diff --git a/sites/all/modules/webform/images/calendar.png b/sites/all/modules/webform/images/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..60c2f3c15b18475a92179b57acc53cea565d5f25 Binary files /dev/null and b/sites/all/modules/webform/images/calendar.png differ diff --git a/sites/all/modules/webform/includes/webform.admin.inc b/sites/all/modules/webform/includes/webform.admin.inc new file mode 100644 index 0000000000000000000000000000000000000000..55e6aa605c8842bd8ded611ad59943b6fe563589 --- /dev/null +++ b/sites/all/modules/webform/includes/webform.admin.inc @@ -0,0 +1,283 @@ +<?php +// $Id: webform.admin.inc,v 1.10 2011/01/07 20:24:08 quicksketch Exp $ + +/** + * @file + * Administration pages provided by Webform module. + */ + +/** + * Menu callback for admin/config/content/webform. + */ +function webform_admin_settings() { + module_load_include('inc', 'webform', 'includes/webform.export'); + + $node_types = node_type_get_names(); + $form['node_types'] = array( + '#type' => 'checkboxes', + '#title' => t('Webform-enabled content types'), + '#description' => t('Webform allows you to enable the webform components for any content type. Choose the types on which you would like to associate webform components.'), + '#options' => $node_types, + '#default_value' => webform_variable_get('webform_node_types'), + ); + + $form['components'] = array( + '#type' => 'fieldset', + '#title' => t('Available components'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#description' => t('These are the available field types for your installation of Webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms.'), + ); + + // Add each component to the form: + $form['components'] = array('#tree' => TRUE); + $component_types = webform_components(TRUE); + foreach ($component_types as $key => $component) { + $form['components'][$key] = array( + '#title' => $component['label'], + '#description' => $component['description'], + '#type' => 'checkbox', + '#return_value' => 1, + '#default_value' => $component['enabled'], + ); + } + + $form['email'] = array( + '#type' => 'fieldset', + '#title' => t('Default e-mail values'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + ); + + $form['email']['webform_default_from_address'] = array( + '#type' => 'textfield', + '#title' => t('From address'), + '#default_value' => variable_get('webform_default_from_address', variable_get('site_mail', ini_get('sendmail_from'))), + '#description' => t('The default sender address for emailed webform results; often the e-mail address of the maintainer of your forms.'), + ); + + $form['email']['webform_default_from_name'] = array( + '#type' => 'textfield', + '#title' => t('From name'), + '#default_value' => variable_get('webform_default_from_name', variable_get('site_name', '')), + '#description' => t('The default sender name which is used along with the default from address.'), + ); + + $form['email']['webform_default_subject'] = array( + '#type' => 'textfield', + '#title' => t('Default subject'), + '#default_value' => variable_get('webform_default_subject', t('Form submission from: %title')), + '#description' => t('The default subject line of any e-mailed results.'), + ); + + $form['email']['webform_default_format'] = array( + '#type' => 'radios', + '#title' => t('Format'), + '#options' => array( + 0 => t('Plain text'), + 1 => t('HTML'), + ), + '#default_value' => variable_get('webform_default_format', 0), + '#description' => t('The default format for new e-mail settings. Webform e-mail options take precedence over the settings for system-wide e-mails configured in MIME mail.'), + ); + + $form['email']['webform_format_override'] = array( + '#type' => 'radios', + '#title' => t('Format override'), + '#options' => array( + 0 => t('Per-webform configuration of e-mail format'), + 1 => t('Send all e-mails in the default format'), + ), + '#default_value' => variable_get('webform_format_override', 0), + '#description' => t('Force all webform e-mails to be sent in the default format.'), + ); + + $form['advanced'] = array( + '#type' => 'fieldset', + '#title' => t('Advanced options'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + ); + + $form['advanced']['webform_use_cookies'] = array( + '#type' => 'checkbox', + '#checked_value' => 1, + '#title' => t('Allow cookies for tracking submissions'), + '#default_value' => variable_get('webform_use_cookies', 0), + '#description' => t('<a href="http://www.wikipedia.org/wiki/HTTP_cookie">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, Webform also uses IP addresses and site usernames to prevent repeated submissions.'), + ); + + $form['advanced']['webform_email_address_format'] = array( + '#type' => 'radios', + '#title' => t('E-mail address format'), + '#options' => array( + 'long' => t('Long format: "Example Name" <name@example.com>'), + 'short' => t('Short format: name@example.com'), + ), + '#default_value' => variable_get('webform_email_address_format', 'long'), + '#description' => t('Most servers support the "long" format which will allow for more friendly From addresses in e-mails sent. However many Windows-based servers are unable to send in the long format. Change this option if experiencing problems sending e-mails with Webform.'), + ); + + $form['advanced']['webform_export_format'] = array( + '#type' => 'radios', + '#title' => t('Default export format'), + '#options' => webform_export_list(), + '#default_value' => variable_get('webform_export_format', 'delimited'), + ); + + $form['advanced']['webform_csv_delimiter'] = array( + '#type' => 'select', + '#title' => t('Default export delimiter'), + '#description' => t('This is the delimiter used in the CSV/TSV file when downloading Webform results. Using tabs in the export is the most reliable method for preserving non-latin characters. You may want to change this to another character depending on the program with which you anticipate importing results.'), + '#default_value' => variable_get('webform_csv_delimiter', '\t'), + '#options' => array( + ',' => t('Comma (,)'), + '\t' => t('Tab (\t)'), + ';' => t('Semicolon (;)'), + ':' => t('Colon (:)'), + '|' => t('Pipe (|)'), + '.' => t('Period (.)'), + ' ' => t('Space ( )'), + ), + ); + + $form['advanced']['webform_submission_access_control'] = array( + '#type' => 'radios', + '#title' => t('Submission access control'), + '#options' => array( + '1' => t('Select the user roles that may submit each individual webform'), + '0' => t('Disable Webform submission access control'), + ), + '#default_value' => variable_get('webform_submission_access_control', 1), + '#description' => t('By default, the configuration form for each webform allows the administrator to choose which roles may submit the form. You may want to allow users to always submit the form if you are using a separate node access module to control access to webform nodes themselves.'), + ); + + $form = system_settings_form($form); + $form['#theme'] = 'webform_admin_settings'; + $form['#submit'][] = 'webform_admin_settings_submit'; + + return $form; +} + +function webform_admin_settings_submit($form, &$form_state) { + $disabled_components = array(); + foreach ($form_state['values']['components'] as $name => $enabled) { + if (!$enabled) { + $disabled_components[] = $name; + } + } + variable_set('webform_disabled_components', $disabled_components); + + $webform_types = array(); + foreach ($form_state['values']['node_types'] as $type) { + if ($type) { + $webform_types[] = $type; + } + } + variable_set('webform_node_types', $webform_types); +} + +function theme_webform_admin_settings($variables) { + $form = $variables['form']; + + // Format the components into a table. + foreach (element_children($form['components']) as $key) { + $row = array(); + $row[] = $form['components'][$key]['#title']; + $row[] = $form['components'][$key]['#description']; + $form['components'][$key]['#title'] = NULL; + $form['components'][$key]['#description'] = NULL; + $row[] = array('data' => drupal_render($form['components'][$key]), 'align' => 'center'); + $rows[] = $row; + } + $header = array(t('Name'), t('Description'), array('data' => t('Enabled'), 'class' => array('checkbox'))); + + // Create the table inside the form. + $form['components']['table'] = array( + '#theme' => 'table', + '#header' => $header, + '#rows' => $rows, + ); + + return drupal_render_children($form); +} + +/** + * Menu callback for admin/content/webform. Displays all webforms on the site. + */ +function webform_admin_content() { + $webform_types = webform_variable_get('webform_node_types'); + + $nodes = array(); + if ($webform_types) { + $nodes = db_select('node', 'n') + ->fields('n') + ->condition('n.type', $webform_types, 'IN') + ->execute() + ->fetchAllAssoc('nid'); + } + + return theme('webform_admin_content', array('nodes' => $nodes)); +} + +/** + * Create a comma-separate list of content types that are webform enabled. + */ +function webform_admin_type_list() { + $webform_types = webform_variable_get('webform_node_types'); + $webform_type_list = ''; + $webform_type_count = count($webform_types); + foreach ($webform_types as $n => $type) { + $webform_type_list .= l(node_type_get_name($type), 'node/add/' . $type); + if ($n + 1 < $webform_type_count) { + $webform_type_list .= $webform_type_count == 2 ? ' ' : ', '; + } + if ($n + 2 == $webform_type_count) { + $webform_type_list .= t('or') . ' '; + } + } + + return $webform_type_list; +} + +/** + * Generate a list of all webforms avaliable on this site. + */ +function theme_webform_admin_content($variables) { + $nodes = $variables['nodes']; + $header = array( + t('Title'), + array('data' => t('View'), 'colspan' => '4'), + array('data' => t('Operations'), 'colspan' => '2') + ); + + $rows = array(); + foreach ($nodes as $node) { + $rows[] = array( + l($node->title, 'node/' . $node->nid), + l(t('Submissions'), 'node/' . $node->nid . '/webform-results'), + l(t('Analysis'), 'node/' . $node->nid . '/webform-results/analysis'), + l(t('Table'), 'node/' . $node->nid . '/webform-results/table'), + l(t('Download'), 'node/' . $node->nid . '/webform-results/download'), + node_access('update', $node) ? l(t('Edit'), 'node/' . $node->nid . '/edit') : '', + user_access('delete all webform submissions') ? l(t('Clear'), 'node/' . $node->nid . '/webform-results/clear') : '', + ); + } + + if (empty($rows)) { + $webform_types = webform_variable_get('webform_node_types'); + if (empty($webform_types)) { + $message = t('Webform is currently not enabled on any content types.') . ' ' . t('Visit the <a href="!url">Webform settings</a> page and enable Webform on at least one content type.', array('!url' => url('admin/config/content/webform'))); + } + else { + $webform_type_list = webform_admin_type_list(); + $message = t('There are currently no webforms on your site. Create a !types piece of content.', array('!types' => $webform_type_list)); + } + + $rows[] = array( + array('data' => $message, 'colspan' => 7), + ); + } + + return theme('table', array('header' => $header, 'rows' => $rows)); +} diff --git a/sites/all/modules/webform/includes/webform.components.inc b/sites/all/modules/webform/includes/webform.components.inc new file mode 100644 index 0000000000000000000000000000000000000000..4155491f2097913a2407ccaa4c1c67e35599d7b0 --- /dev/null +++ b/sites/all/modules/webform/includes/webform.components.inc @@ -0,0 +1,1015 @@ +<?php +// $Id: webform.components.inc,v 1.56 2011/01/05 06:07:07 quicksketch Exp $ + +/** + * @file + * Webform module component handling. + */ + +/** + * Provides interface and database handling for editing components of a webform. + * + * @author Nathan Haug <nate@lullabot.com> + */ + +/** + * Overview page of all components for this webform. + */ +function webform_components_page($node, $page_number = 1) { + $output = drupal_get_form('webform_components_form', $node); + + return array( + '#theme' => 'webform_components_page', + '#node' => $node, + '#form' => $output, + ); +} + +/** + * Theme the output of the main components page. + * + * This theming provides a way to toggle between the editing modes if Form + * Builder module is available. + */ +function theme_webform_components_page($variables) { + $node = $variables['node']; + $form = $variables['form']; + + return drupal_render($form); +} + +/** + * The table-based listing of all components for this webform. + */ +function webform_components_form($form, $form_state, $node) { + $form = array( + '#tree' => TRUE, + '#node' => $node, + 'components' => array(), + ); + + $form['nid'] = array( + '#type' => 'value', + '#value' => $node->nid, + ); + + $options = array(); + foreach ($node->webform['components'] as $cid => $component) { + $options[$cid] = check_plain($component['name']); + $form['components'][$cid]['cid'] = array( + '#type' => 'hidden', + '#default_value' => $component['cid'], + ); + $form['components'][$cid]['pid'] = array( + '#type' => 'hidden', + '#default_value' => $component['pid'], + ); + $form['components'][$cid]['weight'] = array( + '#type' => 'textfield', + '#size' => 4, + '#title' => t('Weight'), + '#default_value' => $component['weight'], + ); + $form['components'][$cid]['mandatory'] = array( + '#type' => 'checkbox', + '#title' => t('Mandatory'), + '#default_value' => $component['mandatory'], + '#access' => webform_component_feature($component['type'], 'required'), + ); + if (!isset($max_weight) || $component['weight'] > $max_weight) { + $max_weight = $component['weight']; + } + } + + $form['add']['name'] = array( + '#type' => 'textfield', + '#size' => 24, + ); + + $form['add']['type'] = array( + '#type' => 'select', + '#options' => webform_component_options(), + '#weight' => 3, + '#default_value' => (isset($_GET['cid']) && isset($node->webform['components'][$_GET['cid']])) ? $node->webform['components'][$_GET['cid']]['type'] : 'textfield', + ); + $form['add']['mandatory'] = array( + '#type' => 'checkbox', + ); + $form['add']['cid'] = array( + '#type' => 'hidden', + '#default_value' => '', + ); + $form['add']['pid'] = array( + '#type' => 'hidden', + '#default_value' => (isset($_GET['cid']) && isset($node->webform['components'][$_GET['cid']])) ? $node->webform['components'][$_GET['cid']]['pid'] : 0, + ); + $form['add']['weight'] = array( + '#type' => 'textfield', + '#size' => 4, + '#delta' => count($node->webform['components']) > 10 ? count($node->webform['components']) : 10, + ); + + if (isset($_GET['cid']) && isset($node->webform['components'][$_GET['cid']])) { + // Make the new component appear by default directly after the one that was + // just added. + $form['add']['weight']['#default_value'] = $node->webform['components'][$_GET['cid']]['weight'] + 1; + foreach (array_keys($node->webform['components']) as $cid) { + // Adjust all later components also, to make sure none of them have the + // same weight as the new component. + if ($form['components'][$cid]['weight']['#default_value'] >= $form['add']['weight']['#default_value']) { + $form['components'][$cid]['weight']['#default_value']++; + } + } + } + else { + // If no component was just added, the new component should appear by + // default at the end of the list. + $form['add']['weight']['#default_value'] = isset($max_weight) ? $max_weight + 1 : 0; + } + + $form['add']['add'] = array( + '#type' => 'submit', + '#value' => t('Add'), + '#weight' => 45, + ); + + $form['submit'] = array( + '#type' => 'submit', + '#value' => t('Submit'), + '#weight' => 45, + '#access' => count($node->webform['components']) > 0, + ); + + return $form; +} + +/** + * Theme the node components form. Use a table to organize the components. + * + * @param $form + * The form array. + * @return + * Formatted HTML form, ready for display. + */ +function theme_webform_components_form($variables) { + $form = $variables['form']; + + $path = drupal_get_path('module', 'webform'); + $form['components']['#attached'] = array( + 'css' => array($path . '/css/webform-admin.css' => array('preprocess' => FALSE, 'weight' => CSS_DEFAULT + 1)), + 'js' => array($path . '/js/webform-admin.js' => array('preprocess' => FALSE)), + ); + + // TODO: Attach these. See http://drupal.org/node/732022. + drupal_add_tabledrag('webform-components', 'order', 'sibling', 'webform-weight'); + drupal_add_tabledrag('webform-components', 'match', 'parent', 'webform-pid', 'webform-pid', 'webform-cid'); + + $node = $form['#node']; + + $header = array(t('Name'), t('Type'), t('Value'), t('Mandatory'), t('Weight'), array('data' => t('Operations'), 'colspan' => 3)); + $rows = array(); + + // Add a row containing form elements for a new item. + unset($form['add']['name']['#title'], $form['add_type']['#description']); + $form['add']['name']['#attributes']['rel'] = t('New component name'); + $form['add']['name']['#attributes']['class'] = array('webform-default-value'); + $form['add']['cid']['#attributes']['class'] = array('webform-cid'); + $form['add']['pid']['#attributes']['class'] = array('webform-pid'); + $form['add']['weight']['#attributes']['class'] = array('webform-weight'); + $row_data = array( + drupal_render($form['add']['name']), + drupal_render($form['add']['type']), + '', + drupal_render($form['add']['mandatory']), + drupal_render($form['add']['cid']) . drupal_render($form['add']['pid']) . drupal_render($form['add']['weight']), + array('colspan' => 3, 'data' => drupal_render($form['add']['add'])), + ); + $add_form = array('data' => $row_data, 'class' => array('draggable', 'webform-add-form')); + $form_rendered = FALSE; + + if (!empty($node->webform['components'])) { + $component_tree = array(); + $page_count = 1; + _webform_components_tree_build($node->webform['components'], $component_tree, 0, $page_count); + $component_tree = _webform_components_tree_sort($component_tree); + // Build the table rows. + function _webform_components_form_rows($node, $cid, $component, $level, &$form, &$rows, &$add_form) { + // Create presentable values. + if (drupal_strlen($component['value']) > 30) { + $component['value'] = drupal_substr($component['value'], 0, 30); + $component['value'] .= '...'; + } + $component['value'] = check_plain($component['value']); + + // Remove individual titles from the mandatory and weight fields. + unset($form['components'][$cid]['mandatory']['#title']); + unset($form['components'][$cid]['pid']['#title']); + unset($form['components'][$cid]['weight']['#title']); + + // Add special classes for weight and parent fields. + $form['components'][$cid]['cid']['#attributes']['class'] = array('webform-cid'); + $form['components'][$cid]['pid']['#attributes']['class'] = array('webform-pid'); + $form['components'][$cid]['weight']['#attributes']['class'] = array('webform-weight'); + + // Build indentation for this row. + $indents = ''; + for ($n = 1; $n <= $level; $n++) { + $indents .= '<div class="indentation"> </div>'; + } + + // Add each component to a table row. + $row_data = array( + $indents . filter_xss($component['name']), + t($component['type']), + ($component['value'] == '') ? '-' : $component['value'], + drupal_render($form['components'][$cid]['mandatory']), + drupal_render($form['components'][$cid]['cid']) . drupal_render($form['components'][$cid]['pid']) . drupal_render($form['components'][$cid]['weight']), + l(t('Edit'), 'node/' . $node->nid . '/webform/components/' . $cid, array('query' => drupal_get_destination())), + l(t('Clone'), 'node/' . $node->nid . '/webform/components/' . $cid . '/clone', array('query' => drupal_get_destination())), + l(t('Delete'), 'node/' . $node->nid . '/webform/components/' . $cid . '/delete', array('query' => drupal_get_destination())), + ); + $row_class = array('draggable'); + if (!webform_component_feature($component['type'], 'group')) { + $row_class[] = 'tabledrag-leaf'; + } + if ($component['type'] == 'pagebreak') { + $row_class[] = 'tabledrag-root'; + $row_class[] = 'webform-pagebreak'; + $row_data[0] = array('class' => array('webform-pagebreak'), 'data' => $row_data[0]); + } + $rows[] = array('data' => $row_data, 'class' => $row_class); + if (isset($component['children']) && is_array($component['children'])) { + foreach ($component['children'] as $cid => $component) { + _webform_components_form_rows($node, $cid, $component, $level + 1, $form, $rows, $add_form); + } + } + + // Add the add form if this was the last edited component. + if (isset($_GET['cid']) && $component['cid'] == $_GET['cid'] && $add_form) { + $add_form['data'][0] = $indents . $add_form['data'][0]; + $rows[] = $add_form; + $add_form = FALSE; + } + } + foreach ($component_tree['children'] as $cid => $component) { + _webform_components_form_rows($node, $cid, $component, 0, $form, $rows, $add_form); + } + } + else { + $rows[] = array(array('data' => t('No Components, add a component below.'), 'colspan' => 9)); + } + + // Append the add form if not already printed. + if ($add_form) { + $rows[] = $add_form; + } + + $output = ''; + $output .= theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => 'webform-components'))); + $output .= drupal_render_children($form); + return $output; +} + +function webform_components_form_validate($form, &$form_state) { + // Check that the entered component name is valid. + if ($form_state['values']['op'] == t('Add') && drupal_strlen(trim($form_state['values']['add']['name'])) <= 0) { + form_error($form['add']['name'], t('When adding a new component, the name field is required.')); + } + + // Check that no two components end up with the same form key. + $duplicates = array(); + $parents = array(); + if (isset($form_state['values']['components'])) { + foreach ($form_state['values']['components'] as $cid => $component) { + $form_key = $form['#node']->webform['components'][$cid]['form_key']; + if (isset($parents[$component['pid']]) && ($existing = array_search($form_key, $parents[$component['pid']])) && $existing !== FALSE) { + if (!isset($duplicates[$component['form_key']])) { + $duplicates[$component['form_key']] = array($existing); + } + $duplicates[$component['form_key']][] = $cid; + } + $parents[$component['pid']][$cid] = $form_key; + } + } + + if (!empty($duplicates)) { + $error = t('The form order failed to save because the following elements have same form keys and are under the same parent. Edit each component and give them a unique form key, then try moving them again.'); + $items = array(); + foreach ($duplicates as $form_key => $cids) { + foreach ($cids as $cid) { + $items[] = $form['#node']->webform['components'][$cid]['name']; + } + } + + form_error($form['components'], $error . theme('item_list', $items)); + } +} + +function webform_components_form_submit($form, &$form_state) { + $node = node_load($form_state['values']['nid']); + + // Update all mandatory and weight values. + foreach ($node->webform['components'] as $cid => $component) { + if ($component['pid'] != $form_state['values']['components'][$cid]['pid'] || $component['weight'] != $form_state['values']['components'][$cid]['weight'] || $component['mandatory'] != $form_state['values']['components'][$cid]['mandatory']) { + $component['weight'] = $form_state['values']['components'][$cid]['weight']; + $component['mandatory'] = $form_state['values']['components'][$cid]['mandatory']; + $component['pid'] = $form_state['values']['components'][$cid]['pid']; + $component['nid'] = $node->nid; + webform_component_update($component); + } + } + + if (isset($_POST['op']) && $_POST['op'] == t('Publish')) { + $node->status = 1; + node_save($node); + drupal_set_message(t('Your webform has been published.')); + return 'node/' . $node->nid; + } + elseif (isset($_POST['op']) && $_POST['op'] == t('Add')) { + $component = $form_state['values']['add']; + $form_state['redirect'] = array('node/' . $node->nid . '/webform/components/new/' . $component['type'], array('query' => array('name' => $component['name'], 'mandatory' => $component['mandatory'], 'pid' => $component['pid'], 'weight' => $component['weight']))); + } + else { + drupal_set_message(t('The component positions and mandatory values have been updated.')); + + // Since Webform components have been updated but the node itself has not + // been saved, it is necessary to explicitly clear the cache to make sure + // the updated webform is visible to anonymous users. + cache_clear_all(); + } +} + +function webform_component_edit_form($form, $form_state, $node, $component, $clone = FALSE) { + drupal_set_title(t('Edit component: @name', array('@name' => $component['name'])), PASS_THROUGH); + drupal_add_css(drupal_get_path('module', 'webform') . '/css/webform-admin.css', array('weight' => CSS_THEME, 'preprocess' => FALSE)); + + // Print the correct field type specification. + // We always need: name and description. + $form = array( + '#tree' => TRUE, + ); + $form['type'] = array( + '#type' => 'value', + '#value' => $component['type'], + ); + $form['nid'] = array( + '#type' => 'value', + '#value' => $node->nid, + ); + $form['cid'] = array( + '#type' => 'value', + '#value' => isset($component['cid']) ? $component['cid'] : NULL, + ); + $form['clone'] = array( + '#type' => 'value', + '#value' => $clone, + ); + $form['name'] = array( + '#type' => 'textfield', + '#default_value' => $component['name'], + '#title' => t('Label'), + '#description' => t('This is used as a descriptive label when displaying this form element.'), + '#required' => TRUE, + '#weight' => -10, + '#maxlength' => 255, + ); + $form['form_key'] = array( + '#type' => 'textfield', + '#default_value' => empty($component['form_key']) ? _webform_safe_name($component['name']) : $component['form_key'], + '#title' => t('Field Key'), + '#description' => t('Enter a machine readable key for this form element. May contain only alphanumeric characters and underscores. This key will be used as the name attribute of the form element. This value has no effect on the way data is saved, but may be helpful if doing custom form processing.'), + '#required' => TRUE, + '#weight' => -9, + ); + $form['extra']['description'] = array( + '#type' => 'textarea', + '#default_value' => isset($component['extra']['description']) ? $component['extra']['description'] : '', + '#title' => t('Description'), + '#description' => t('A short description of the field used as help for the user when he/she uses the form.') . theme('webform_token_help'), + '#weight' => -1, + ); + + // Display settings. + $form['display'] = array( + '#type' => 'fieldset', + '#title' => t('Display'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#weight' => 8, + ); + $form['display']['title_display'] = array( + '#type' => 'checkbox', + '#title' => t('Hide component title'), + '#default_value' => !empty($component['extra']['title_display']), + '#return_value' => 'none', + '#description' => t('Do not display the title or label of this field in the form.'), + '#weight' => 8, + '#parents' => array('extra', 'title_display'), + ); + + // Validation settings. + $form['validation'] = array( + '#type' => 'fieldset', + '#title' => t('Validation'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#weight' => 5, + ); + if (webform_component_feature($component['type'], 'required')) { + $form['validation']['mandatory'] = array( + '#type' => 'checkbox', + '#title' => t('Mandatory'), + '#default_value' => ($component['mandatory'] == '1' ? TRUE : FALSE), + '#description' => t('Check this option if the user must enter a value.'), + '#weight' => -1, + '#parents' => array('mandatory'), + ); + } + + // Position settings, only shown if JavaScript is disabled. + $form['position'] = array( + '#type' => 'fieldset', + '#title' => t('Position'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + '#tree' => FALSE, + '#weight' => 20, + '#attributes' => array('class' => array('webform-position')), + ); + + if (variable_get('webform_enable_fieldset', TRUE) && is_array($node->webform['components'])) { + $options = array('0' => t('Root')); + foreach ($node->webform['components'] as $existing_cid => $value) { + if (webform_component_feature($value['type'], 'group') && (!isset($component['cid']) || $existing_cid != $component['cid'])) { + $options[$existing_cid] = $value['name']; + } + } + $form['position']['pid'] = array( + '#type' => 'select', + '#title' => t('Parent Fieldset'), + '#default_value' => $component['pid'], + '#description' => t('Optional. You may organize your form by placing this component inside another fieldset.'), + '#options' => $options, + '#weight' => 3, + ); + } + $form['position']['weight'] = array( + '#type' => 'textfield', + '#size' => 4, + '#title' => t('Weight'), + '#default_value' => $component['weight'], + '#description' => t('Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top.'), + '#weight' => 4, + ); + + // Add conditional fields. + $conditional_components = array(); + $counter = 0; + $last_pagebreak_slice = 0; + foreach ($node->webform['components'] as $cid => $test_component) { + // Only components before the pagebreak can be considered. + if ($test_component['type'] == 'pagebreak') { + $last_pagebreak_slice = $counter; + } + if (isset($component['cid']) && $cid == $component['cid']) { + break; + } + if (webform_component_feature($test_component['type'], 'conditional')) { + $conditional_components[$cid] = $test_component; + } + $counter++; + } + if ($component['type'] != 'pagebreak') { + $fieldset_description = t('Create a rule to control whether or not to skip this page.'); + } + else { + $fieldset_description = t('Create a rule to control whether or not to show this form element.'); + } + $conditional_components = array_slice($conditional_components, 0, $last_pagebreak_slice, TRUE); + $form['conditional'] = array( + '#weight' => 10, + '#type' => 'fieldset', + '#title' => t('Conditional rules'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + '#description' => t('Create a rule to control whether or not to show this form element.'), + '#tree' => FALSE, + ); + $form['conditional']['extra'] = array( + '#tree' => TRUE, + ); + $form['conditional']['extra']['conditional_component'] = array( + '#type' => 'select', + '#title' => t('Component'), + '#options' => webform_component_list($node, $conditional_components, FALSE, TRUE), + '#description' => t('Select another component to decide whether to show or hide this component. You can only select components occurring before the most recent pagebreak.'), + '#default_value' => $component['extra']['conditional_component'], + ); + $form['conditional']['extra']['conditional_operator'] = array( + '#type' => 'select', + '#title' => t('Operator'), + '#options' => array( + '=' => t('Is one of'), + '!=' => t('Is not one of') + ), + '#description' => t('Determines whether the list below is inclusive or exclusive.'), + '#default_value' => $component['extra']['conditional_operator'], + ); + $form['conditional']['extra']['conditional_values'] = array( + '#type' => 'textarea', + '#title' => t('Values'), + '#description' => t('List values, one per line, that will trigger this action. If you leave this blank, this component will always display.'), + '#default_value' => $component['extra']['conditional_values'], + ); + if (empty($conditional_components)) { + $form['conditional']['#access'] = FALSE; + } + + // Add the fields specific to this component type: + $additional_form_elements = (array) webform_component_invoke($component['type'], 'edit', $component); + if (empty($additional_form_elements)) { + drupal_set_message(t('The webform component of type @type does not have an edit function defined.', array('@type' => $component['type']))); + } + + // Merge the additional fields with the current fields: + if (isset($additional_form_elements['extra'])) { + $form['extra'] = array_merge($form['extra'], $additional_form_elements['extra']); + unset($additional_form_elements['extra']); + } + if (isset($additional_form_elements['position'])) { + $form['position'] = array_merge($form['position'], $additional_form_elements['position']); + unset($additional_form_elements['position']); + } + if (isset($additional_form_elements['display'])) { + $form['display'] = array_merge($form['display'], $additional_form_elements['display']); + unset($additional_form_elements['display']); + } + if (isset($additional_form_elements['validation'])) { + $form['validation'] = array_merge($form['validation'], $additional_form_elements['validation']); + unset($additional_form_elements['validation']); + } + elseif (count(element_children($form['validation'])) == 0) { + unset($form['validation']); + } + $form = array_merge($form, $additional_form_elements); + + // Add the submit button. + $form['submit'] = array( + '#type' => 'submit', + '#value' => t('Submit'), + '#weight' => 50, + ); + + return $form; +} + +/** + * Field name validation for the webform unique key. Must be alphanumeric. + */ +function webform_component_edit_form_validate($form, &$form_state) { + $node = node_load($form_state['values']['nid']); + + if (!preg_match('/^[a-z0-9_]+$/i', $form_state['values']['form_key'])) { + form_set_error('form_key', t('The field key %field_key is invalid. Please include only lowercase alphanumeric characters and underscores.', array('%field_key' => $form_state['values']['form_key']))); + } + + foreach ($node->webform['components'] as $cid => $component) { + if (($component['cid'] != $form_state['values']['cid'] || $form_state['values']['clone']) && ($component['pid'] == $form_state['values']['pid']) && (strcasecmp($component['form_key'], $form_state['values']['form_key']) == 0)) { + form_set_error('form_key', t('The field key %field_key is already in use by the field labeled %existing_field. Please use a unique key.', array('%field_key' => $form_state['values']['form_key'], '%existing_field' => $component['name']))); + } + } +} + +function webform_component_edit_form_submit($form, &$form_state) { + $node = node_load($form_state['values']['nid']); + + // Remove empty extra values. + if (isset($form_state['values']['extra'])) { + foreach ($form_state['values']['extra'] as $key => $value) { + if ($value === '') { + unset($form_state['values']['extra'][$key]); + } + } + } + + // Remove empty attribute values. + if (isset($form_state['values']['extra']['attributes'])) { + foreach ($form_state['values']['extra']['attributes'] as $key => $value) { + if ($value === '') { + unset($form_state['values']['extra']['attributes'][$key]); + } + } + } + + if ($form_state['values']['clone']) { + drupal_set_message(t('Component %name cloned.', array('%name' => $form_state['values']['name']))); + webform_component_clone($node, $form_state['values']); + } + elseif (!empty($form_state['values']['cid'])) { + drupal_set_message(t('Component %name updated.', array('%name' => $form_state['values']['name']))); + webform_component_update($form_state['values']); + } + else { + drupal_set_message(t('New component %name added.', array('%name' => $form_state['values']['name']))); + $cid = webform_component_insert($form_state['values']); + } + + // Since Webform components have been updated but the node itself has not + // been saved, it is necessary to explicitly clear the cache to make sure + // the updated webform is visible to anonymous users. + cache_clear_all(); + + $form_state['redirect'] = array('node/' . $form_state['values']['nid'] . '/webform/components', isset($cid) ? array('query' => array('cid' => $cid)) : array()); +} + +function webform_component_delete_form($form, $form_state, $node, $component) { + $cid = $component['cid']; + + $form = array(); + $form['node'] = array( + '#type' => 'value', + '#value' => $node, + ); + $form['component'] = array( + '#type' => 'value', + '#value' => $component, + ); + + if (webform_component_feature($node->webform['components'][$cid]['type'], 'group')) { + $question = t('Delete the %name fieldset?', array('%name' => $node->webform['components'][$cid]['name'])); + $description = t('This will immediately delete the %name fieldset and all children elements within %name from the %webform webform. This cannot be undone.', array('%name' => $node->webform['components'][$cid]['name'], '%webform' => $node->title)); + } + else { + $question = t('Delete the %name component?', array('%name' => $node->webform['components'][$cid]['name'])); + $description = t('This will immediately delete the %name component from the %webform webform. This cannot be undone.', array('%name' => $node->webform['components'][$cid]['name'], '%webform' => $node->title)); + } + + return confirm_form($form, $question, 'node/' . $node->nid . '/webform/components', $description, t('Delete')); +} + +function webform_component_delete_form_submit($form, &$form_state) { + drupal_set_message(t('Component %name deleted.', array('%name' => $form_state['values']['component']['name']))); + webform_component_delete($form_state['values']['node'], $form_state['values']['component']); + $form_state['redirect'] = 'node/' . $form_state['values']['node']->nid . '/webform/components'; +} + +/** + * Insert a new component into the database. + * + * @param $component + * A full component containing fields from the component form. + */ +function webform_component_insert(&$component) { + // Allow modules to modify the component before saving. + foreach (module_implements('webform_component_presave') as $module) { + $function = $module . '_webform_component_presave'; + $function($component); + } + + $component['value'] = isset($component['value']) ? $component['value'] : NULL; + $component['mandatory'] = isset($component['mandatory']) ? $component['mandatory'] : 0; + + // TODO: This is not race-condition safe. Switch to using transactions? + if (!isset($component['cid'])) { + $next_id_query = db_select('webform_component')->condition('nid', $component['nid']); + $next_id_query->addExpression('MAX(cid) + 1', 'cid'); + $component['cid'] = $next_id_query->execute()->fetchField(); + if ($component['cid'] == NULL) { + $component['cid'] = 1; + } + } + + $query = db_insert('webform_component') + ->fields(array( + 'nid' => $component['nid'], + 'cid' => $component['cid'], + 'pid' => $component['pid'], + 'form_key' => $component['form_key'], + 'name' => $component['name'], + 'type' => $component['type'], + 'value' => (string) $component['value'], + 'extra' => serialize($component['extra']), + 'mandatory' => $component['mandatory'], + 'weight' => $component['weight'], + )) + ->execute(); + + // Post-insert actions. + module_invoke_all('webform_component_insert', $component); + + return $component['cid']; +} + +/** + * Update an existing component with new values. + * + * @param $component + * A full component containing a nid, cid, and all other fields from the + * component form. Additional properties are stored in the extra array. + */ +function webform_component_update($component) { + // Allow modules to modify the component before saving. + foreach (module_implements('webform_component_presave') as $module) { + $function = $module . '_webform_component_presave'; + $function($component); + } + + $component['value'] = isset($component['value']) ? $component['value'] : NULL; + $component['mandatory'] = isset($component['mandatory']) ? $component['mandatory'] : 0; + db_update('webform_component') + ->fields(array( + 'pid' => $component['pid'], + 'form_key' => $component['form_key'], + 'name' => $component['name'], + 'type' => $component['type'], + 'value' => isset($component['value']) ? $component['value'] : '', + 'extra' => serialize($component['extra']), + 'mandatory' => $component['mandatory'], + 'weight' => $component['weight'] + )) + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']) + ->execute(); + + // Post-update actions. + module_invoke_all('webform_component_update', $component); +} + +function webform_component_delete($node, $component) { + // Check if a delete function is available for this component. If so, + // load all submissions and allow the component to delete each one. + + webform_component_include($component['type']); + $delete_function = '_webform_delete_' . $component['type']; + if (function_exists($delete_function)) { + module_load_include('inc', 'webform', 'includes/webform.submissions'); + $submissions = webform_get_submissions($node->nid); + foreach ($submissions as $submission) { + if (isset($submission->data[$component['cid']])) { + webform_component_invoke($component['type'], 'delete', $component, $submission->data[$component['cid']]['value']); + } + } + } + + // Remove database entries. + db_delete('webform_component') + ->condition('nid', $node->nid) + ->condition('cid', $component['cid']) + ->execute(); + db_delete('webform_submitted_data') + ->condition('nid', $node->nid) + ->condition('cid', $component['cid']) + ->execute(); + + // Delete all elements under this element. + $result = db_select('webform_component', 'c') + ->fields('c') + ->condition('nid', $node->nid) + ->condition('pid', $component['cid']) + ->execute(); + foreach ($result as $row) { + $child_component = $node->webform['components'][$row->cid]; + webform_component_delete($node, $child_component); + } + + // Post-delete actions. + module_invoke_all('webform_component_delete', $component); +} + +/** + * Recursively insert components into the database. + * @param $node + * The node object containing the current webform. + * @param $component + * A full component containing fields from the component form. + */ +function webform_component_clone(&$node, &$component) { + $original_cid = $component['cid']; + unset($component['cid']); + $new_cid = webform_component_insert($component); + if (webform_component_feature($component['type'], 'group')) { + foreach ($node->webform['components'] as $cid => $child_component) { + if ($child_component['pid'] == $original_cid) { + $child_component['pid'] = $new_cid; + webform_component_clone($node, $child_component); + } + } + } + return $new_cid; +} + +/** + * Check if a component has a particular feature. + */ +function webform_component_feature($type, $feature) { + $components = webform_components(); + $defaults = array( + 'csv' => TRUE, + 'email' => TRUE, + 'email_address' => FALSE, + 'email_name' => FALSE, + 'required' => TRUE, + 'conditional' => TRUE, + 'spam_analysis' => FALSE, + 'group' => FALSE, + ); + return isset($components[$type]['features'][$feature]) ? $components[$type]['features'][$feature] : !empty($defaults[$feature]); +} + +/** + * Create a list of components suitable for a select list. + * + * @param $node + * The webform node. + * @param $component_filter + * Either an array of components, or a string containing a feature name (csv, + * email, required, conditional) on which this list of components will be + * restricted. + * @param $indent + * Indent components placed under fieldsets with hyphens. + * @param $optgroups + * Determine if pagebreaks should be converted to option groups in the + * returned list of options. + */ +function webform_component_list($node, $component_filter = NULL, $indent = TRUE, $optgroups = FALSE) { + $options = array(); + $page_names = array(); + + $components = is_array($component_filter) ? $component_filter : $node->webform['components']; + $feature = is_string($component_filter) ? $component_filter : NULL; + + foreach ($components as $cid => $component) { + if (!isset($feature) || webform_component_feature($component['type'], $feature) || ($indent && webform_component_feature($component['type'], 'group'))) { + $prefix = ''; + $page_num = $component['page_num']; + $page_index = 'p' . $page_num; + if ($indent && ($parent_count = count(webform_component_parent_keys($node, $component)) - 1)) { + $prefix = str_repeat('-', $parent_count); + } + if ($optgroups && $component['type'] == 'pagebreak') { + $page_names[$page_index] = $component['name']; + } + elseif ($optgroups && $page_num > 1) { + $options[$page_index][$cid] = $prefix . $component['name']; + } + else { + $options[$cid] = $prefix . $component['name']; + } + } + } + + // Remove groups that do not have any children. + $cid = 0; + $previous_cid = 0; + foreach ($options as $cid => $label) { + if (isset($node->webform['components'][$previous_cid]['type']) && webform_component_feature($node->webform['components'][$previous_cid]['type'], 'group') && webform_component_feature($node->webform['components'][$cid]['type'], 'group')) { + unset($options[$cid]); + } + } + + // Remove the last item from the list if it's a group. + if ($cid && webform_component_feature($node->webform['components'][$cid]['type'], 'group')) { + unset($options[$cid]); + } + + // Convert page breaks into optgroups. + if ($optgroups) { + $grouped_options = $options; + $options = array(); + foreach ($grouped_options as $key => $values) { + if (is_array($values) && isset($page_names[$key])) { + $options[$page_names[$key]] = $values; + } + else { + $options[$key] = $values; + } + } + } + + return $options; +} + +/** + * A Form API process function to expand a component list into checkboxes. + */ +function webform_component_select($element) { + // Split the select list into checkboxes. + foreach ($element['#options'] as $key => $label) { + $indents = 0; + $label = preg_replace('/^([\-])+/', '', $label, -1, $indents); + $element[$key] = array( + '#title' => $label, + '#type' => 'checkbox', + '#default_value' => array_search($key, $element['#value']) !== FALSE, + '#return_value' => $key, + '#parents' => array_merge($element['#parents'], array($key)), + '#indent' => $indents, + ); + } + + $element['#theme_wrappers'] = array(); + $element['#type'] = 'webform_component_select'; + $element['#theme'] = 'webform_component_select'; + $element['#attached'] = array( + 'js' => array( + 'misc/tableselect.js' => array('preprocess' => FALSE), + drupal_get_path('module', 'webform') . '/js/webform-admin.js' => array('preprocess' => FALSE), + ), + ); + + return $element; +} + +/** + * Theme the contents of a Webform component select element. + */ +function theme_webform_component_select($variables) { + $element = $variables['element']; + + $rows = array(); + $header = array(); + if (!isset($element['#all_checkbox']) || $element['#all_checkbox']) { + $header = array(array('class' => array('select-all'), 'data' => ' ' . t('Include all components'))); + } + foreach (element_children($element) as $key) { + $rows[] = array( + theme('indentation', array('size' => $element[$key]['#indent'])) . drupal_render($element[$key]), + ); + } + + $element['#type'] = 'fieldset'; + $element['#attributes']['class'] = array('webform-component-select-table'); + if (!isset($element['#collapsible']) || $element['#collapsible']) { + $element['#attributes']['class'][] = 'collapsible'; + } + if (!isset($element['#collapsed']) || $element['#collapsed']) { + $element['#attributes']['class'][] = 'collapsed'; + } + + if (empty($rows)) { + $element['#children'] = t('No available components.'); + } + else { + $element['#children'] = '<div class="webform-component-select-wrapper">' . theme('table', array('header' => $header, 'rows' => $rows)) . '</div>'; + } + + return theme('fieldset', array('element' => $element)); +} + +/** + * Find a components parents within a node. + */ +function webform_component_parent_keys($node, $component) { + $parents = array($component['form_key']); + $pid = $component['pid']; + while ($pid) { + $parents[] = $node->webform['components'][$pid]['form_key']; + $pid = $node->webform['components'][$pid]['pid']; + } + return array_reverse($parents); +} + +/** + * Populate a component with the defaults for that type. + */ +function webform_component_defaults(&$component) { + if ($defaults = webform_component_invoke($component['type'], 'defaults')) { + foreach ($defaults as $key => $default) { + if (!isset($component[$key])) { + $component[$key] = $default; + } + } + foreach ($defaults['extra'] as $extra => $default) { + if (!isset($component['extra'][$extra])) { + $component['extra'][$extra] = $default; + } + } + $component['extra'] += array( + 'conditional_component' => '', + 'conditional_operator' => '=', + 'conditional_values' => '', + ); + } +} + +/** + * Validate an element value is unique with no duplicates in the database. + */ +function webform_validate_unique($element, $form_state) { + if ($element['#value'] !== '') { + $nid = $form_state['values']['details']['nid']; + $sid = $form_state['values']['details']['sid']; + $count = db_select('webform_submitted_data') + ->fields('webform_submitted_data', array('sid')) + ->condition('nid', $nid) + ->condition('cid', $element['#webform_component']['cid']) + ->condition('sid', $sid, '<>') + ->condition('data', $element['#value']) + ->range(0, 1) // More efficient than using countQuery() for data checks. + ->execute() + ->fetchField(); + if ($count) { + form_error($element, t('The value %value has already been submitted once for the %title field. You may have already submitted this form, or you need to use a different value.', array('%value' => $element['#value'], '%title' => $element['#title']))); + } + } +} diff --git a/sites/all/modules/webform/includes/webform.emails.inc b/sites/all/modules/webform/includes/webform.emails.inc new file mode 100644 index 0000000000000000000000000000000000000000..572accc77e5ba4adaa08cec9e5398ae6b7f160a4 --- /dev/null +++ b/sites/all/modules/webform/includes/webform.emails.inc @@ -0,0 +1,567 @@ +<?php +// $Id: webform.emails.inc,v 1.25 2010/12/30 02:57:19 quicksketch Exp $ + +/** + * @file + * Provides interface and database handling for e-mail settings of a webform. + * + * @author Nathan Haug <nate@lullabot.com> + */ + +/** + * Overview form of all components for this webform. + */ +function webform_emails_form($form, $form_state, $node) { + module_load_include('inc', 'webform', 'includes/webform.components'); + + $path = drupal_get_path('module', 'webform'); + $form = array( + '#tree' => TRUE, + '#node' => $node, + '#attached' => array( + 'css' => array($path . '/css/webform-admin.css' => array('preprocess' => FALSE, 'weight' => CSS_DEFAULT + 1)), + 'js' => array($path . '/js/webform-admin.js' => array('preprocess' => FALSE)), + ), + 'components' => array(), + ); + + $form['nid'] = array( + '#type' => 'value', + '#value' => $node->nid, + ); + + foreach ($node->webform['emails'] as $eid => $email) { + $email_addresses = array_filter(explode(',', check_plain($email['email']))); + foreach ($email_addresses as $key => $email_address) { + $email_addresses[$key] = webform_format_email_address($email_address, NULL, $node, NULL, FALSE); + } + + $form['emails'][$eid]['email'] = array( + '#markup' => implode('<br />', $email_addresses), + ); + $form['emails'][$eid]['subject'] = array( + '#markup' => check_plain(webform_format_email_subject($email['subject'], $node)), + ); + $form['emails'][$eid]['from'] = array( + '#markup' => check_plain(webform_format_email_address($email['from_address'], $email['from_name'], $node, NULL, FALSE)), + ); + } + + $form['add'] = array( + '#theme' => 'webform_email_add_form', + '#tree' => FALSE, + ); + + $form['add']['email_option'] = array( + '#type' => 'radios', + '#options' => array( + 'custom' => t('Address'), + 'component' => t('Component value'), + ), + '#default_value' => 'custom', + ); + + $form['add']['email_custom'] = array( + '#type' => 'textfield', + '#size' => 24, + '#maxlength' => 500, + ); + + $form['add']['email_component'] = array( + '#type' => 'select', + '#options' => webform_component_list($node, 'email_address', FALSE), + ); + + if (empty($form['add']['email_component']['#options'])) { + $form['add']['email_component']['#options'][''] = t('No available components'); + $form['add']['email_component']['#disabled'] = TRUE; + } + + $form['add_button'] = array( + '#type' => 'submit', + '#value' => t('Add'), + '#weight' => 45, + ); + + $form['#validate'] = array('webform_email_address_validate'); + + return $form; +} + +/** + * Theme the node components form. Use a table to organize the components. + * + * @param $form + * The form array. + * @return + * Formatted HTML form, ready for display. + */ +function theme_webform_emails_form($variables) { + $form = $variables['form']; + $node = $form['#node']; + + $header = array(t('E-mail to'), t('Subject'), t('From'), array('data' => t('Operations'), 'colspan' => 2)); + $rows = array(); + + if (!empty($form['emails'])) { + foreach (element_children($form['emails']) as $eid) { + // Add each component to a table row. + $rows[] = array( + drupal_render($form['emails'][$eid]['email']), + drupal_render($form['emails'][$eid]['subject']), + drupal_render($form['emails'][$eid]['from']), + l(t('Edit'), 'node/' . $node->nid . '/webform/emails/' . $eid), + l(t('Delete'), 'node/' . $node->nid . '/webform/emails/' . $eid . '/delete'), + ); + } + } + else { + $rows[] = array(array('data' => t('Currently not sending e-mails, add an e-mail recipient below.'), 'colspan' => 5)); + } + + // Add a row containing form elements for a new item. + $row_data = array( + array('colspan' => 3, 'data' => drupal_render($form['add'])), + array('colspan' => 2, 'data' => drupal_render($form['add_button'])), + ); + $rows[] = array('data' => $row_data, 'class' => array('webform-add-form')); + + $output = ''; + $output .= theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => 'webform-emails'))); + $output .= drupal_render_children($form); + return $output; +} + +/** + * Theme the add new e-mail settings form on the node/x/webform/emails page. + */ +function theme_webform_email_add_form($variables) { + $form = $variables['form']; + + // Add a default value to the custom e-mail textfield. + $form['email_custom']['#attributes']['rel'] = t('email@example.com'); + $form['email_custom']['#attributes']['class'] = array('webform-set-active', 'webform-default-value'); + $form['email_option']['custom']['#theme_wrappers'] = array('webform_inline_radio'); + $form['email_option']['custom']['#inline_element'] = drupal_render($form['email_custom']); + + // Render the component value. + $form['email_component']['#attributes']['class'] = array('webform-set-active'); + $form['email_option']['component']['#theme_wrappers'] = array('webform_inline_radio'); + $form['email_option']['component']['#inline_element'] = drupal_render($form['email_component']); + + return drupal_render_children($form); +} + +/** + * Submit handler for webform_emails_form(). + */ +function webform_emails_form_submit($form, &$form_state) { + if ($form_state['values']['email_option'] == 'custom') { + $email = $form_state['values']['email_custom']; + } + else { + $email = $form_state['values']['email_component']; + } + $form_state['redirect'] = array('node/' . $form['#node']->nid . '/webform/emails/new', array('query' => array('option' => $form_state['values']['email_option'], 'email' => trim($email)))); +} + +/** + * Form for configuring an e-mail setting and template. + */ +function webform_email_edit_form($form, $form_state, $node, $email = array()) { + module_load_include('inc', 'webform', 'includes/webform.components'); + + $path = drupal_get_path('module', 'webform'); + $form = array( + '#tree' => TRUE, + '#attached' => array( + 'css' => array($path . '/css/webform-admin.css' => array('preprocess' => FALSE, 'weight' => CSS_DEFAULT + 1)), + 'js' => array( + $path . '/js/webform-admin.js' => array('preprocess' => FALSE), + array('data' => array('webform' => array('revertConfirm' => t('Are you sure you want to revert any changes to your template back to the default?'))), 'type' => 'setting'), + ), + ), + ); + $form['node'] = array( + '#type' => 'value', + '#value' => $node, + ); + $form['eid'] = array( + '#type' => 'value', + '#value' => isset($email['eid']) ? $email['eid'] : NULL, + ); + + // All these fields work essentially the same, with a radio button set, + // a textfield for custom values, and a select list for a component. + foreach (array('email', 'subject', 'from_address', 'from_name') as $field) { + switch ($field) { + case 'email': + $default_value = NULL; + $title = t('E-mail to address'); + $description = t('Form submissions will be e-mailed to this address. Any email, select, or hidden form element may be selected as the recipient address. Multiple e-mail addresses may be separated by commas.'); + break; + case 'subject': + $default_value = _webform_filter_values(webform_variable_get('webform_default_subject'), $node); + $title = t('E-mail subject'); + $description = t('Any textfield, select, or hidden form element may be selected as the subject for e-mails.'); + break; + case 'from_address': + $default_value = _webform_filter_values(webform_variable_get('webform_default_from_address'), $node); + $title = t('E-mail from address'); + $description = t('Any email, select, or hidden form element may be selected as the sender\'s e-mail address.'); + break; + case 'from_name': + $default_value = _webform_filter_values(webform_variable_get('webform_default_from_name'), $node); + $title = t('E-mail from name'); + $description = t('Any textfield, select, or hidden form element may be selected as the sender\'s name for e-mails.'); + break; + } + + $form[$field . '_option'] = array( + '#title' => $title, + '#type' => 'radios', + '#default_value' => is_numeric($email[$field]) ? 'component' : ((empty($default_value) || ($email[$field] != 'default' && isset($email[$field]))) ? 'custom' : 'default'), + '#description' => $description, + ); + if (!empty($default_value)) { + $form[$field . '_option']['#options']['default'] = t('Default: %value', array('%value' => $default_value)); + } + $form[$field . '_option']['#options']['custom'] = t('Custom'); + $form[$field . '_option']['#options']['component'] = t('Component'); + + $form[$field . '_custom'] = array( + '#type' => 'textfield', + '#size' => 40, + '#default_value' => (!is_numeric($email[$field]) && $email[$field] != 'default') ? $email[$field] : NULL, + '#maxlength' => $field == 'email' ? 500 : 255, + ); + $options = webform_component_list($node, $field == 'from_address' || $field == 'email' ? 'email_address' : 'email_name', FALSE); + $form[$field . '_component'] = array( + '#type' => 'select', + '#default_value' => is_numeric($email[$field]) ? $email[$field] : NULL, + '#options' => empty($options) ? array('' => t('No available components')) : $options, + '#disabled' => empty($options) ? TRUE : FALSE, + '#weight' => 6, + ); + } + + // Do not show the "E-mail from name" if using the short e-mail format. + if (variable_get('webform_email_address_format', 'long') == 'short') { + $form['from_name_option']['#access'] = FALSE; + $form['from_name_custom']['#access'] = FALSE; + $form['from_name_component']['#access'] = FALSE; + } + + // Add the template fieldset. + $form['template'] = array( + '#type' => 'fieldset', + '#title' => t('E-mail template'), + '#collapsible' => TRUE, + '#collapsed' => !empty($email['cid']) && empty($email['template']), + '#description' => t('An e-mail template can customize the display of e-mails.'), + '#weight' => 15, + '#tree' => FALSE, + '#attributes' => array('id' => 'webform-template-fieldset'), + ); + + $form['template']['template_option'] = array( + '#type' => 'select', + '#options' => array( + 'default' => t('Default template'), + 'custom' => t('Custom template'), + ), + '#default_value' => $email['template'] == 'default' ? 'default' : 'custom', + ); + + $default_template = theme(array('webform_mail_' . $node->nid, 'webform_mail', 'webform_mail_message'), array('node' => $node, 'email' => $email)); + $template = $email['template'] == 'default' ? $default_template : $email['template']; + $form['template']['template'] = array( + '#type' => 'textarea', + '#rows' => max(10, min(20, count(explode("\n", $template)))), + '#default_value' => $template, + ); + + $form['template']['html'] = array( + '#type' => 'checkbox', + '#title' => t('Send e-mail as HTML'), + '#default_value' => $email['html'], + '#access' => module_exists('mimemail') && !variable_get('webform_format_override', 0), + ); + + $form['template']['attachments'] = array( + '#type' => 'checkbox', + '#title' => t('Include files as attachments'), + '#default_value' => $email['attachments'], + '#access' => module_exists('mimemail'), + ); + + $form['template']['tokens'] = array( + '#value' => theme('webform_token_help'), + ); + + $form['template']['components'] = array( + '#type' => 'select', + '#title' => t('Included e-mail values'), + '#options' => webform_component_list($node, 'email', TRUE), + '#default_value' => array_diff(array_keys($node->webform['components']), $email['excluded_components']), + '#multiple' => TRUE, + '#size' => 10, + '#description' => t('The selected components will be included in the %email_values token. Individual values may still be printed if explicitly specified as a %email[key] in the template.'), + '#process' => array('webform_component_select'), + ); + + // TODO: Allow easy re-use of existing templates. + $form['templates']['#tree'] = TRUE; + $form['templates']['default'] = array( + '#type' => 'textarea', + '#value' => $default_template, + '#resizable' => FALSE, + '#weight' => 19, + ); + + // Add the submit button. + $form['submit'] = array( + '#type' => 'submit', + '#value' => t('Save e-mail settings'), + '#weight' => 20, + ); + + $form['#validate'] = array('webform_email_address_validate', 'webform_email_edit_form_validate'); + + return $form; +} + +/** + * Theme the Webform mail settings section of the node form. + */ +function theme_webform_email_edit_form($variables) { + $form = $variables['form']; + + // Loop through fields, rendering them into radio button options. + foreach (array('email', 'subject', 'from_address', 'from_name') as $field) { + foreach (array('custom', 'component') as $option) { + $form[$field . '_' . $option]['#attributes']['class'] = array('webform-set-active'); + $form[$field . '_option'][$option]['#theme_wrappers'] = array('webform_inline_radio'); + $form[$field . '_option'][$option]['#inline_element'] = drupal_render($form[$field . '_' . $option]); + } + if (isset($form[$field . '_option']['#options']['default'])) { + $form[$field . '_option']['default']['#theme_wrappers'] = array('webform_inline_radio'); + } + } + + $details = ''; + $details .= drupal_render($form['subject_option']); + $details .= drupal_render($form['from_address_option']); + $details .= drupal_render($form['from_name_option']); + $form['details'] = array( + '#type' => 'fieldset', + '#title' => t('E-mail header details'), + '#weight' => 10, + '#children' => $details, + '#collapsible' => FALSE, + '#parents' => array('details'), + '#groups' => array('details' => array()), + '#attributes' => array(), + ); + + // Ensure templates are completely hidden. + $form['templates']['#prefix'] = '<div id="webform-email-templates" style="display: none">'; + $form['templates']['#suffix'] = '</div>'; + + // Re-sort the elements since we added the details fieldset. + $form['#sorted'] = FALSE; + $children = element_children($form, TRUE); + return drupal_render_children($form, $children); +} + +/** + * Validate handler for webform_email_edit_form() and webform_emails_form(). + */ +function webform_email_address_validate($form, &$form_state) { + if ($form_state['values']['email_option'] == 'custom') { + $email = trim($form_state['values']['email_custom']); + if (empty($email)) { + form_set_error('email_custom', t('When adding a new custom e-mail, the e-mail field is required.')); + } + else { + $emails = array_filter(explode(',', $email)); + foreach ($emails as $email) { + if (!valid_email_address(trim($email))) { + form_set_error('email_custom', t('The entered e-mail address "@email" does not appear valid.', array('@email' => $email))); + } + } + } + } +} + +/** + * Validate handler for webform_email_edit_form(). + */ +function webform_email_edit_form_validate($form, &$form_state) { + if ($form_state['values']['from_address_option'] == 'custom' && !valid_email_address($form_state['values']['from_address_custom'])) { + form_set_error('from_address_custom', t('The entered e-mail address "@email" does not appear valid.', array('@email' => $form_state['values']['from_address_custom']))); + } +} + +/** + * Submit handler for webform_email_edit_form(). + */ +function webform_email_edit_form_submit($form, &$form_state) { + // Merge the e-mail, name, address, and subject options into single values. + $email = array( + 'eid' => $form_state['values']['eid'], + 'nid' => $form_state['values']['node']->nid, + ); + + foreach (array('email', 'from_name', 'from_address', 'subject') as $field) { + $option = $form_state['values'][$field . '_option']; + if ($option == 'default') { + $email[$field] = 'default'; + } + else { + $email[$field] = $form_state['values'][$field . '_' . $option]; + } + } + + // Ensure templates are unaffected by differences in line breaks. + $form_state['values']['template'] = str_replace(array("\r", "\n"), array('', "\n"), $form_state['values']['template']); + $form_state['values']['templates']['default'] = str_replace(array("\r", "\n"), array('', "\n"), $form_state['values']['templates']['default']); + + // Set the template value. + // TODO: Support reuse of templates. + if (strcmp(trim($form_state['values']['templates']['default']), trim($form_state['values']['template'])) == 0) { + $email['template'] = 'default'; + } + else { + $email['template'] = $form_state['values']['template']; + } + + // Save the attachment and HTML options provided by MIME mail. + $email['html'] = empty($form_state['values']['html']) ? 0 : 1; + $email['attachments'] = empty($form_state['values']['attachments']) ? 0 : 1; + + // Save the list of included components. + // We actually maintain an *exclusion* list, so any new components will + // default to being included in the %email_values token until unchecked. + $included = array_keys(array_filter((array) $form_state['values']['components'])); + $excluded = array_diff(array_keys($form_state['values']['node']->webform['components']), $included); + $email['excluded_components'] = $excluded; + + if (empty($form_state['values']['eid'])) { + drupal_set_message(t('Email settings added.')); + $form_state['values']['eid'] = webform_email_insert($email); + } + else { + drupal_set_message(t('Email settings updated.')); + webform_email_update($email); + } + + $form_state['redirect'] = array('node/' . $form_state['values']['node']->nid . '/webform/emails'); +} + +/** + * Form for deleting an e-mail setting. + */ +function webform_email_delete_form($form, $form_state, $node, $email) { + $eid = $email['eid']; + + $form['node'] = array( + '#type' => 'value', + '#value' => $node, + ); + $form['email'] = array( + '#type' => 'value', + '#value' => $email, + ); + + $question = t('Delete e-mail settings?'); + if (is_numeric($email['email'])) { + $description = t('This will immediately delete the e-mail settings based on the @component component.', array('@component' => $email['email'])); + } + else { + $description = t('This will immediately delete the e-mail settings sending to the @address address.', array('@address' => $email['email'])); + } + + return confirm_form($form, $question, 'node/' . $node->nid . '/webform/emails', $description, t('Delete')); +} + +/** + * Submit handler for webform_component_delete_form(). + */ +function webform_email_delete_form_submit($form, &$form_state) { + drupal_set_message(t('E-mail settings deleted.')); + webform_email_delete($form_state['values']['node'], $form_state['values']['email']); + $form_state['redirect'] = 'node/' . $form_state['values']['node']->nid . '/webform/emails'; +} + +/** + * Load an e-mail setting from the database or initialize a new e-mail. + */ +function webform_email_load($eid, $nid) { + $node = node_load($nid); + if ($eid == 'new') { + $email = array( + 'email' => '', + 'subject' => 'default', + 'from_name' => 'default', + 'from_address' => 'default', + 'template' => 'default', + 'excluded_components' => array(), + 'html' => variable_get('webform_default_format', 0), + 'attachments' => 0, + ); + } + else { + $email = isset($node->webform['emails'][$eid]) ? $node->webform['emails'][$eid] : FALSE; + if (variable_get('webform_format_override', 0)) { + $email['html'] = variable_get('webform_default_format', 0); + } + } + + return $email; +} + +/** + * Insert a new e-mail setting into the database. + * + * @param $email + * An array of settings for sending an e-mail. + */ +function webform_email_insert($email) { + // TODO: This is not race-condition safe. Switch to using transactions? + if (!isset($email['eid'])) { + $next_id_query = db_select('webform_emails')->condition('nid', $email['nid']); + $next_id_query->addExpression('MAX(eid) + 1', 'eid'); + $email['eid'] = $next_id_query->execute()->fetchField(); + if ($email['eid'] == NULL) { + $email['eid'] = 1; + } + } + + $email['excluded_components'] = implode(',', $email['excluded_components']); + $success = drupal_write_record('webform_emails', $email); + + return $success ? $email['eid'] : FALSE; +} + +/** + * Update an existing e-mail setting with new values. + * + * @param $email + * An array of settings for sending an e-mail containing a nid, eid, and all + * other fields from the e-mail form. + */ +function webform_email_update($email) { + $email['excluded_components'] = implode(',', $email['excluded_components']); + return drupal_write_record('webform_emails', $email, array('nid', 'eid')); +} + +/** + * Delete an e-mail setting. + */ +function webform_email_delete($node, $email) { + db_delete('webform_emails') + ->condition('nid', $node->nid) + ->condition('eid', $email['eid']) + ->execute(); +} diff --git a/sites/all/modules/webform/includes/webform.export.inc b/sites/all/modules/webform/includes/webform.export.inc new file mode 100644 index 0000000000000000000000000000000000000000..c602ccb527e66b13946b70ba513e2adb3c9dd138 --- /dev/null +++ b/sites/all/modules/webform/includes/webform.export.inc @@ -0,0 +1,171 @@ +<?php +// $Id: webform.export.inc,v 1.7 2010/04/03 04:06:29 quicksketch Exp $ + +/** + * @file + * Provides several different handlers for exporting webform results. + */ + +/** + * Implementation of hook_webform_exporters(). + * + * Defines the exporters this module implements. + * + * @return + * An "array of arrays", keyed by content-types. The 'handler' slot + * should point to the PHP class implementing this flag. + */ +function webform_webform_exporters() { + return array( + 'delimited' => array( + 'title' => t('Delimited text'), + 'description' => t('A plain text file delimited by commas, tabs, or other characters.'), + 'handler' => 'webform_exporter_delimited', + ), + 'excel' => array( + 'title' => t('Microsoft Excel'), + 'description' => t('A file readable by Microsoft Excel.'), + 'handler' => 'webform_exporter_excel', + ), + ); +} + +/** + * Return a list of exporters suitable for display in a select list. + */ +function webform_export_list() { + $exporters = webform_export_fetch_definition(); + $list = array(); + foreach ($exporters as $name => $exporter) { + $list[$name] = $exporter['title']; + } + return $list; +} + +/** + * Returns a Webform exporter definition. + */ +function webform_export_fetch_definition($format = NULL) { + static $cache; + if (!isset($cache)) { + $cache = module_invoke_all('webform_exporters'); + } + + if (isset($format)) { + if (isset($cache[$format])) { + return $cache[$format]; + } + } + else { + return $cache; + } +} + +/** + * Instantiates a new Webform handler based on the format. + */ +function webform_export_create_handler($format, $options) { + $definition = webform_export_fetch_definition($format); + if (isset($definition) && class_exists($definition['handler'])) { + $handler = new $definition['handler']($options); + } + else { + // TODO: Create a default broken exporter. + $handler = new webform_exporter_broken($options); + } + + return $handler; +} + +class webform_exporter { + function add_row(&$file_handle, $data) { + } + + function set_headers($filename) { + drupal_add_http_header('Content-Type', 'application/force-download'); + drupal_add_http_header('Pragma', 'public'); + drupal_add_http_header('Cache-Control', 'max-age=0'); + } + + function bof(&$file_handle) { + } + + function eof(&$file_handle) { + } +} + +class webform_exporter_delimited extends webform_exporter { + var $delimiter; + + function webform_exporter_delimited($options) { + $this->delimiter = isset($options['delimiter']) ? $options['delimiter'] : ','; + // Convert tabs. + if ($this->delimiter == '\t') { + $this->delimiter = "\t"; + } + } + + function bof(&$file_handle) { + $output = ''; + + // Include at BOM at the beginning of the file for Little Endian. + // This makes tab-separated imports work correctly in MS Excel. + if (function_exists('mb_convert_encoding') && $this->delimiter == "\t") { + $output = chr(255) . chr(254); + } + @fwrite($file_handle, $output); + } + + function add_row(&$file_handle, $data) { + foreach ($data as $key => $value) { + // Escape inner quotes and wrap all contents in new quotes. + $data[$key] = '"' . str_replace('"', '""', $data[$key]) . '"'; + + // Remove <script> tags, which mysteriously cause Excel not to import. + $data[$key] = preg_replace('!<(/?script.*?)>!', '[$1]', $data[$key]); + } + $row = implode($this->delimiter, $data) . "\n"; + + if (function_exists('mb_convert_encoding')) { + $row = mb_convert_encoding($row, 'UTF-16LE', 'UTF-8'); + } + + @fwrite($file_handle, $row); + } + + function set_headers($filename) { + parent::set_headers($filename); + + // Convert tabs. + if ($this->delimiter == "\t") { + $extension = 'tsv'; + $content_type = 'text/tab-separated-values'; + } + else { + $extension = 'csv'; + $content_type = 'text/csv'; + } + + drupal_add_http_header('Content-Type', $content_type); + drupal_add_http_header('Content-Disposition', "attachment; filename=$filename.$extension"); + } +} + +/** + * The Excel exporter currently is just a tab-delimited export. + */ +class webform_exporter_excel extends webform_exporter_delimited { + var $delimiter; + + function webform_exporter_excel($options) { + $options['delimiter'] = '\t'; + parent::webform_exporter_delimited($options); + } + + function set_headers($filename) { + drupal_add_http_header('Content-Type', 'application/x-msexcel'); + drupal_add_http_header('Content-Disposition', "attachment; filename=$filename.xls"); + drupal_add_http_header('Pragma', 'public'); + drupal_add_http_header('Cache-Control', 'max-age=0'); + } +} diff --git a/sites/all/modules/webform/includes/webform.options.inc b/sites/all/modules/webform/includes/webform.options.inc new file mode 100644 index 0000000000000000000000000000000000000000..6cf809d3ce6f1dbf392fb3bc30c26b5965943d63 --- /dev/null +++ b/sites/all/modules/webform/includes/webform.options.inc @@ -0,0 +1,133 @@ +<?php +// $Id: webform.options.inc,v 1.1 2010/03/29 03:19:37 quicksketch Exp $ + +/** + * @file + * A collection of built-in select list options for Webform. + */ + +/** + * Private implementation of hook_webform_select_options_info(). + * + * @see webform_webform_select_options_info(). + */ +function _webform_options_info() { + $items = array(); + + $items['days'] = array( + 'title' => t('Days of the week'), + 'options callback' => 'webform_options_days', + 'file' => 'includes/webform.options.inc', + ); + + $items['countries'] = array( + 'title' => t('Countries'), + 'options callback' => 'webform_options_countries', + 'file' => 'includes/webform.options.inc', + ); + + $items['united_states'] = array( + 'title' => t('US states'), + 'options callback' => 'webform_options_united_states', + 'file' => 'includes/webform.options.inc', + ); + + return $items; +} + +/** + * Option list containing the days of the week. + */ +function webform_options_days() { + $days = array( + 'sunday' => t('Sunday'), + 'monday' => t('Monday'), + 'tuesday' => t('Tuesday'), + 'wednesday' => t('Wednesday'), + 'thursday' => t('Thursday'), + 'friday' => t('Friday'), + 'saturday' => t('Saturday'), + ); + + // Order according to site settings for first day. + if ($first_day = variable_get('date_first_day', 0)) { + $week = array_splice($days, $first_day); + $days = array_merge($week, $days); + } + + return $days; +} + +/** + * Options list containing country names. + */ +function webform_options_countries() { + include_once DRUPAL_ROOT . '/includes/locale.inc'; + return country_get_list(); +} + +/** + * Options list containing United States states and territories. + */ +function webform_options_united_states() { + return array( + 'AL' => t('Alabama'), + 'AK' => t('Alaska'), + 'AS' => t('American Samoa'), + 'AZ' => t('Arizona'), + 'AR' => t('Arkansas'), + 'CA' => t('California'), + 'CO' => t('Colorado'), + 'CT' => t('Connecticut'), + 'DE' => t('Delaware'), + 'DC' => t('District of Columbia'), + 'FL' => t('Florida'), + 'GA' => t('Georgia'), + 'GU' => t('Guam'), + 'HI' => t('Hawaii'), + 'ID' => t('Idaho'), + 'IL' => t('Illinois'), + 'IN' => t('Indiana'), + 'IA' => t('Iowa'), + 'KS' => t('Kansas'), + 'KY' => t('Kentucky'), + 'LA' => t('Louisiana'), + 'ME' => t('Maine'), + 'MH' => t('Marshall Islands'), + 'MD' => t('Maryland'), + 'MA' => t('Massachusetts'), + 'MI' => t('Michigan'), + 'MN' => t('Minnesota'), + 'MS' => t('Mississippi'), + 'MO' => t('Missouri'), + 'MT' => t('Montana'), + 'NE' => t('Nebraska'), + 'NV' => t('Nevada'), + 'NH' => t('New Hampshire'), + 'NJ' => t('New Jersey'), + 'NM' => t('New Mexico'), + 'NY' => t('New York'), + 'NC' => t('North Carolina'), + 'ND' => t('North Dakota'), + 'MP' => t('Northern Marianas Islands'), + 'OH' => t('Ohio'), + 'OK' => t('Oklahoma'), + 'OR' => t('Oregon'), + 'PW' => t('Palau'), + 'PA' => t('Pennsylvania'), + 'PR' => t('Puerto Rico'), + 'RI' => t('Rhode Island'), + 'SC' => t('South Carolina'), + 'SD' => t('South Dakota'), + 'TN' => t('Tennessee'), + 'TX' => t('Texas'), + 'UT' => t('Utah'), + 'VT' => t('Vermont'), + 'VI' => t('Virgin Islands'), + 'VA' => t('Virginia'), + 'WA' => t('Washington'), + 'WV' => t('West Virginia'), + 'WI' => t('Wisconsin'), + 'WY' => t('Wyoming'), + ); +} diff --git a/sites/all/modules/webform/includes/webform.pages.inc b/sites/all/modules/webform/includes/webform.pages.inc new file mode 100644 index 0000000000000000000000000000000000000000..a5a074ba118c6a6b1ca7235e93ab898d1593ed7a --- /dev/null +++ b/sites/all/modules/webform/includes/webform.pages.inc @@ -0,0 +1,331 @@ +<?php +// $Id: webform.pages.inc,v 1.19 2011/01/06 18:34:55 quicksketch Exp $ + +/** + * @file + * + * Menu callbacks and functions for configuring and editing webforms. + */ + +/** + * Main configuration form for editing a webform node. + */ +function webform_configure_form($form, &$form_state, $node) { + $path = drupal_get_path('module', 'webform'); + $form = array( + '#attached' => array( + 'css' => array($path . '/css/webform-admin.css' => array('preprocess' => FALSE, 'weight' => CSS_DEFAULT + 1)), + 'js' => array($path . '/js/webform-admin.js' => array('preprocess' => FALSE)), + ), + ); + + $form['nid'] = array( + '#type' => 'value', + '#value' => $node->nid, + ); + + /* Start Edit Form */ + $form['submission'] = array( + '#type' => 'fieldset', + '#title' => t('Submission settings'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#weight' => -4, + ); + + $form['submission']['confirmation'] = array( + '#type' => 'text_format', + '#title' => t('Confirmation message'), + '#description' => t('Message to be shown upon successful submission. If the redirection location is set to <em>Confirmation page</em> it will be shown on its own page, otherwise this displays as a message.'), + '#default_value' => $node->webform['confirmation'], + '#cols' => 40, + '#rows' => 10, + '#format' => $node->webform['confirmation_format'], + '#parents' => array('confirmation'), + ); + + // Redirection settings. + if (strpos($node->webform['redirect_url'], '<') === 0) { + $redirect = trim($node->webform['redirect_url'], '<>'); + // Redirection is set to front page. + if ($redirect == 'front') { + $redirect = 'url'; + $redirect_url = $node->webform['redirect_url']; + } + else { + $redirect_url = ''; + } + } + else { + $redirect = 'url'; + $redirect_url = $node->webform['redirect_url']; + } + $form['submission']['redirection'] = array( + '#type' => 'item', + '#title' => t('Redirection location'), + '#theme' => 'webform_advanced_redirection_form', + '#description' => t('Choose where to redirect the user upon successful submission.'), + ); + $form['submission']['redirection']['redirect']= array( + '#type' => 'radios', + '#default_value' => $redirect, + '#options' => array( + 'confirmation' => t('Confirmation page'), + 'url' => t('Custom URL'), + 'none' => t('No redirect (reload current page)'), + ), + ); + $form['submission']['redirection']['redirect_url'] = array( + '#type' => 'textfield', + '#title' => t('Redirect URL'), + '#description' => t('URL to redirect the user to upon successful submission.'), + '#default_value' => $redirect_url, + '#maxlength' => 255, + ); + + // Submission limit settings. + $form['submission']['submit_limit'] = array( + '#type' => 'item', + '#title' => t('Submission limit'), + '#theme' => 'webform_advanced_submit_limit_form', + '#description' => t('Limit the number of submissions <em>per user</em>. A user is identified by their user login if logged-in, or by their IP Address and Cookie if anonymous. Use of cookies may be modified in the global <a href="!url">Webform settings</a>.', array('!url' => url('admin/config/content/webform'))), + ); + $form['submission']['submit_limit']['enforce_limit'] = array( + '#type' => 'radios', + '#options' => array('no' => t('Unlimited'), 'yes' => 'Limit to !count submission(s) !timespan'), + '#default_value' => $node->webform['submit_limit'] == -1 ? 'no' : 'yes', + '#parents' => array('enforce_limit'), + ); + $form['submission']['submit_limit']['submit_limit'] = array( + '#type' => 'textfield', + '#maxlength' => 2, + '#size' => 2, + '#default_value' => $node->webform['submit_limit'] != -1 ? $node->webform['submit_limit'] : '', + '#parents' => array('submit_limit'), + ); + $form['submission']['submit_limit']['submit_interval'] = array( + '#type' => 'select', + '#options' => array( + '-1' => t('ever'), + '3600' => t('every hour'), + '86400' => t('every day'), + '604800' => t('every week'), + ), + '#default_value' => $node->webform['submit_interval'], + '#parents' => array('submit_interval'), + ); + + $form['submission']['status'] = array( + '#type' => 'radios', + '#title' => t('Status of this form'), + '#default_value' => $node->webform['status'] == 0 ? 0 : 1, + '#description' => t('Closing a form prevents any further submissions by any users.'), + '#parents' => array('status'), + '#options' => array(1 => t('Open'), 0 => t('Closed')), + ); + /* End Edit Form */ + + /* Start per-role submission control */ + $form['role_control'] = array( + '#type' => 'fieldset', + '#title' => t('Submission access'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#weight' => -3, + '#description' => t('These permissions affect which roles can submit this webform. It does not prevent access to the webform page. If needing to prevent access to the webform page entirely, use a content access module such as <a href="http://drupal.org/project/taxonomy_access">Taxonomy Access</a> or <a href="http://drupal.org/project/node_privacy_byrole">Node Privacy by Role</a>.'), + '#access' => variable_get('webform_submission_access_control', 1), + ); + $user_roles = user_roles(); + foreach ($user_roles as $rid => $rname) { + if ($rid == DRUPAL_ANONYMOUS_RID || $rid == DRUPAL_AUTHENTICATED_RID) { + continue; + } + $user_roles[$rid] = webform_tt("user:rid:$rid:name", $rname); + } + $form['role_control']['roles'] = array( + '#default_value' => $node->webform['roles'], + '#options' => $user_roles, + '#type' => 'checkboxes', + '#title' => t('Roles that can submit this webform'), + '#description' => t('The %authenticated role applies to any user signed into the site, regardless of other assigned roles.', array('%authenticated' => $user_roles[2])), + ); + /* End per-role submission control */ + + /* Start advanced settings form */ + $form['advanced'] = array( + '#type' => 'fieldset', + '#title' => t('Advanced settings'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + '#weight' => -1, + ); + $form['advanced']['block'] = array( + '#type' => 'checkbox', + '#title' => t('Available as block'), + '#default_value' => $node->webform['block'], + '#description' => t('If enabled this webform will be available as a block.'), + '#access' => user_access('administer blocks') || user_access('administer site configuration') || user_access('use panels dashboard'), + ); + $form['advanced']['teaser'] = array( + '#type' => 'checkbox', + '#title' => t('Show complete form in teaser'), + '#default_value' => $node->webform['teaser'], + '#description' => t('Display the entire form in the teaser display of this node.'), + ); + $form['advanced']['allow_draft'] = array( + '#type' => 'checkbox', + '#title' => t('Allow users to save a draft'), + '#default_value' => $node->webform['allow_draft'], + '#description' => t('Allow your users to save and finish the form later.'), + ); + $form['advanced']['submit_notice'] = array( + '#type' => 'checkbox', + '#title' => t('Show the notification about previous submissions.'), + '#default_value' => $node->webform['submit_notice'], + '#description' => t('Show the previous submissions notification that appears when users have previously submitted this form.'), + ); + $form['advanced']['submit_text'] = array( + '#type' => 'textfield', + '#title' => t('Submit button text'), + '#default_value' => $node->webform['submit_text'], + '#description' => t('By default the submit button on this form will have the label <em>Submit</em>. Enter a new title here to override the default.'), + ); + /* End Advanced Settings Form */ + + $form['submit'] = array( + '#type' => 'submit', + '#value' => t('Save configuration'), + '#weight' => 300, + ); + + return $form; +} + +/** + * Validate handler for webform_configure_form(). + */ +function webform_configure_form_validate($form, &$form_state) { + // Ensure the entered e-mail addresses are valid. + if (!empty($form_state['values']['email'])) { + $emails = explode(',', $form_state['values']['email']); + foreach ($emails as $email) { + if (!valid_email_address(trim($email))) { + form_error($form['submission']['redirect_url'], t('The entered email address %address is not a valid address.', array('%address' => $email))); + break; + } + } + } + + // Ensure the entered redirect URL is valid. + if ($form_state['values']['redirect'] == 'url') { + $redirect_url = trim($form_state['values']['redirect_url']); + if (empty($redirect_url)) { + form_error($form['submission']['redirection']['redirect_url'], t('A valid URL is required for custom redirection.')); + } + elseif (strpos($redirect_url, 'http') === 0 && !valid_url($redirect_url, TRUE)) { + form_error($form['submission']['redirection']['redirect_url'], t('The entered URL is not a valid address.')); + } + else { + form_set_value($form['submission']['redirection']['redirect_url'], $redirect_url, $form_state); + } + } + elseif ($form_state['values']['redirect'] == 'confirmation') { + form_set_value($form['submission']['redirection']['redirect_url'], '<confirmation>', $form_state); + } + else { + form_set_value($form['submission']['redirection']['redirect_url'], '<none>', $form_state); + } +} + +/** + * Submit handler for webform_configure_form(). + */ +function webform_configure_form_submit($form, &$form_state) { + $node = node_load($form_state['values']['nid']); + + // Save the confirmation. + $node->webform['confirmation'] = $form_state['values']['confirmation']['value']; + $node->webform['confirmation_format'] = $form_state['values']['confirmation']['format']; + + // Save the redirect URL + $node->webform['redirect_url'] = $form_state['values']['redirect_url']; + + // Overall form status. + $node->webform['status'] = $form_state['values']['status']; + + // Save roles. + $node->webform['roles'] = array_keys(array_filter($form_state['values']['roles'])); + + // Set the block option. + $node->webform['block'] = $form_state['values']['block']; + + // Set the Show complete form in teaser setting. + $node->webform['teaser'] = $form_state['values']['teaser']; + + // Set the draft option. + $node->webform['allow_draft'] = $form_state['values']['allow_draft']; + + // Set the submit limit to -1 if set to unlimited. + if ($form_state['values']['enforce_limit'] == 'no') { + $node->webform['submit_limit'] = -1; + $node->webform['submit_interval'] = -1; + } + else { + $node->webform['submit_limit'] = $form_state['values']['submit_limit']; + $node->webform['submit_interval'] = $form_state['values']['submit_interval']; + } + + // Set submit notice. + $node->webform['submit_notice'] = $form_state['values']['submit_notice']; + + // Set submit button text. + $node->webform['submit_text'] = $form_state['values']['submit_text']; + + node_save($node); + + drupal_set_message(t('The form settings have been updated.')); +} + +/** + * Theme the redirection setting on the webform node form. + */ +function theme_webform_advanced_redirection_form($variables) { + $form = $variables['form']; + // Add special class for setting the active radio button. + $form['redirect_url']['#attributes']['class'] = array('webform-set-active'); + + // Remove title and description for Redirect URL field. + $form['redirect_url']['#title'] = NULL; + $form['redirect_url']['#description'] = NULL; + + $form['redirect']['confirmation']['#theme_wrappers'] = array('webform_inline_radio'); + $form['redirect']['url']['#theme_wrappers'] = array('webform_inline_radio'); + $form['redirect']['none']['#theme_wrappers'] = array('webform_inline_radio'); + $form['redirect']['url']['#inline_element'] = $form['redirect']['url']['#title'] . ': ' . drupal_render($form['redirect_url']); + $form['redirect']['url']['#title'] = NULL; + + return drupal_render_children($form); +} + +/** + * Theme the submit limit fieldset on the webform node form. + */ +function theme_webform_advanced_submit_limit_form($variables) { + $form = $variables['form']; + $form['submit_limit']['#attributes']['class'] = array('webform-set-active'); + $form['submit_interval']['#attributes']['class'] = array('webform-set-active'); + // Remove div wrappers around limit options. + $form['submit_limit']['#theme_wrappers'] = array(); + $form['submit_interval']['#theme_wrappers'] = array(); + $replacements = array( + '!count' => drupal_render($form['submit_limit']), + '!timespan' => drupal_render($form['submit_interval']), + ); + + $form['enforce_limit']['no']['#theme_wrappers'] = array('webform_inline_radio'); + $form['enforce_limit']['yes']['#title'] = NULL; + $form['enforce_limit']['yes']['#inline_element'] = t('Limit to !count submission(s) !timespan', $replacements); + $form['enforce_limit']['yes']['#theme_wrappers'] = array('webform_inline_radio'); + + return drupal_render_children($form); +} diff --git a/sites/all/modules/webform/includes/webform.report.inc b/sites/all/modules/webform/includes/webform.report.inc new file mode 100644 index 0000000000000000000000000000000000000000..9458bbf3f41494eeeda3d46194679c8789e37543 --- /dev/null +++ b/sites/all/modules/webform/includes/webform.report.inc @@ -0,0 +1,712 @@ +<?php +// $Id: webform.report.inc,v 1.28 2011/01/07 20:24:08 quicksketch Exp $ + +/** + * @file + * This file includes helper functions for creating reports for webform.module + * + * @author Nathan Haug <nate@lullabot.com> + */ + +// All functions within this file need the webform.submissions.inc. +module_load_include('inc', 'webform', 'includes/webform.submissions'); + +/** + * Retrieve lists of submissions for a given webform. + */ +function webform_results_submissions($node, $user_filter, $pager_count) { + global $user; + + if (isset($_GET['results']) && is_numeric($_GET['results'])) { + $pager_count = $_GET['results']; + } + + $header = theme('webform_results_submissions_header', array('node' => $node)); + if ($user_filter) { + if ($user->uid) { + drupal_set_title(t('Submissions for %user', array('%user' => $user->name)), PASS_THROUGH); + } + else { + drupal_set_title(t('Your submissions')); + webform_disable_page_cache(); + } + webform_set_breadcrumb($node); + $submissions = webform_get_submissions(array('nid' => $node->nid, 'uid' => $user->uid), $header, $pager_count); + $count = webform_get_submission_count($node->nid, $user->uid); + } + else { + $submissions = webform_get_submissions($node->nid, $header, $pager_count); + $count = webform_get_submission_count($node->nid); + } + + $operation_column = end($header); + $operation_total = $operation_column['colspan']; + + $rows = array(); + foreach ($submissions as $sid => $submission) { + $row = array( + $submission->is_draft ? t('@sid (draft)', array('@sid' => $sid)) : $sid, + format_date($submission->submitted, 'small'), + ); + if (webform_results_access($node, $user)) { + $row[] = theme('username', array('account' => $submission)); + $row[] = $submission->remote_addr; + } + $row[] = l(t('View'), "node/$node->nid/submission/$sid"); + $operation_count = 1; + if (module_exists('print_pdf') && user_access('access PDF version')) { + $row[] = l(t('PDF'), "printpdf/$node->nid/submission/$sid", array('query' => drupal_get_destination())); + $operation_count++; + } + if (module_exists('print') && user_access('access print')) { + $row[] = l(t('Print'), "print/$node->nid/submission/$sid"); + $operation_count++; + } + if (webform_submission_access($node, $submission, 'edit', $user)) { + $row[] = l(t('Edit'), "node/$node->nid/submission/$sid/edit", array('query' => drupal_get_destination())); + $operation_count++; + } + if (webform_submission_access($node, $submission, 'delete', $user)) { + $row[] = l(t('Delete'), "node/$node->nid/submission/$sid/delete", array('query' => drupal_get_destination())); + $operation_count++; + } + if ($operation_count < $operation_total) { + $row[count($row) - 1] = array('data' => $row[count($row) - 1], 'colspan' => $operation_total - $operation_count + 1); + } + $rows[] = $row; + } + + $element['#theme'] = 'webform_results_submissions'; + $element['#node'] = $node; + $element['#submissions'] = $submissions; + $element['#total_count'] = $count; + $element['#pager_count'] = $pager_count; + $element['#attached']['css'] = array( + drupal_get_path('module', 'webform') . '/css/webform-admin.css' => array('preprocess' => FALSE, 'weight' => CSS_DEFAULT + 1), + ); + + $element['table']['#theme'] = 'table'; + $element['table']['#header'] = $header; + $element['table']['#rows'] = $rows; + $element['table']['#operation_total'] = $operation_total; + + return drupal_render($element); + +} + +/** + * Theme the list of links for selecting the number of results per page. + * + * @param $total_count + * The total number of results available. + * @param $pager_count + * The current number of results displayed per page. + */ +function theme_webform_results_per_page($variables) { + $total_count = $variables['total_count']; + $pager_count = $variables['pager_count']; + $output = ''; + + // Create a list of results-per-page options. + $counts = array( + '20' => '20', + '50' => '50', + '100' => '100', + '200' => '200', + '500' => '500', + '1000' => '1000', + '0' => t('All'), + ); + + $count_links = array(); + + foreach ($counts as $number => $text) { + if ($number < $total_count) { + $count_links[] = l($text, $_GET['q'], array('query' => array('results' => $number), 'attributes' => array('class' => array($pager_count == $number ? 'selected' : '')))); + } + } + + $output .= '<div class="webform-results-per-page">'; + if (count($count_links) > 1) { + $output .= t('Show !count results per page.', array('!count' => implode(' | ', $count_links))); + } + else { + $output .= t('Showing all results.'); + } + if ($total_count > 1) { + $output .= ' ' . t('@total results total.', array('@total' => $total_count)); + } + $output .= '</div>'; + + return $output; +} + +/** + * Theme the header of the submissions table. + * + * This is done in it's own function so that webform can retrieve the header and + * use it for sorting the results. + */ +function theme_webform_results_submissions_header($variables) { + $node = $variables['node']; + + $columns = array( + array('data' => t('#'), 'field' => 'sid', 'sort' => 'asc'), + array('data' => t('Submitted'), 'field' => 'submitted'), + ); + if (webform_results_access($node)) { + $columns[] = array('data' => t('User'), 'field' => 'name'); + $columns[] = array('data' => t('IP Address'), 'field' => 'remote_addr'); + } + $columns[] = array('data' => t('Operations'), 'colspan' => module_exists('print') ? 5 : 3); + + return $columns; +} + +/** + * Preprocess function for webform-results-submissions.tpl.php + */ +function template_preprocess_webform_results_submissions(&$vars) { + $vars['node'] = $vars['element']['#node']; + $vars['submissions'] = $vars['element']['#submissions']; + $vars['table'] = $vars['element']['table']; + $vars['total_count'] = $vars['element']['#total_count']; + $vars['pager_count'] = $vars['element']['#pager_count']; + $vars['is_submissions'] = (arg(2) == 'submissions')? 1 : 0; + + unset($vars['element']); +} + +/** + * Create a table containing all submitted values for a webform node. + */ +function webform_results_table($node, $pager_count = 0) { + if (isset($_GET['results']) && is_numeric($_GET['results'])) { + $pager_count = $_GET['results']; + } + + // Get all the submissions for the node. + $header = theme('webform_results_table_header', array('node' => $node)); + $submissions = webform_get_submissions($node->nid, $header, $pager_count); + $total_count = webform_get_submission_count($node->nid); + + $output = theme('webform_results_table', array('node' => $node, 'components' => $node->webform['components'], 'submissions' => $submissions, 'total_count' => $total_count, 'pager_count' => $pager_count)); + if ($pager_count) { + $output .= theme('pager'); + } + return $output; +} + +function theme_webform_results_table_header($variables) { + return array( + array('data' => t('#'), 'field' => 'sid', 'sort' => 'asc'), + array('data' => t('Submitted'), 'field' => 'submitted'), + array('data' => t('User'), 'field' => 'name'), + array('data' => t('IP Address'), 'field' => 'remote_addr'), + ); +} + +/** + * Theme the results table displaying all the submissions for a particular node. + * + * @param $node + * The node whose results are being displayed. + * @param $components + * An associative array of the components for this webform. + * @param $submissions + * An array of all submissions for this webform. + * @param $total_count + * The total number of submissions to this webform. + * @param $pager_count + * The number of results to be shown per page. + */ +function theme_webform_results_table($variables) { + drupal_add_css(drupal_get_path('module', 'webform') . '/css/webform-admin.css', array('weight' => CSS_THEME, 'preprocess' => FALSE)); + + $node = $variables['node']; + $components = $variables['components']; + $submissions = $variables['submissions']; + $total_count = $variables['total_count']; + $pager_count = $variables['pager_count']; + + $header = array(); + $rows = array(); + $cell = array(); + + // This header has to be generated seperately so we can add the SQL necessary. + // to sort the results. + $header = theme('webform_results_table_header', array('node' => $node)); + + // Generate a row for each submission. + foreach ($submissions as $sid => $submission) { + $cell[] = l($sid, 'node/' . $node->nid . '/submission/' . $sid); + $cell[] = format_date($submission->submitted, 'small'); + $cell[] = theme('username', array('account' => $submission)); + $cell[] = $submission->remote_addr; + $component_headers = array(); + + // Generate a cell for each component. + foreach ($node->webform['components'] as $component) { + $data = isset($submission->data[$component['cid']]['value']) ? $submission->data[$component['cid']]['value'] : NULL; + $submission_output = webform_component_invoke($component['type'], 'table', $component, $data); + if ($submission_output !== NULL) { + $component_headers[] = $component['name']; + $cell[] = $submission_output; + } + } + + $rows[] = $cell; + unset($cell); + } + if (!empty($component_headers)) { + $header = array_merge($header, $component_headers); + } + + if (count($rows) == 0) { + $rows[] = array(array('data' => t('There are no submissions for this form. <a href="!url">View this form</a>.', array('!url' => url('node/' . $node->nid))), 'colspan' => 4)); + } + + + $output = ''; + $output .= theme('webform_results_per_page', array('total_count' => $total_count, 'pager_count' => $pager_count)); + $output .= theme('table', array('header' => $header, 'rows' => $rows)); + return $output; +} + +/** + * Delete all submissions for a node. + * + * @param $nid + * The node id whose submissions will be deleted. + */ +function webform_results_clear($nid) { + $node = node_load($nid); + $submissions = webform_get_submissions($nid); + foreach ($submissions as $submission) { + webform_submission_delete($node, $submission); + } +} + +/** + * Confirmation form to delete all submissions for a node. + * + * @param $nid + * ID of node for which to clear submissions. + */ +function webform_results_clear_form($form, $form_state, $node) { + drupal_set_title(t('Clear Form Submissions')); + + $form = array(); + $form['nid'] = array('#type' => 'value', '#value' => $node->nid); + $question = t('Are you sure you want to delete all submissions for this form?'); + + return confirm_form($form, $question, 'node/' . $node->nid . '/webform-results', NULL, t('Clear'), t('Cancel')); +} + +function webform_results_clear_form_submit($form, &$form_state) { + webform_results_clear($form_state['values']['nid']); + $node = node_load($form_state['values']['nid']); + $title = $node->title; + + $message = t('Webform %title entries cleared.', array('%title' => $title)); + drupal_set_message($message); + watchdog('webform', $message); + $form_state['redirect'] = 'node/' . $form_state['values']['nid'] . '/webform-results'; +} + +/** + * Form to configure the download of CSV files. + */ +function webform_results_download_form($form, &$form_state, $node) { + module_load_include('inc', 'webform', 'includes/webform.export'); + module_load_include('inc', 'webform', 'includes/webform.components'); + + $form = array(); + + $form['node'] = array( + '#type' => 'value', + '#value' => $node, + ); + + $form['format'] = array( + '#type' => 'radios', + '#title' => t('Export format'), + '#options' => webform_export_list(), + '#default_value' => variable_get('webform_export_format', 'delimited'), + ); + + $form['delimiter'] = array( + '#type' => 'select', + '#title' => t('Delimited text format'), + '#description' => t('This is the delimiter used in the CSV/TSV file when downloading Webform results. Using tabs in the export is the most reliable method for preserving non-latin characters. You may want to change this to another character depending on the program with which you anticipate importing results.'), + '#default_value' => variable_get('webform_csv_delimiter', '\t'), + '#options' => array( + ',' => t('Comma (,)'), + '\t' => t('Tab (\t)'), + ';' => t('Semicolon (;)'), + ':' => t('Colon (:)'), + '|' => t('Pipe (|)'), + '.' => t('Period (.)'), + ' ' => t('Space ( )'), + ), + ); + + $form['select_options'] = array( + '#type' => 'fieldset', + '#title' => t('Select list options'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + ); + + $form['select_options']['select_keys'] = array( + '#type' => 'radios', + '#title' => t('Select keys'), + '#options' => array( + 0 => t('Full, human-readable options (values)'), + 1 => t('Short, raw options (keys)'), + ), + '#default_value' => 0, + '#description' => t('Choose which part of options should be displayed from key|value pairs.'), + ); + + $form['select_options']['select_format'] = array( + '#type' => 'radios', + '#title' => t('Select list format'), + '#options' => array( + 'separate' => t('Separate'), + 'compact' => t('Compact'), + ), + '#default_value' => 'separate', + '#attributes' => array('class' => array('webform-select-list-format')), + '#theme' => 'webform_results_download_select_format', + ); + + $csv_components = array( + 'info' => t('Submission information'), + 'serial' => '-' . t('Submission Number'), + 'sid' => '-' . t('Submission ID'), + 'time' => '-' . t('Time'), + 'draft' => '-' . t('Draft'), + 'ip_address' => '-' . t('IP Address'), + 'uid' => '-' . t('User ID'), + 'username' => '-' . t('Username'), + ); + $csv_components += webform_component_list($node, 'csv', TRUE); + + $form['components'] = array( + '#type' => 'select', + '#title' => t('Included export components'), + '#options' => $csv_components, + '#default_value' => array_keys($csv_components), + '#multiple' => TRUE, + '#size' => 10, + '#description' => t('The selected components will be included in the export.'), + '#process' => array('webform_component_select'), + ); + + $form['submit'] = array( + '#type' => 'submit', + '#value' => t('Download'), + ); + + return $form; +} + +function webform_results_download_form_submit(&$form, &$form_state) { + $options = array( + 'delimiter' => $form_state['values']['delimiter'], + 'components' => array_keys(array_filter($form_state['values']['components'])), + 'select_keys' => $form_state['values']['select_keys'], + 'select_format' => $form_state['values']['select_format'], + ); + webform_results_download($form_state['values']['node'], $form_state['values']['format'], $options); +} + +/** + * Theme the output of the export form. + */ +function theme_webform_results_download_form($variables) { + drupal_add_css(drupal_get_path('module', 'webform') . '/css/webform-admin.css', array('weight' => CSS_THEME, 'preprocess' => FALSE)); + + $form = $variables['form']; + + return drupal_render_children($form); +} + +/** + * Theme the output of the select list format radio buttons. + */ +function theme_webform_results_download_select_format($variables) { + drupal_add_css(drupal_get_path('module', 'webform') . '/css/webform-admin.css', array('weight' => CSS_THEME, 'preprocess' => FALSE)); + + $element = $variables['element']; + $output = ''; + + // Build an example table for the separate option. + $header = array(t('Option A'), t('Option B'), t('Option C')); + $rows = array( + array('X', '', ''), + array('X', '', 'X'), + array('', 'X', 'X'), + ); + + $element['separate']['#attributes']['class'] = array(); + $element['separate']['#description'] = theme('table', array('header' => $header, 'rows' => $rows)); + $element['separate']['#description'] .= t('Separate options are more suitable for building reports, graphs, and statistics in a spreadsheet application.'); + $output .= drupal_render($element['separate']); + + // Build an example table for the compact option. + $header = array(t('My select list')); + $rows = array( + array('Option A'), + array('Option A,Option C'), + array('Option B,Option C'), + ); + + $element['compact']['#attributes']['class'] = array(); + $element['compact']['#description'] = theme('table', array('header' => $header, 'rows' => $rows)); + $element['compact']['#description'] .= t('Compact options are more suitable for importing data into other systems.'); + $output .= drupal_render($element['compact']); + + return $output; +} + +/** + * Generate a Excel-readable CSV file containing all submissions for a Webform. + * + * The CSV requires that the data be presented in a flat file. In order + * to maximize usability to the Excel community and minimize subsequent + * stats or spreadsheet programming this program extracts data from the + * various records for a given session and presents them as a single file + * where each row represents a single record. + * The structure of the file is: + * Heading Line 1: Gives group overviews padded by empty cells to the + * next group. A group may be a question and corresponds + * to a component in the webform philosophy. Each group + * overview will have a fixed number of columns beneath it. + * Heading line 2: gives column headings + * Data line 1 ..... + * Data line 2 ..... + * + * An example of this format is given below. Note the columns have had spaces + * added so the columns line up. This is not the case with actual file where + * a column may be null. Note also, that multiple choice questions as produced + * by checkboxes or radio buttons have been presented as "yes" or "no" and the + * actual choice text is retained only in the header line 2. + * Data from text boxes and input fields are written out in the body of the table. + * + * Submission Details, , , ,Question 1, , ,.., ,Question 2, , ,.., ,Question n + * timestamp ,time,SID,userid,Choice 1 ,Choice 2,Choice 3,..,Choice n,Choice 1 ,Choice 2,Choice 3,..,Choice n,Comment + * 21 Feb 2005 ,1835,23 ,34 ,X , , ,.., ,X ,X ,X ,..,X ,My comment + * 23 Feb 2005 ,1125,24 ,89 ,X ,X , ,.., ,X ,X ,X ,..,X ,Hello + * ................................................................................................................................. + * 27 Feb 2005 ,1035,56 ,212 ,X , , ,.., ,X ,X ,X ,..,X ,How is this? + * + */ +function webform_results_download($node, $format = 'delimiter', $options = array()) { + module_load_include('inc', 'webform', 'includes/webform.export'); + module_load_include('inc', 'webform', 'includes/webform.components'); + + $submission_information = array( + 'serial' => t('Serial'), + 'sid' => t('SID'), + 'time' => t('Time'), + 'draft' => t('Draft'), + 'ip_address' => t('IP Address'), + 'uid' => t('UID'), + 'username' => t('Username'), + ); + + if (empty($options)) { + $options = array( + 'delimiter' => variable_get('webform_csv_delimiter', '\t'), + 'components' => array_keys($submission_information) + array_keys(webform_component_list($node, 'csv', TRUE)), + 'select_keys' => 0, + 'select_format' => 'separate', + ); + } + else { + foreach ($submission_information as $key => $label) { + if (!in_array($key, $options['components'])) { + unset($submission_information[$key]); + } + } + } + + // Open a new Webform exporter object. + $exporter = webform_export_create_handler($format, $options); + + $file_name = drupal_tempnam('temporary://', 'webform_'); + $handle = @fopen($file_name, 'w'); // The @ suppresses errors. + $exporter->bof($handle); + + // Fill in the header for the submission information (if any). + $header[2] = $header[1] = $header[0] = count($submission_information) ? array_fill(0, count($submission_information), '') : array(); + if (count($submission_information)) { + $header[0][0] = $node->title; + $header[1][0] = t('Submission Details'); + foreach (array_values($submission_information) as $column => $label) { + $header[2][$column] = $label; + } + } + + // Compile header information for components. + foreach ($options['components'] as $cid) { + if (isset($node->webform['components'][$cid])) { + $component = $node->webform['components'][$cid]; + + // Let each component determine its headers. + if (webform_component_feature($component['type'], 'csv')) { + $component_header = (array) webform_component_invoke($component['type'], 'csv_headers', $component, $options); + $header[0] = array_merge($header[0], (array) $component_header[0]); + $header[1] = array_merge($header[1], (array) $component_header[1]); + $header[2] = array_merge($header[2], (array) $component_header[2]); + } + } + } + + // Add headers to the file. + foreach ($header as $row) { + $exporter->add_row($handle, $row); + } + + // Get all the submissions for the node. + $submissions = webform_get_submissions($node->nid); + + // Generate a row for each submission. + $row_count = 0; + foreach ($submissions as $sid => $submission) { + $row_count++; + + $row = array(); + if (isset($submission_information['serial'])) { + $row[] = $row_count; + } + if (isset($submission_information['sid'])) { + $row[] = $sid; + } + if (isset($submission_information['time'])) { + $row[] = format_date($submission->submitted, 'small'); + } + if (isset($submission_information['draft'])) { + $row[] = $submission->is_draft; + } + if (isset($submission_information['ip_address'])) { + $row[] = $submission->remote_addr; + } + if (isset($submission_information['uid'])) { + $row[] = $submission->uid; + } + if (isset($submission_information['username'])) { + $row[] = $submission->name; + } + + foreach ($options['components'] as $cid) { + if (isset($node->webform['components'][$cid])) { + $component = $node->webform['components'][$cid]; + // Let each component add its data. + $raw_data = isset($submission->data[$cid]['value']) ? $submission->data[$cid]['value'] : NULL; + if (webform_component_feature($component['type'], 'csv')) { + $data = webform_component_invoke($component['type'], 'csv_data', $component, $options, $raw_data); + if (is_array($data)) { + $row = array_merge($row, array_values($data)); + } + else { + $row[] = empty($data) ? '' : $data; + } + } + } + } + + // Write data from submissions. + $data = $exporter->add_row($handle, $row); + } + + // Add the closing bytes. + $exporter->eof($handle); + + // Close the file. + @fclose($handle); + + $export_name = _webform_safe_name($node->title); + $exporter->set_headers($export_name); + @readfile($file_name); // The @ makes it silent. + @unlink($file_name); // Clean up, the @ makes it silent. + exit(); +} + +/** + * Provides a simple analysis of all submissions to a webform. + * + * @param $node + * The webform node on which to generate the analysis. + * @param $sids + * An array of submission IDs to which this analysis may be filtered. May be + * used to generate results that are per-user or other groups of submissions. + * @param $analysis_component + * A webform component. If passed in, additional information may be returned + * relating specifically to that component's analysis, such as a list of + * "Other" values within a select list. + */ +function webform_results_analysis($node, $sids = array(), $analysis_component = NULL) { + if (!is_array($sids)) { + $sids = array(); + } + + // If showing a component's details, we don't want to loose the menu tabs. + if ($analysis_component) { + $item = menu_get_item('node/' . $node->nid . '/webform-results/analysis'); + menu_set_item(NULL, $item); + } + + $components = isset($analysis_component) ? array($analysis_component['cid'] => $analysis_component) : $node->webform['components']; + $data = array(); + foreach ($components as $cid => $component) { + // Do component specific call. + if ($row_data = webform_component_invoke($component['type'], 'analysis', $component, $sids, isset($analysis_component))) { + $data[$cid] = $row_data; + } + } + + return theme('webform_results_analysis', array('node' => $node, 'data' => $data, 'sids' => $sids, 'component' => $analysis_component)); +} + +/** + * Output the content of the Analysis page. + * + * @see webform_results_analysis() + */ +function theme_webform_results_analysis($variables) { + $node = $variables['node']; + $data = $variables['data']; + $sids = $variables['sids']; + $analysis_component = $variables['component']; + + $rows = array(); + $question_number = 0; + $single = isset($analysis_component); + + $header = array( + $single ? $analysis_component['name'] : t('Q'), + array('data' => $single ? ' ' : t('responses'), 'colspan' => '10') + ); + + foreach ($data as $cid => $row_data) { + $question_number++; + + if (is_array($row_data)) { + $row = array(); + if (!$single) { + $row[] = array('data' => '<strong>' . $question_number . '</strong>', 'rowspan' => count($row_data) + 1, 'valign' => 'top'); + $row[] = array('data' => '<strong>' . check_plain($node->webform['components'][$cid]['name']) . '</strong>', 'colspan' => '10'); + } + $rows = array_merge($rows, array_merge(array($row), $row_data)); + } + } + + if (count($rows) == 0) { + $rows[] = array(array('data' => t('There are no submissions for this form. <a href="!url">View this form</a>.', array('!url' => url('node/' . $node->nid))), 'colspan' => 20)); + } + + return theme('table', array('header' => $header, 'rows' => $rows)); +} diff --git a/sites/all/modules/webform/includes/webform.submissions.inc b/sites/all/modules/webform/includes/webform.submissions.inc new file mode 100644 index 0000000000000000000000000000000000000000..35a1fa660e6596beab3702b7f23f2f423d032074 --- /dev/null +++ b/sites/all/modules/webform/includes/webform.submissions.inc @@ -0,0 +1,559 @@ +<?php +// $Id: webform.submissions.inc,v 1.33 2011/01/05 23:46:01 quicksketch Exp $ + +/** + * @file + * This file is loaded when handling submissions, either submitting new, + * editing, or viewing. It also contains all CRUD functions for submissions. + * + * @author Nathan Haug <nate@lullabot.com> + */ + +/** + * Given an array of submitted values, flatten it into data for a submission. + */ +function webform_submission_data($node, $submitted) { + $data = array(); + + foreach ($submitted as $cid => $values) { + // Don't save pagebreaks as submitted data. + if ($node->webform['components'][$cid]['type'] == 'pagebreak') { + continue; + } + + if (is_array($values)) { + $data[$cid]['value'] = $values; + } + else { + $data[$cid]['value'][0] = $values; + } + } + + return $data; +} + +function webform_submission_update($node, $submission) { + // Allow other modules to modify the submission before saving. + foreach (module_implements('webform_submission_presave') as $module) { + $function = $module . '_webform_submission_presave'; + $function($node, $submission); + } + + // Update the main submission info. + db_update('webform_submissions') + ->fields(array( + 'uid' => $submission->uid, + 'submitted' => $submission->submitted, + 'remote_addr' => $submission->remote_addr, + 'is_draft' => $submission->is_draft, + )) + ->condition('sid', $submission->sid) + ->execute(); + + // If is draft, only delete data for components submitted, to + // preserve any data from form pages not visited in this submission. + if ($submission->is_draft) { + db_delete('webform_submitted_data') + ->condition('sid', $submission->sid) + ->condition('cid', array_keys($submission->data), 'IN') + ->execute(); + } + else { + db_delete('webform_submitted_data') + ->condition('sid', $submission->sid) + ->execute(); + } + + // Then re-add submission data to the database. + $submission->is_new = FALSE; + webform_submission_insert($node, $submission); + + module_invoke_all('webform_submission_update', $node, $submission); + + return $submission->sid; +} + +function webform_submission_insert($node, $submission) { + // The submission ID may already be set if being called as an update. + if (!isset($submission->sid) && (!isset($submission->is_new) || $submission->is_new == FALSE)) { + // Allow other modules to modify the submission before saving. + foreach (module_implements('webform_submission_presave') as $module) { + $function = $module . '_webform_submission_presave'; + $function($node, $submission); + } + + $submission->sid = db_insert('webform_submissions') + ->fields(array( + 'nid' => $node->nid, + 'uid' => $submission->uid, + 'submitted' => $submission->submitted, + 'remote_addr' => $submission->remote_addr, + 'is_draft' => $submission->is_draft, + )) + ->execute(); + $is_new = TRUE; + } + + foreach ($submission->data as $cid => $values) { + foreach ($values['value'] as $delta => $value) { + db_insert('webform_submitted_data') + ->fields(array( + 'nid' => $node->nid, + 'sid' => $submission->sid, + 'cid' => $cid, + 'no' => $delta, + 'data' => is_null($value) ? '' : $value, + )) + ->execute(); + } + } + + // Invoke the insert hook after saving all the data. + if (isset($is_new)) { + module_invoke_all('webform_submission_insert', $node, $submission); + } + + return $submission->sid; +} + +/** + * Delete a single submission. + * + * @param $nid + * ID of node for which this webform was submitted. + * @param $sid + * ID of submission to be deleted (from webform_submitted_data). + */ +function webform_submission_delete($node, $submission) { + // Iterate through all components and let each do cleanup if necessary. + foreach ($node->webform['components'] as $cid => $component) { + if (isset($submission->data[$cid])) { + webform_component_invoke($component['type'], 'delete', $component, $submission->data[$cid]['value']); + } + } + + // Delete any anonymous session information. + if (isset($_SESSION['webform_submission'][$submission->sid])) { + unset($_SESSION['webform_submission'][$submission->sid]); + } + + db_delete('webform_submitted_data') + ->condition('nid', $node->nid) + ->condition('sid', $submission->sid) + ->execute(); + db_delete('webform_submissions') + ->condition('nid', $node->nid) + ->condition('sid', $submission->sid) + ->execute(); + + module_invoke_all('webform_submission_delete', $node, $submission); +} + +/** + * Confirm form to delete a single form submission. + * + * @param $form + * The new form array. + * @param $form_state + * The current form state. + * @param $node + * The node for which this webform was submitted. + * @param $submission + * The submission to be deleted (from webform_submitted_data). + */ +function webform_submission_delete_form($form, $form_state, $node, $submission) { + webform_set_breadcrumb($node, $submission); + + // Keep the NID and SID in the same location as the webform_client_form(). + // This helps mollom identify the same fields when deleting a submission. + $form['#tree'] = TRUE; + $form['details']['nid'] = array( + '#type' => 'value', + '#value' => $node->nid, + ); + $form['details']['sid'] = array( + '#type' => 'value', + '#value' => $submission->sid, + ); + + $question = t('Are you sure you want to delete this submission?'); + + if (isset($_GET['destination'])) { + $destination = $_GET['destination']; + } + elseif (webform_results_access($node)) { + $destination = 'node/' . $node->nid . '/webform-results'; + } + else { + $destination = 'node/' . $node->nid . '/submissions'; + } + + return confirm_form($form, NULL, $destination, $question, t('Delete'), t('Cancel')); +} + +function webform_submission_delete_form_submit($form, &$form_state) { + $node = node_load($form_state['values']['details']['nid']); + $submission = webform_get_submission($form_state['values']['details']['nid'], $form_state['values']['details']['sid']); + webform_submission_delete($node, $submission); + drupal_set_message(t('Submission deleted.')); + + $form_state['redirect'] = 'node/' . $node->nid . '/webform-results'; +} + +/** + * Menu title callback; Return the submission number as a title. + */ +function webform_submission_title($node, $submission) { + return t('Submission #@sid', array('@sid' => $submission->sid)); +} + +/** + * Menu callback; Present a Webform submission page for display or editing. + */ +function webform_submission_page($node, $submission, $format) { + global $user; + + // Add admin CSS. + drupal_add_css(drupal_get_path('module', 'webform') . '/css/webform-admin.css', array('group' => CSS_DEFAULT)); + + // Render the admin UI breadcrumb. + webform_set_breadcrumb($node, $submission); + + if ($format == 'form') { + $output = drupal_get_form('webform_client_form_' . $node->nid, $node, $submission); + } + else { + $output = webform_submission_render($node, $submission, NULL, $format); + } + + // Determine the mode in which we're displaying this submission. + $mode = ($format != 'form') ? 'display' : 'form'; + if (preg_match("!^q=print/!", $_SERVER['QUERY_STRING'])) { + $mode = 'print'; + } + if (preg_match("!^q=printpdf/!", $_SERVER['QUERY_STRING'])) { + $mode = 'pdf'; + } + + // Add navigation for administrators. + if (webform_results_access($node)) { + $navigation = ($mode != 'pdf') ? theme('webform_submission_navigation', array('node' => $node, 'submission' => $submission, 'mode' => $mode)) : NULL; + $information = theme('webform_submission_information', array('node' => $node, 'submission' => $submission)); + } + else { + $navigation = NULL; + $information = NULL; + } + + // Disable the page cache for anonymous users viewing or editing submissions. + if (!$user->uid) { + webform_disable_page_cache(); + } + + return theme('webform_submission_page', array('node' => $node, 'submission' => $submission, 'submission_content' => $output, 'submission_navigation' => $navigation, 'submission_information' => $information)); +} + +/** + * Print a Webform submission for display on a page or in an e-mail. + */ +function webform_submission_render($node, $submission, $email, $format) { + $component_tree = array(); + $renderable = array(); + $page_count = 1; + $excluded_components = isset($email) ? $email['excluded_components'] : array(); + + // Meta data that may be useful for modules implementing + // hook_webform_submission_render_alter(). + $renderable['#node'] = $node; + $renderable['#submission'] = $submission; + $renderable['#email'] = $email; + $renderable['#format'] = $format; + + // Set the theme function for submissions. + $renderable['#theme'] = array('webform_submission_' . $node->nid, 'webform_submission'); + + _webform_components_tree_build($node->webform['components'], $component_tree, 0, $page_count); + + // Recursively add components to the form. + foreach ($component_tree['children'] as $cid => $component) { + if (!in_array($cid, $excluded_components) && _webform_client_form_rule_check($node, $component, $component['page_num'], NULL, $submission)) { + _webform_client_form_add_component($node, $component, NULL, $renderable, $renderable, NULL, $submission, $format); + } + } + + drupal_alter('webform_submission_render', $renderable); + return drupal_render($renderable); +} + +/** + * Return all the submissions for a particular node. + * + * @param $filters + * An array of filters to apply to this query. Usually in the format + * array('nid' => $nid, 'uid' => $uid). A single integer may also be passed + * in, which will be equivalent to specifying a $nid filter. + * @param $header + * If the results of this fetch will be used in a sortable + * table, pass the array header of the table. + * @param $pager_count + * Optional. The number of submissions to include in the results. + */ +function webform_get_submissions($filters = array(), $header = NULL, $pager_count = 0) { + $submissions = array(); + + if (!is_array($filters)) { + $filters = array('nid' => $filters); + } + + // No need to find SIDs if it was given to us. + if (isset($filters['sid'])) { + $sids = array($filters['sid']); + } + // Build the list of SIDs that need to be retrieved. + else { + $pager_query = db_select('webform_submissions')->fields('webform_submissions', array('sid')); + foreach ($filters as $column => $value) { + $pager_query->condition($column, $value); + } + + if (isset($filters['uid']) && $filters['uid'] === 0) { + if (!empty($_SESSION['webform_submission'])) { + $anonymous_sids = array_keys($_SESSION['webform_submission']); + $pager_query->condition('sid', $anonymous_sids, 'IN'); + } + else { + $pager_query->condition('sid', 0); + } + } + + if (is_array($header)) { + $pager_query->extend('TableSort')->orderByHeader($header); + } + else { + $pager_query->orderBy('sid', 'ASC'); + } + + if ($pager_count) { + $pager_query->extend('PagerDefault')->limit($pager_count); + } + $result = $pager_query->execute(); + + $sids = array(); + foreach ($result as $row) { + $sids[] = $row->sid; + $submissions[$row->sid] = FALSE; + } + } + + // If there are no submissions being retrieved, return an empty array. + if (empty($sids)) { + return $submissions; + } + + // Query the required submission data. + $query = db_select('webform_submissions', 's'); + $query->leftJoin('webform_submitted_data', 'sd', 'sd.sid = s.sid'); + $query->leftJoin('users', 'u', 'u.uid = s.uid'); + $query + ->fields('s') + ->fields('sd') + ->fields('u', array('name')) + ->condition('s.sid', $sids, 'IN') + ->orderBy('sd.sid', 'ASC') + ->orderBy('sd.cid', 'ASC') + ->orderBy('sd.no', 'ASC'); + $result = $query->execute(); + + // Convert the queried rows into submissions. + $previous = 0; + foreach ($result as $row) { + if ($row->sid != $previous) { + $submissions[$row->sid] = new stdClass(); + $submissions[$row->sid]->sid = $row->sid; + $submissions[$row->sid]->nid = $row->nid; + $submissions[$row->sid]->submitted = $row->submitted; + $submissions[$row->sid]->remote_addr = $row->remote_addr; + $submissions[$row->sid]->uid = $row->uid; + $submissions[$row->sid]->name = $row->name; + $submissions[$row->sid]->is_draft = $row->is_draft; + } + $submissions[$row->sid]->data[$row->cid]['value'][$row->no] = $row->data; + $previous = $row->sid; + } + + foreach (module_implements('webform_submission_load') as $module) { + $function = $module . '_webform_submission_load'; + $function($submissions); + } + + return $submissions; +} + +/** + * Return a count of the total number of submissions for a node. + * + * @param $nid + * The node ID for which submissions are being fetched. + * @param $uid + * Optional; the user ID to filter the submissions by. + * @return + * An integer value of the number of submissions. + */ +function webform_get_submission_count($nid, $uid = NULL, $reset = FALSE) { + static $counts; + + if (!isset($counts[$nid][$uid]) || $reset) { + $query = db_select('webform_submissions') + ->condition('nid', $nid); + $arguments = array($nid); + if ($uid !== NULL) { + $query->condition('uid', $uid); + } + if ($uid === 0) { + $submissions = isset($_SESSION['webform_submission']) ? $_SESSION['webform_submission'] : array(); + $query->condition('sid', $submissions, 'IN'); + } + + $counts[$nid][$uid] = $query->countQuery()->execute()->fetchField(); + } + return $counts[$nid][$uid]; +} + +/** + * Fetch a specified submission for a webform node. + */ +function webform_get_submission($nid, $sid, $reset = FALSE) { + static $submissions = array(); + + if ($reset) { + $submissions = array(); + if (!isset($sid)) { + return; + } + } + + // Load the submission if needed. + if (!isset($submissions[$sid])) { + $new_submissions = webform_get_submissions(array('sid' => $sid)); + $submissions[$sid] = $new_submissions[$sid]; + } + + // Ensure that the requested NID matches the submission NID. + if ($submissions[$sid]->nid != $nid) { + return FALSE; + } + + return $submissions[$sid]; +} + +function _webform_submission_spam_check($to, $subject, $from, $headers = array()) { + $headers = implode('\n', (array)$headers); + // Check if they are attempting to spam using a bcc or content type hack. + if (preg_match('/(b?cc\s?:)|(content\-type:)/i', $to . "\n" . $subject . "\n" . $from . "\n" . $headers)) { + return TRUE; // Possible spam attempt. + } + return FALSE; // Not spam. +} + +/** + * Check if the current user has exceeded the limit on this form. + * + * @param $node + * The webform node to be checked. + * @return + * Boolean TRUE if the user has exceeded their limit. FALSE otherwise. + */ +function _webform_submission_limit_check($node) { + global $user; + + // Check if submission limiting is enabled. + if ($node->webform['submit_limit'] == '-1') { + return FALSE; // No check enabled. + } + + // Retrieve submission data for this IP address or username from the database. + $query = db_select('webform_submissions') + ->condition('nid', $node->nid) + ->condition('is_draft', 0); + + if ($node->webform['submit_interval'] != -1) { + $query->condition('submitted', REQUEST_TIME - $node->webform['submit_interval'], '>'); + } + + if ($user->uid) { + $query->condition('uid', $user->uid); + } + else { + $query->condition('remote_addr', ip_address()); + } + + // Fetch all the entries from the database within the submit interval with this username and IP. + $num_submissions_database = $query->countQuery()->execute()->fetchField(); + + // Double check the submission history from the users machine using cookies. + $num_submissions_cookie = 0; + if ($user->uid == 0 && variable_get('webform_use_cookies', 0)) { + $cookie_name = 'webform-' . $node->nid; + + if (isset($_COOKIE[$cookie_name]) && is_array($_COOKIE[$cookie_name])) { + foreach ($_COOKIE[$cookie_name] as $key => $timestamp) { + if ($node->webform['submit_interval'] != -1 && $timestamp <= REQUEST_TIME - $node->webform['submit_interval']) { + // Remove the cookie if past the required time interval. + setcookie($cookie_name . '[' . $key . ']', '', 0); + } + } + // Count the number of submissions recorded in cookies. + $num_submissions_cookie = count($_COOKIE[$cookie_name]); + } + else { + $num_submissions_cookie = 0; + } + } + + if ($num_submissions_database >= $node->webform['submit_limit'] || $num_submissions_cookie >= $node->webform['submit_limit']) { + // Limit exceeded. + return TRUE; + } + + // Limit not exceeded. + return FALSE; +} + +/** + * Preprocess function for webform-submission.tpl.php. + */ +function template_preprocess_webform_submission(&$vars) { + $vars['node'] = $vars['renderable']['#node']; + $vars['submission'] = $vars['renderable']['#submission']; + $vars['email'] = $vars['renderable']['#email']; + $vars['format'] = $vars['renderable']['#format']; +} + +/** + * Preprocess function for webform-submission-navigation.tpl.php. + */ +function template_preprocess_webform_submission_navigation(&$vars) { + $start_path = ($vars['mode'] == 'print') ? 'print/' : 'node/'; + + $previous_query = db_select('webform_submissions') + ->condition('nid', $vars['node']->nid) + ->condition('sid', $vars['submission']->sid, '<'); + $previous_query->addExpression('MAX(sid)'); + + $next_query = db_select('webform_submissions') + ->condition('nid', $vars['node']->nid) + ->condition('sid', $vars['submission']->sid, '>'); + $next_query->addExpression('MIN(sid)'); + + $vars['previous'] = $previous_query->execute()->fetchField(); + $vars['next'] = $next_query->execute()->fetchField(); + $vars['previous_url'] = $start_path . $vars['node']->nid . '/submission/' . $vars['previous'] . ($vars['mode'] == 'form' ? '/edit' : ''); + $vars['next_url'] = $start_path . $vars['node']->nid . '/submission/' . $vars['next'] . ($vars['mode'] == 'form' ? '/edit' : ''); +} + +/** + * Preprocess function for webform-submission-navigation.tpl.php. + */ +function template_preprocess_webform_submission_information(&$vars) { + $vars['account'] = user_load($vars['submission']->uid); +} diff --git a/sites/all/modules/webform/js/select-admin.js b/sites/all/modules/webform/js/select-admin.js new file mode 100644 index 0000000000000000000000000000000000000000..76d3d2ca8a9b6bbaba114fa2c2cfa10a737c5cda --- /dev/null +++ b/sites/all/modules/webform/js/select-admin.js @@ -0,0 +1,57 @@ +// $Id: select-admin.js,v 1.2 2010/04/10 22:02:11 quicksketch Exp $ + +/** + * @file + * Enhancements for select list configuration options. + */ + +(function ($) { + +Drupal.behaviors.webformSelectLoadOptions = {}; +Drupal.behaviors.webformSelectLoadOptions.attach = function(context) { + settings = Drupal.settings; + + $('#edit-extra-options-source', context).change(function() { + var url = settings.webform.selectOptionsUrl + '/' + this.value; + $.ajax({ + url: url, + success: Drupal.webform.selectOptionsLoad, + dataType: 'json' + }); + }); +} + +Drupal.webform = Drupal.webform || {}; + +Drupal.webform.selectOptionsOriginal = false; +Drupal.webform.selectOptionsLoad = function(result) { + if (Drupal.optionsElement) { + if (result.options) { + // Save the current select options the first time a new list is chosen. + if (Drupal.webform.selectOptionsOriginal === false) { + Drupal.webform.selectOptionsOriginal = $(Drupal.optionElements[result.elementId].manualOptionsElement).val(); + } + $(Drupal.optionElements[result.elementId].manualOptionsElement).val(result.options); + Drupal.optionElements[result.elementId].disable(); + Drupal.optionElements[result.elementId].updateWidgetElements(); + } + else { + Drupal.optionElements[result.elementId].enable(); + if (Drupal.webform.selectOptionsOriginal) { + $(Drupal.optionElements[result.elementId].manualOptionsElement).val(Drupal.webform.selectOptionsOriginal); + Drupal.optionElements[result.elementId].updateWidgetElements(); + Drupal.webform.selectOptionsOriginal = false; + } + } + } + else { + if (result.options) { + $('#' + result.elementId).val(result.options).attr('readonly', 'readonly'); + } + else { + $('#' + result.elementId).attr('readonly', ''); + } + } +} + +})(jQuery); diff --git a/sites/all/modules/webform/js/webform-admin.js b/sites/all/modules/webform/js/webform-admin.js new file mode 100644 index 0000000000000000000000000000000000000000..468ab8785f2788cd4d649e301d6c2a741162a278 --- /dev/null +++ b/sites/all/modules/webform/js/webform-admin.js @@ -0,0 +1,104 @@ +// $Id: webform-admin.js,v 1.8 2010/12/30 02:57:19 quicksketch Exp $ +(function ($) { + +/** + * Webform node form interface enhancments. + */ + +Drupal.behaviors.webformAdmin = {}; +Drupal.behaviors.webformAdmin.attach = function(context) { + // Apply special behaviors to fields with default values. + Drupal.webform.defaultValues(context); + // On click or change, make a parent radio button selected. + Drupal.webform.setActive(context); + // Update the template select list upon changing a template. + Drupal.webform.updateTemplate(context); + // Enhance the normal tableselect.js file to support indentations. + Drupal.webform.tableSelectIndentation(context); +} + +Drupal.webform = Drupal.webform || {}; + +Drupal.webform.defaultValues = function(context) { + var $fields = $('.webform-default-value:not(.error)', context); + var $forms = $fields.parents('form:first'); + $fields.each(function() { + this.defaultValue = $(this).attr('rel'); + if (this.value != this.defaultValue) { + $(this).removeClass('webform-default-value'); + } + $(this).focus(function() { + if (this.value == this.defaultValue) { + this.value = ''; + $(this).removeClass('webform-default-value'); + } + }); + $(this).blur(function() { + if (this.value == '') { + $(this).addClass('webform-default-value'); + this.value = this.defaultValue; + } + }); + }); + + // Clear all the form elements before submission. + $forms.submit(function() { + $fields.focus(); + }); +}; + +Drupal.webform.setActive = function(context) { + var setActive = function(e) { + $('.form-radio', $(this).parent().parent()).attr('checked', true); + e.preventDefault(); + }; + $('.webform-set-active', context).click(setActive).change(setActive); +}; + +Drupal.webform.updateTemplate = function(context) { + var defaultTemplate = $('#edit-templates-default').val(); + var $templateSelect = $('#webform-template-fieldset select#edit-template-option', context); + var $templateTextarea = $('#webform-template-fieldset textarea:visible', context); + + var updateTemplateSelect = function() { + if ($(this).val() == defaultTemplate) { + $templateSelect.val('default'); + } + else { + $templateSelect.val('custom'); + } + } + + var updateTemplateText = function() { + if ($(this).val() == 'default' && $templateTextarea.val() != defaultTemplate) { + if (confirm(Drupal.settings.webform.revertConfirm)) { + $templateTextarea.val(defaultTemplate); + } + else { + $(this).val('custom'); + } + } + } + + $templateTextarea.keyup(updateTemplateSelect); + $templateSelect.change(updateTemplateText); +} + +Drupal.webform.tableSelectIndentation = function(context) { + var $tables = $('th.select-all', context).parents('table'); + $tables.find('input.form-checkbox').change(function() { + var $rows = $(this).parents('table:first').find('tr'); + var row = $(this).parents('tr:first').get(0); + var rowNumber = $rows.index(row); + var rowTotal = $rows.size(); + var indentLevel = $(row).find('div.indentation').size(); + for (var n = rowNumber + 1; n < rowTotal; n++) { + if ($rows.eq(n).find('div.indentation').size() <= indentLevel) { + break; + } + $rows.eq(n).find('input.form-checkbox').attr('checked', this.checked); + } + }); +} + +})(jQuery); diff --git a/sites/all/modules/webform/js/webform.js b/sites/all/modules/webform/js/webform.js new file mode 100644 index 0000000000000000000000000000000000000000..29919badc08f071f17d0936adeecfb10eef5b52b --- /dev/null +++ b/sites/all/modules/webform/js/webform.js @@ -0,0 +1,70 @@ +// $Id: webform.js,v 1.5 2010/08/30 16:58:33 quicksketch Exp $ + +/** + * JavaScript behaviors for the front-end display of webforms. + */ + +(function ($) { + +Drupal.behaviors.webform = Drupal.behaviors.webform || {}; + +Drupal.behaviors.webform.attach = function(context) { + // Calendar datepicker behavior. + Drupal.webform.datepicker(context); +}; + +Drupal.webform = Drupal.webform || {}; + +Drupal.webform.datepicker = function(context) { + $('div.webform-datepicker').each(function() { + var $webformDatepicker = $(this); + var $calendar = $webformDatepicker.find('input.webform-calendar'); + var startYear = $calendar[0].className.replace(/.*webform-calendar-start-(\d+).*/, '$1'); + var endYear = $calendar[0].className.replace(/.*webform-calendar-end-(\d+).*/, '$1'); + var firstDay = $calendar[0].className.replace(/.*webform-calendar-day-(\d).*/, '$1'); + + // Ensure that start comes before end for datepicker. + if (startYear > endYear) { + var greaterYear = startYear; + startYear = endYear; + endYear = greaterYear; + } + + // Set up the jQuery datepicker element. + $calendar.datepicker({ + dateFormat: 'yy-mm-dd', + yearRange: startYear + ':' + endYear, + firstDay: parseInt(firstDay), + onSelect: function(dateText, inst) { + var date = dateText.split('-'); + $webformDatepicker.find('select.year, input.year').val(+date[0]); + $webformDatepicker.find('select.month').val(+date[1]); + $webformDatepicker.find('select.day').val(+date[2]); + }, + beforeShow: function(input, inst) { + // Get the select list values. + var year = $webformDatepicker.find('select.year, input.year').val(); + var month = $webformDatepicker.find('select.month').val(); + var day = $webformDatepicker.find('select.day').val(); + + // If empty, default to the current year/month/day in the popup. + var today = new Date(); + year = year ? year : today.getFullYear(); + month = month ? month : today.getMonth() + 1; + day = day ? day : today.getDate(); + + // jQuery UI Datepicker will read the input field and base its date off + // of that, even though in our case the input field is a button. + $(input).val(year + '-' + month + '-' + day); + } + }); + + // Prevent the calendar button from submitting the form. + $calendar.click(function(event) { + $(this).focus(); + event.preventDefault(); + }); + }); +} + +})(jQuery); \ No newline at end of file diff --git a/sites/all/modules/webform/templates/webform-calendar.tpl.php b/sites/all/modules/webform/templates/webform-calendar.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..3a3a10b573bf3f97fadae551704b76253a8c380d --- /dev/null +++ b/sites/all/modules/webform/templates/webform-calendar.tpl.php @@ -0,0 +1,9 @@ +<?php +// $Id: webform-calendar.tpl.php,v 1.2 2010/04/11 06:14:20 quicksketch Exp $ + +/** + * @file + * Theme the button for the date component date popup. + */ +?> +<input type="image" src="<?php print base_path() . drupal_get_path('module', 'webform') . '/images/calendar.png'; ?>" class="<?php print implode(' ', $calendar_classes); ?>" title="<?php print t('Open popup calendar'); ?>" /> diff --git a/sites/all/modules/webform/templates/webform-confirmation.tpl.php b/sites/all/modules/webform/templates/webform-confirmation.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..a76cce0bd1fd90a28534f75c98fa196060894fa4 --- /dev/null +++ b/sites/all/modules/webform/templates/webform-confirmation.tpl.php @@ -0,0 +1,30 @@ +<?php +// $Id: webform-confirmation.tpl.php,v 1.2 2010/02/11 22:05:27 quicksketch Exp $ + +/** + * @file + * Customize confirmation screen after successful submission. + * + * This file may be renamed "webform-confirmation-[nid].tpl.php" to target a + * specific webform e-mail on your site. Or you can leave it + * "webform-confirmation.tpl.php" to affect all webform confirmations on your + * site. + * + * Available variables: + * - $node: The node object for this webform. + * - $confirmation_message: The confirmation message input by the webform author. + * - $sid: The unique submission ID of this submission. + */ +?> + +<div class="webform-confirmation"> + <?php if ($confirmation_message): ?> + <?php print $confirmation_message ?> + <?php else: ?> + <p><?php print t('Thank you, your submission has been received.'); ?></p> + <?php endif; ?> +</div> + +<div class="links"> + <a href="<?php print url('node/'. $node->nid) ?>"><?php print t('Go back to the form') ?></a> +</div> diff --git a/sites/all/modules/webform/templates/webform-form.tpl.php b/sites/all/modules/webform/templates/webform-form.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..7606baab62a7703560aa621f49c14bb606ae5243 --- /dev/null +++ b/sites/all/modules/webform/templates/webform-form.tpl.php @@ -0,0 +1,40 @@ +<?php +// $Id: webform-form.tpl.php,v 1.2 2010/03/08 01:04:42 quicksketch Exp $ + +/** + * @file + * Customize the display of a complete webform. + * + * This file may be renamed "webform-form-[nid].tpl.php" to target a specific + * webform on your site. Or you can leave it "webform-form.tpl.php" to affect + * all webforms on your site. + * + * Available variables: + * - $form: The complete form array. + * - $nid: The node ID of the Webform. + * + * The $form array contains two main pieces: + * - $form['submitted']: The main content of the user-created form. + * - $form['details']: Internal information stored by Webform. + */ +?> +<?php + // If editing or viewing submissions, display the navigation at the top. + if (isset($form['submission_info']) || isset($form['navigation'])) { + print drupal_render($form['navigation']); + print drupal_render($form['submission_info']); + } + + // Print out the main part of the form. + // Feel free to break this up and move the pieces within the array. + print drupal_render($form['submitted']); + + // Always print out the entire $form. This renders the remaining pieces of the + // form that haven't yet been rendered above. + print drupal_render_children($form); + + // Print out the navigation again at the bottom. + if (isset($form['submission_info']) || isset($form['navigation'])) { + unset($form['navigation']['#printed']); + print drupal_render($form['navigation']); + } diff --git a/sites/all/modules/webform/templates/webform-mail.tpl.php b/sites/all/modules/webform/templates/webform-mail.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..ec29964e7df507a3ac81a7b3ce3817338cc3993b --- /dev/null +++ b/sites/all/modules/webform/templates/webform-mail.tpl.php @@ -0,0 +1,37 @@ +<?php +// $Id: webform-mail.tpl.php,v 1.6 2010/08/30 20:22:19 quicksketch Exp $ + +/** + * @file + * Customize the e-mails sent by Webform after successful submission. + * + * This file may be renamed "webform-mail-[nid].tpl.php" to target a + * specific webform e-mail on your site. Or you can leave it + * "webform-mail.tpl.php" to affect all webform e-mails on your site. + * + * Available variables: + * - $node: The node object for this webform. + * - $submission: The webform submission. + * - $email: The entire e-mail configuration settings. + * - $user: The current user submitting the form. + * - $ip_address: The IP address of the user submitting the form. + * + * The $email['email'] variable can be used to send different e-mails to different users + * when using the "default" e-mail template. + */ +?> +<?php print ($email['html'] ? '<p>' : '') . t('Submitted on %date'). ($email['html'] ? '</p>' : ''); ?> + +<?php if ($user->uid): ?> +<?php print ($email['html'] ? '<p>' : '') . t('Submitted by user: %username') . ($email['html'] ? '</p>' : ''); ?> +<?php else: ?> +<?php print ($email['html'] ? '<p>' : '') . t('Submitted by anonymous user: [%ip_address]') . ($email['html'] ? '</p>' : ''); ?> +<?php endif; ?> + +<?php print ($email['html'] ? '<p>' : '') . t('Submitted values are') . ':' . ($email['html'] ? '</p>' : ''); ?> + +%email_values + +<?php print ($email['html'] ? '<p>' : '') . t('The results of this submission may be viewed at:') . ($email['html'] ? '</p>' : '') ?> + +<?php print ($email['html'] ? '<p>' : ''); ?>%submission_url<?php print ($email['html'] ? '</p>' : ''); ?> diff --git a/sites/all/modules/webform/templates/webform-results-submissions.tpl.php b/sites/all/modules/webform/templates/webform-results-submissions.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..ce753ab348ffd8c0746264fea50f3b83847cc3de --- /dev/null +++ b/sites/all/modules/webform/templates/webform-results-submissions.tpl.php @@ -0,0 +1,35 @@ +<?php +// $Id: + +/** + * @file + * Result submissions page. + * + * Available variables: + * - $node: The node object for this webform. + * - $submission: The Webform submission array. + * - $total_count: The total number of submissions to this webform. + * - $pager_count: The number of results to be shown per page. + * - is_submissions: The user is viewing the node/NID/submissions page. + * - $table: The table[] array consists of three keys: + * - $table['#header']: Table header. + * - $table['#rows']: Table rows. + * - $table['#operation_total']: Maximum number of operations in the operation column. + */ +?> + +<?php if (count($table['#rows'])): ?> + <?php print theme('webform_results_per_page', array('total_count' => $total_count, 'pager_count' => $pager_count)); ?> + <?php print render($table); ?> +<?php else: ?> + <?php print t('There are no submissions for this form. <a href="!url">View this form</a>.', array('!url' => url('node/' . $node->nid))); ?> +<?php endif; ?> + + +<?php if ($is_submissions): ?> + <?php print theme('links', array('links' => array('webform' => array('title' => t('Go back to the form'), 'href' => 'node/' . $node->nid)))); ?> +<?php endif; ?> + +<?php if ($pager_count): ?> + <?php print theme('pager', array('limit' => $pager_count)); ?> +<?php endif; ?> diff --git a/sites/all/modules/webform/templates/webform-submission-information.tpl.php b/sites/all/modules/webform/templates/webform-submission-information.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..90a439f13501aaf864fa37e1183cec65c84f07d4 --- /dev/null +++ b/sites/all/modules/webform/templates/webform-submission-information.tpl.php @@ -0,0 +1,23 @@ +<?php +// $Id: webform-submission-information.tpl.php,v 1.3 2011/01/05 03:21:27 quicksketch Exp $ + +/** + * @file + * Customize the header information shown when editing or viewing submissions. + * + * Available variables: + * - $node: The node object for this webform. + * - $submission: The contents of the webform submission. + * - $account: The user that submitted the form. + */ +?> +<fieldset class="webform-submission-info clearfix"> + <legend><?php print t('Submission information'); ?></legend> + <?php print theme('user_picture', array('account' => $account)); ?> + <div class="webform-submission-info-text"> + <div><?php print t('Form: !form', array('!form' => l($node->title, 'node/' . $node->nid))); ?></div> + <div><?php print t('Submitted by !name', array('!name' => theme('username', array('account' => $account)))); ?></div> + <div><?php print format_date($submission->submitted, 'large'); ?></div> + <div><?php print $submission->remote_addr; ?></div> + </div> +</fieldset> diff --git a/sites/all/modules/webform/templates/webform-submission-navigation.tpl.php b/sites/all/modules/webform/templates/webform-submission-navigation.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..f341422d19dec38d4ff9e92b2dfaacf10556500d --- /dev/null +++ b/sites/all/modules/webform/templates/webform-submission-navigation.tpl.php @@ -0,0 +1,30 @@ +<?php +// $Id: webform-submission-navigation.tpl.php,v 1.3 2011/01/12 04:21:30 quicksketch Exp $ + +/** + * @file + * Customize the navigation shown when editing or viewing submissions. + * + * Available variables: + * - $node: The node object for this webform. + * - $submission: The contents of the webform submission. + * - $previous: The previous submission ID. + * - $next: The next submission ID. + * - $previous_url: The URL of the previous submission. + * - $next_url: The URL of the next submission. + * - $mode: Either "form" or "display". As the navigation is shown in both uses. + */ +?> +<div class="webform-submission-navigation"> + <?php if ($previous): ?> + <?php print l(t('Previous submission'), $previous_url, array('attributes' => array('class' => array('webform-submission-previous')), 'query' => ($mode == 'form' ? array('destination' => $previous_url) : NULL))); ?> + <?php else: ?> + <span class="webform-submission-previous"><?php print t('Previous submission'); ?></span> + <?php endif; ?> + + <?php if ($next): ?> + <?php print l(t('Next submission'), $next_url, array('attributes' => array('class' => array('webform-submission-next')), 'query' => ($mode == 'form' ? array('destination' => $next_url) : NULL))); ?> + <?php else: ?> + <span class="webform-submission-next"><?php print t('Next submission'); ?></span> + <?php endif; ?> +</div> diff --git a/sites/all/modules/webform/templates/webform-submission-page.tpl.php b/sites/all/modules/webform/templates/webform-submission-page.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..94a1c5d4dff897ceb154a00992c735cce788e49e --- /dev/null +++ b/sites/all/modules/webform/templates/webform-submission-page.tpl.php @@ -0,0 +1,26 @@ +<?php +// $Id: webform-submission-page.tpl.php,v 1.5 2011/01/05 03:21:27 quicksketch Exp $ + +/** + * @file + * Customize the navigation shown when editing or viewing submissions. + * + * Available variables: + * - $node: The node object for this webform. + * - $submission: The Webform submission array. + * - $submission_content: The contents of the webform submission. + * - $submission_navigation: The previous submission ID. + * - $submission_information: The next submission ID. + */ + +drupal_add_css(drupal_get_path('module', 'webform') . '/css/webform-admin.css', array('weight' => CSS_THEME, 'preprocess' => FALSE)); +?> + +<?php print $submission_navigation; ?> +<?php print $submission_information; ?> + +<div class="webform-submission"> + <?php print render($submission_content); ?> +</div> + +<?php print $submission_navigation; ?> diff --git a/sites/all/modules/webform/templates/webform-submission.tpl.php b/sites/all/modules/webform/templates/webform-submission.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..b5ce995ffcce080179fc26f948ea62db8d788db4 --- /dev/null +++ b/sites/all/modules/webform/templates/webform-submission.tpl.php @@ -0,0 +1,20 @@ +<?php +// $Id: webform-submission.tpl.php,v 1.3 2010/09/04 21:18:06 quicksketch Exp $ + +/** + * @file + * Customize the display of a webform submission. + * + * Available variables: + * - $node: The node object for this webform. + * - $submission: The Webform submission array. + * - $email: If sending this submission in an e-mail, the e-mail configuration + * options. + * - $format: The format of the submission being printed, either "html" or + * "text". + * - $renderable: The renderable submission array, used to print out individual + * parts of the submission, just like a $form array. + */ +?> + +<?php print drupal_render_children($renderable); ?> diff --git a/sites/all/modules/webform/tests/components.test b/sites/all/modules/webform/tests/components.test new file mode 100644 index 0000000000000000000000000000000000000000..141f658cbc1591ff2244887601b7c955d0432c2c --- /dev/null +++ b/sites/all/modules/webform/tests/components.test @@ -0,0 +1,38 @@ +<?php +// $Id$ + +/** + * @file + * Webform module component tests. + */ + +include_once(dirname(__FILE__) . '/webform.test'); + +class WebformComponentsTestCase extends WebformTestCase { + /** + * Implementation of getInfo(). + */ + public static function getInfo() { + return array( + 'name' => t('Webform components'), + 'description' => t('Add and remove components from a webform.'), + 'group' => t('Webform'), + ); + } + + /** + * Implementation of setUp(). + */ + function setUp() { + parent::setUp(); + } + + /** + * Implementation of testWebformDummy(). if it is not present, + * then the test runs fine, but when combined with other tests + * the whole block fails, since there would be no output. + */ + function testWebformDummy() { + $this->pass = t('WebformComponentsTest pass.'); + } +} diff --git a/sites/all/modules/webform/tests/permissions.test b/sites/all/modules/webform/tests/permissions.test new file mode 100644 index 0000000000000000000000000000000000000000..01c0719b620186dc5510741e1553d7f588d9b4ce --- /dev/null +++ b/sites/all/modules/webform/tests/permissions.test @@ -0,0 +1,68 @@ +<?php +// $Id$ + +/** + * @file + * Webform module permission tests. + */ + +include_once(dirname(__FILE__) . '/webform.test'); + +class WebformPermissionsTestCase extends WebformTestCase { + /** + * Implementation of getInfo(). + */ + public static function getInfo() { + return array( + 'name' => t('Webform permissions'), + 'description' => t('Create webforms and check editing and access permissions.'), + 'group' => t('Webform'), + ); + } + + /** + * Implementation of setUp(). + */ + function setUp() { + parent::setUp(); + } + + /** + * Implementation of tearDown(). + */ + function tearDown() { + parent::tearDown(); + } + + /** + * Create a webform node in which authenticated users have access to submit. + */ + function testWebformSubmitAccess() { + $this->webformReset(); + $node = $this->testWebformForm(); + $node->webform['roles'] = array(2); + node_save($node); + + // Test that the authenticated user is able to access. + $this->drupalLogin($this->webform_users['userAccess']); + $this->drupalGet('node/' . $node->nid); + $this->assertText($node->body[LANGUAGE_NONE][0]['value'], t('Webform node created and accessible to authenticated users at !url', array('!url' => 'node/' . $node->nid)), t('Webform')); + + // Confirm that the submission has been created. + $this->drupalPost(NULL, array(), 'Submit'); + $this->assertText($node->webform['confirmation'], t('Confirmation message "@confirmation" received.', array('@confirmation' => $node->webform['confirmation'])), t('Webform')); + $this->drupalLogout(); + + // The anonymous user should not be able to submit. + $this->drupalGet('node/' . $node->nid); + + // Note: Should be: You must <a href="!login">login</a> or <a href="!register">register</a> to view this form. + // Something in SimpleTest isn't handling the string correctly. + $this->assertText('to view this form.', t('Anonymous user is not allowed to submit form.'), t('Webform')); + } + + /** + * Create webform + */ + +} diff --git a/sites/all/modules/webform/tests/submission.test b/sites/all/modules/webform/tests/submission.test new file mode 100644 index 0000000000000000000000000000000000000000..36bfb7374eacd81ef42a315c9a3128d7d697bf9a --- /dev/null +++ b/sites/all/modules/webform/tests/submission.test @@ -0,0 +1,97 @@ +<?php +// $Id$ + +/** + * @file + * Webform module submission tests. + */ + +include_once(dirname(__FILE__) . '/webform.test'); + +class WebformSubmissionTestCase extends WebformTestCase { + /** + * Implementation of getInfo(). + */ + public static function getInfo() { + return array( + 'name' => t('Webform submission'), + 'description' => t('Submits a sample webform and checks the database integrity.'), + 'group' => t('Webform'), + ); + } + + /** + * Implementation of setUp(). + */ + function setUp() { + parent::setUp(); + } + + /** + * Implementation of tearDown(). + */ + function tearDown() { + parent::tearDown(); + } + + /** + * Test sending a submission and check database integrity. + */ + function testWebformSubmission() { + $this->drupalLogin($this->webform_users['admin']); + $this->webformReset(); + $this->webformSubmissionExecute('sample'); + $this->drupalLogout(); + } + + function testWebformSubmissionDefault() { + $this->drupalLogin($this->webform_users['admin']); + $this->webformReset(); + $this->webformSubmissionExecute('default'); + $this->drupalLogout(); + } + + /** + * Execute the submission test. + * + * @param $value_type + * The values to be submitted to the webform. Either "sample" or "default". + */ + function webformSubmissionExecute($value_type = 'sample') { + $path = drupal_get_path('module', 'webform'); + module_load_include('inc', 'webform', 'includes/webform.submissions'); + + // Create a new Webform test node. + $node = $this->testWebformForm(); + $submission_values = $value_type == 'sample' ? $this->testWebformPost() : array(); + + // Visit the node page with the "foo=bar" query, to test %get[] default values. + $this->drupalGet('node/' . $node->nid, array('query' => array('foo' => 'bar'))); + $this->assertText($node->body[LANGUAGE_NONE][0]['value'], t('Webform node created and accessible at !url', array('!url' => 'node/' . $node->nid)), t('Webform')); + + // Submit our test data. + $this->drupalPost(NULL, $submission_values, 'Submit'); + + // Confirm that the submission has been created. + $this->assertText($node->webform['confirmation'], t('Confirmation message "@confirmation" received.', array('@confirmation' => $node->webform['confirmation'])), t('Webform')); + + // Get the SID of the new submission. + $matches = array(); + preg_match('/sid=([0-9]+)/', $this->getUrl(), $matches); + $sid = $matches[1]; + + // Pull in the database submission and check the values. + $actual_submission = webform_get_submission($node->nid, $sid, TRUE); + + $component_info = $this->testWebformComponents(); + foreach ($node->webform['components'] as $cid => $component) { + $stable_value = $value_type == 'sample' ? $component_info[$component['form_key']]['database values'] : $component_info[$component['form_key']]['database default values']; + $actual_value = $actual_submission->data[$cid]['value']; + $result = $this->assertEqual($stable_value, $actual_value, t('Component @form_key data integrity check', array('@form_key' => $component['form_key'])), t('Webform')); + if (!$result || $result === 'fail') { + $this->fail(t('Expected !expected', array('!expected' => print_r($stable_value, TRUE))) . "\n\n" . t('Recieved !recieved', array('!recieved' => print_r($actual_value, TRUE))), t('Webform')); + } + } + } + +} diff --git a/sites/all/modules/webform/tests/webform.test b/sites/all/modules/webform/tests/webform.test new file mode 100644 index 0000000000000000000000000000000000000000..524fdbcd24cdd0222fd727b81e2e2d8aeeb0cf0f --- /dev/null +++ b/sites/all/modules/webform/tests/webform.test @@ -0,0 +1,613 @@ +<?php +// $Id$ + +/** + * @file + * Webform module tests. + */ + +class WebformTestCase extends DrupalWebTestCase { + private $_webform_node; + private $_webform_components; + public $webform_users; + + /** + * Implementation of setUp(). + */ + function setUp() { + // Enable Webform. + parent::setUp('webform', 'profile'); + + // Create a profile field to test %profile tokens. + db_query("INSERT INTO {profile_field} (title, name, explanation, category, type, weight, required, register, visibility, autocomplete, options, page) VALUES ('Gender', 'profile_gender', '', 'Profile', 'textfield', 0, 0, 0, 2, 0, '', '')"); + + // Create a normal user that can view their own submissions. + $permissions['userAccess'] = array( + 'access content', + 'access own webform submissions', + ); + + // Create a normal user than can edit their own submissions. + $permissions['userEdit'] = array( + 'access content', + 'edit own webform submissions', + ); + + // Create a webform editor to test creating and editing own content. + $permissions['editor'] = array( + 'access content', + 'create webform content', + 'edit own webform content', + 'access all webform results', + ); + + // Create a webform admin that will do all node creation. + $permissions['admin'] = array( + 'access content', + 'administer nodes', + 'create webform content', + 'edit any webform content', + 'access all webform results', + 'edit all webform submissions', + 'delete all webform submissions', + ); + + foreach ($permissions as $user_key => $role_permissions) { + $this->webform_users[$user_key] = $this->drupalCreateUser($role_permissions); + $profile = array('profile_gender' => 'Female'); + $this->webform_users[$user_key]->profile_gender = 'Female'; + profile_save_profile($profile, $this->webform_users[$user_key], 'Profile'); + } + } + + /** + * Implemenation of tearDown(). + */ + function tearDown() { + // Delete the webform admin and any created nodes. + foreach ($this->webform_users as $account) { + $uid = $account->uid; + $result = db_select('node') + ->fields('node') + ->condition('uid', $uid) + ->execute(); + foreach ($result as $node) { + node_delete($node->nid); + } + user_cancel(array(), $uid, 'user_cancel_delete'); + } + + parent::tearDown(); + } + + /** + * + */ + function webformReset() { + $this->_webform_node = NULL; + $this->_webform_components = NULL; + } + + /** + * Provide a list of components to test throughout the suite. + * + * Each component provides: + * - A default configuration for the component. + * - Values to try setting via POST + * - Values that should match the database storage when set via POST + * - Values that should match the database storage when using the default values. + * + * @return array + * An array of each component settings. + */ + function testWebformComponents() { + if (isset($this->_webform_components)) { + return $this->_webform_components; + } + + $this->_webform_components = array( + // Test date components. + 'date' => array( + 'component' => array( + 'form_key' => 'date', + 'name' => 'Date', + 'type' => 'date', + 'value' => '19 Nov 1978', + 'extra' => array( + 'timezone' => 'site', + 'year_start' => '1950', + 'year_end' => '2020', + ), + 'mandatory' => '0', + 'email' => '1', + 'pid' => '0', + 'weight' => '-15', + 'page_num' => 1, + ), + 'sample values' => array('day' => '30', 'month' => '9', 'year' => '1982'), + 'database values' => array('1982-09-30'), + 'database default values' => array('1978-11-19'), + ), + + // Test grid components. + 'grid' => array( + 'component' => array( + 'form_key' => 'grid', + 'name' => 'Grid', + 'type' => 'grid', + 'value' => '', + 'extra' => array( + 'questions' => "0|Ålphå\n1|ıé†å\n2|Î鬆å", // Left side + 'options' => "0|øne\n1|twö\n2|ǼBƇ\n3|€Euro", // Top + ), + 'mandatory' => '0', + 'email' => '1', + 'pid' => '2', + 'weight' => '-19', + 'page_num' => 1, + ), + 'sample values' => array('0' => '0', '1' => '1', '2' => '2'), + 'database values' => array('0' => '0', '1' => '1', '2' => '2'), + 'database default values' => array('', '', ''), + ), + 'grid_keyed' => array( + 'component' => array( + 'form_key' => 'grid_keyed', + 'name' => 'Grid Keyed', + 'type' => 'grid', + 'value' => '', + 'extra' => array( + 'questions' => "one|What's your option?\ntwo|Agåin?\nthree|One more time!", // Left side. + 'options' => "one|Option one\ntwo|Option 2\nthree| Three is me", // Top + ), + 'mandatory' => '0', + 'email' => '1', + 'pid' => '0', + 'weight' => '-15', + 'page_num' => 1, + ), + 'sample values' => array('one' => 'one', 'two' => 'two', 'three' => 'three'), + 'database values' => array('one' => 'one', 'two' => 'two', 'three' => 'three'), + 'database default values' => array('one' => '', 'two' => '', 'three' => ''), + ), + + // Test select components. + 'checkboxes' => array( + 'component' => array( + 'form_key' => 'checkboxes', + 'name' => 'Checkboxes', + 'type' => 'select', + 'value' => 'two', + 'extra' => array( + 'items' => "one|one\ntwo|two\nthree|three", + 'multiple' => 1, + 'email' => 0, + ), + 'mandatory' => '0', + 'email' => '1', + 'pid' => '0', + 'weight' => '-15', + 'page_num' => 1, + ), + 'sample values' => array('one' => TRUE, 'two' => FALSE, 'three' => TRUE), + 'database values' => array('one', 'three'), + 'database default values' => array('two'), + ), + 'checkboxes_zero' => array( + 'component' => array( + 'form_key' => 'checkboxes_zero', + 'name' => 'Checkboxes zero', + 'type' => 'select', + 'value' => '0', + 'extra' => array( + 'items' => "0|zero\n1|one\n2|two", + 'multiple' => 1, + 'email' => 0, + ), + 'mandatory' => '1', + 'email' => '1', + 'pid' => '0', + 'weight' => '-9', + 'page_num' => 1, + ), + 'sample values' => array('0' => TRUE), + 'database values' => array('0'), + 'database default values' => array('0'), + ), + 'radios' => array( + 'component' => array( + 'form_key' => 'radios', + 'name' => 'Radios', + 'type' => 'select', + 'value' => 'two', + 'extra' => array( + 'items' => "one|one\ntwo|two\nthree|three", + 'email' => 0, + ), + 'mandatory' => '1', + 'email' => '1', + 'pid' => '0', + 'weight' => '-9', + 'page_num' => 1, + ), + 'sample values' => 'one', + 'database values' => array('one'), + 'database default values' => array('two'), + ), + 'radios_zero' => array( + 'component' => array( + 'form_key' => 'radios_zero', + 'name' => 'Radios zero', + 'type' => 'select', + 'value' => '0', + 'extra' => array( + 'items' => "0|zero\n1|one\n2|two", + 'email' => 0, + ), + 'mandatory' => '1', + 'email' => '1', + 'pid' => '0', + 'weight' => '-9', + 'page_num' => 1, + ), + 'sample values' => '0', + 'database values' => array('0'), + 'database default values' => array('0'), + ), + 'select' => array( + 'component' => array( + 'form_key' => 'select', + 'name' => 'Select', + 'type' => 'select', + 'value' => 'one', + 'extra' => array( + 'description' => '<p>Description here</p>', + 'items' => "one|one\ntwo|two\nthree|three\nfour|four\nfive|five\nsix|six", + 'aslist' => 1, + 'email' => 0, + ), + 'mandatory' => '1', + 'email' => '1', + 'pid' => '0', + 'weight' => '-15', + 'page_num' => 1, + ), + 'sample values' => 'two', + 'database values' => array('two'), + 'database default values' => array('one'), + ), + 'select_zero' => array( + 'component' => array( + 'form_key' => 'select_zero', + 'name' => 'Select', + 'type' => 'select', + 'value' => '0', + 'extra' => array( + 'description' => '<p>Tests saving zero as a value.</p>', + 'items' => "0|zero\n1|one\n2|two", + 'aslist' => 1, + 'email' => 0, + ), + 'mandatory' => '1', + 'email' => '1', + 'pid' => '0', + 'weight' => '-15', + 'page_num' => 1, + ), + 'sample values' => '0', + 'database values' => array('0'), + 'database default values' => array('0'), + ), + 'select_optgroup' => array( + 'component' => array( + 'form_key' => 'select_optgroup', + 'name' => 'Select Optgroup', + 'type' => 'select', + 'value' => 'option 1-2', + 'extra' => array( + 'description' => '<p>Tests saving zero as a value.</p>', + 'items' => "<Group 1>\noption 1-1|option 1-1\noption 1-2|option 1-2\noption 1-3|option 1-3\n<Group 2>\noption 2-1|option 2-1\noption 2-2|option 2-2\noption 2-3|option 2-3", + 'aslist' => 1, + 'email' => 0, + ), + 'mandatory' => '1', + 'email' => '1', + 'pid' => '0', + 'weight' => '-15', + 'page_num' => 1, + ), + 'sample values' => 'option 2-2', + 'database values' => array('option 2-2'), + 'database default values' => array('option 1-2'), + ), + 'select_email' => array( + 'component' => array( + 'form_key' => 'select_email', + 'name' => 'Select e-mails', + 'type' => 'select', + 'value' => 'nate@localhost.localhost', + 'extra' => array( + 'items' => "nate@localhost.localhost|one\nadmin@localhost.localhost|two", + 'email' => 3, + ), + 'mandatory' => '0', + 'email' => '1', + 'pid' => '2', + 'weight' => '-17', + 'page_num' => 1, + ), + 'sample values' => 'admin@localhost.localhost', + 'database values' => array('admin@localhost.localhost'), + 'database default values' => array('nate@localhost.localhost'), + ), + 'select_multiple' => array( + 'component' => array( + 'form_key' => 'select_multiple', + 'name' => 'Select Multiple', + 'type' => 'select', + 'value' => 'one,two', + 'extra' => array( + 'items' => "one|one\ntwo|two\nthree|three", + 'multiple' => 1, + 'aslist' => 1, + 'email' => 0, + ), + 'mandatory' => '0', + 'email' => '1', + 'pid' => '0', + 'weight' => '-10', + 'page_num' => 1, + ), + // TODO: I'd like to test a value, but SimpleTest can't set multiple values. + 'sample values' => NULL, + 'database values' => array('one', 'two'), + 'database default values' => array('one', 'two'), + ), + + // Test date components. + 'date_textfield' => array( + 'component' => array( + 'form_key' => 'date_textfield', + 'name' => 'Date Textfield', + 'type' => 'date', + 'value' => 'Nov 19 1978', + 'extra' => array( + 'timezone' => 'site', + 'year_start' => '1900', + 'year_end' => '2050', + 'year_textfield' => 1, + ), + 'mandatory' => '1', + 'email' => '1', + 'pid' => '0', + 'weight' => '-7', + 'page_num' => 1, + ), + 'sample values' => array('day' => '30', 'month' => '9', 'year' => '1982'), + 'database values' => array('1982-09-30'), + 'database default values' => array('1978-11-19'), + ), + + // Test email components. + 'email' => array( + 'component' => array( + 'form_key' => 'email', + 'name' => 'E-mail', + 'type' => 'email', + 'value' => '%useremail', + 'extra' => array( + 'email' => 19, + ), + 'mandatory' => '0', + 'email' => '1', + 'pid' => '0', + 'weight' => '-5', + 'page_num' => 1, + ), + 'sample values' => 'admin@localhost.localhost', + 'database values' => array('admin@localhost.localhost'), + 'database default values' => array($this->webform_users['admin']->mail), + ), + + // Test hidden components. + 'hidden' => array( + 'component' => array( + 'form_key' => 'hidden', + 'name' => 'Hidden', + 'type' => 'hidden', + 'value' => 'default hidden value', + 'extra' => array( + 'email' => 0, + ), + 'mandatory' => '1', + 'email' => '1', + 'pid' => '0', + 'weight' => '-4', + 'page_num' => 1, + ), + 'sample values' => NULL, + 'database values' => array('default hidden value'), + 'database default values' => array('default hidden value'), + ), + + // Test textarea components. + 'textarea' => array( + 'component' => array( + 'form_key' => 'textarea', + 'name' => 'Textarea', + 'type' => 'textarea', + 'value' => 'sample textarea default value', + 'extra' => array(), + 'mandatory' => '0', + 'email' => '1', + 'pid' => '0', + 'weight' => '15', + 'page_num' => 1, + ), + 'sample values' => 'sample textarea value', + 'database values' => array('sample textarea value'), + 'database default values' => array('sample textarea default value'), + ), + + // Test textfield components. + 'textfield_disabled' => array( + 'component' => array( + 'form_key' => 'textfield_disabled', + 'name' => 'Textfield Disabled', + 'type' => 'textfield', + 'value' => '%get[foo]', + 'extra' => array( + 'disabled' => 1, + ), + 'mandatory' => '0', + 'email' => '1', + 'pid' => '0', + 'weight' => '-15', + 'page_num' => 1, + ), + 'sample values' => NULL, + 'database values' => array('bar'), + 'database default values' => array('bar'), + ), + 'textfield_profile' => array( + 'component' => array( + 'form_key' => 'textfield_profile', + 'name' => 'Textfield Profile', + 'type' => 'textfield', + 'value' => '%profile[profile_gender]', + 'extra' => array( + 'width' => '20', + ), + 'mandatory' => '0', + 'email' => '1', + 'pid' => '0', + 'weight' => '-6', + 'page_num' => 1, + ), + 'sample values' => 'Female', + 'database values' => array('Female'), + 'database default values' => array($this->webform_users['admin']->profile_gender), + ), + + // Test time components. + 'time' => array( + 'component' => array( + 'form_key' => 'time', + 'name' => 'Time', + 'type' => 'time', + 'value' => '10:30pm', + 'extra' => array( + 'timezone' => 'site', + 'hourformat' => '12-hour', + ), + 'mandatory' => '0', + 'email' => '1', + 'pid' => '0', + 'weight' => '16', + 'page_num' => 1, + ), + 'sample values' => array('hour' => '5', 'minute' => '0', 'ampm' => 'am'), + 'database values' => array('05:00:00'), + 'database default values' => array('22:30:00'), + ), + 'time_24h' => array( + 'component' => array( + 'form_key' => 'time_24h', + 'name' => 'Time 24H', + 'type' => 'time', + 'value' => '10:30pm', + 'extra' => array( + 'timezone' => 'site', + 'hourformat' => '24-hour', + ), + 'mandatory' => '0', + 'email' => '1', + 'pid' => '0', + 'weight' => '17', + 'page_num' => 1, + ), + 'sample values' => array('hour' => '5', 'minute' => '0'), + 'database values' => array('05:00:00'), + 'database default values' => array('22:30:00'), + ), + ); + + return $this->_webform_components; + } + + function testWebformForm() { + if (isset($this->_webform_node)) { + return $this->_webform_node; + } + + $settings = array( + 'type' => 'webform', + 'language' => LANGUAGE_NONE, + 'uid' => '1', + 'status' => '1', + 'promote' => '1', + 'moderate' => '0', + 'sticky' => '0', + 'tnid' => '0', + 'translate' => '0', + 'title' => 'Test Webform', + 'body' => array(LANGUAGE_NONE => array(array('value' => 'Donec placerat. Nullam nibh dolor, blandit sed, fermentum id, imperdiet sit amet, neque. Nam mollis ultrices justo. Sed tempor. Sed vitae tellus. Etiam sem arcu, eleifend sit amet, gravida eget, porta at, wisi. Nam non lacus vitae ipsum viverra pretium. Phasellus massa. Fusce magna sem, gravida in, feugiat ac, molestie eget, wisi. Fusce consectetuer luctus ipsum. Vestibulum nunc. Suspendisse dignissim adipiscing libero. Integer leo. Sed pharetra ligula a dui. Quisque ipsum nibh, ullamcorper eget, pulvinar sed, posuere vitae, nulla. Sed varius nibh ut lacus. Curabitur fringilla. Nunc est ipsum, pretium quis, dapibus sed, varius non, lectus. Proin a quam. Praesent lacinia, eros quis aliquam porttitor, urna lacus volutpat urna, ut fermentum neque mi egestas dolor.'))), + 'teaser' => array(LANGUAGE_NONE => array(array('value' => 'Donec placerat. Nullam nibh dolor, blandit sed, fermentum id, imperdiet sit amet, neque. Nam mollis ultrices justo. Sed tempor. Sed vitae tellus. Etiam sem arcu, eleifend sit amet, gravida eget, porta at, wisi. Nam non lacus vitae ipsum viverra pretium. Phasellus massa. Fusce magna sem, gravida in, feugiat ac, molestie eget, wisi. Fusce consectetuer luctus ipsum. Vestibulum nunc. Suspendisse dignissim adipiscing libero. Integer leo. Sed pharetra ligula a dui. Quisque ipsum nibh, ullamcorper eget, pulvinar sed, posuere vitae, nulla. Sed varius nibh ut lacus. Curabitur fringilla.'))), + 'log' => '', + 'format' => '1', + 'webform' => array( + 'confirmation' => 'Thanks!', + 'confirmation_format' => filter_default_format(), + 'redirect_url' => '<confirmation>', + 'teaser' => '0', + 'allow_draft' => '1', + 'submit_text' => '', + 'submit_limit' => '-1', + 'submit_interval' => '-1', + 'submit_notice' => '1', + 'roles' => array('1', '2'), + 'components' => array(), + 'emails' => array(), + ), + ); + + $cid = 0; + foreach ($this->testWebformComponents() as $key => $component_info) { + $cid++; + $settings['webform']['components'][$cid] = $component_info['component']; + $settings['webform']['components'][$cid]['cid'] = $cid; + $settings['webform']['components'][$cid]['pid'] = 0; + } + + $this->_webform_node = $this->drupalCreateNode($settings); + + return $this->_webform_node; + } + + + function testWebformPost() { + $edit = array(); + foreach ($this->testWebformComponents() as $key => $component_info) { + if (is_array($component_info['sample values'])) { + foreach ($component_info['sample values'] as $subkey => $value) { + $edit["submitted[$key][$subkey]"] = $value; + } + } + elseif ($component_info['sample values'] != NULL) { + $value = $component_info['sample values']; + // Multiple selects have a funky extra empty bracket in the name. + $extra = $key == 'select_multiple' ? '[]' : ''; + $edit["submitted[$key]$extra"] = $value; + } + } + return $edit; + } + + /** + * Utility function to print out the current page being tested. + */ + function webformPrintPage() { + exit($this->_browser->_page->getRaw()); + } +} + diff --git a/sites/all/modules/webform/translations/cs.po b/sites/all/modules/webform/translations/cs.po new file mode 100644 index 0000000000000000000000000000000000000000..6e490ed88021919a8a0d666d625aaf96559642a1 --- /dev/null +++ b/sites/all/modules/webform/translations/cs.po @@ -0,0 +1,1436 @@ +# $Id: cs.po,v 1.4 2011/01/05 04:39:01 quicksketch Exp $ +# +# Czech translation of Drupal Webform +# Copyright YEAR NAME <EMAIL@ADDRESS> +# Generated from files: +# webform_components.inc,v 1.1.2.23 2008/05/27 17:02:50 quicksketch +# webform.module,v 1.113.2.70.2.44 2008/05/28 05:39:58 quicksketch +# markup.inc,v 1.3.2.4.2.6 2008/04/02 04:05:16 quicksketch +# webform_report.inc,v 1.15.2.11.2.7 2008/05/08 20:10:58 quicksketch +# webform_submissions.inc,v 1.1.2.13 2008/05/27 20:43:41 quicksketch +# webform.info: n/a +# webform.install,v 1.14.2.16.2.19 2008/05/28 02:55:08 quicksketch +# date.inc,v 1.13.2.15.2.3 2008/04/15 09:20:37 quicksketch +# email.inc,v 1.16.2.7.2.6 2008/04/02 04:05:16 quicksketch +# hidden.inc,v 1.11.2.3.2.8 2008/05/08 19:38:01 quicksketch +# select.inc,v 1.18.2.19.2.12 2008/04/02 04:05:16 quicksketch +# textarea.inc,v 1.11.2.4.2.4 2008/05/27 16:31:15 quicksketch +# textfield.inc,v 1.11.2.7.2.3 2008/04/02 04:05:16 quicksketch +# time.inc,v 1.14.2.6.2.3 2008/04/02 04:05:16 quicksketch +# file.inc,v 1.2.2.19.2.7 2008/05/27 16:11:46 quicksketch +# fieldset.inc,v 1.3.4.4.2.2 2008/04/02 04:05:16 quicksketch +# grid.inc,v 1.1.2.3.2.3 2008/04/02 04:05:16 quicksketch +# pagebreak.inc,v 1.1.2.3.2.3 2008/02/10 06:37:51 quicksketch +# +msgid "" +msgstr "" +"Project-Id-Version: Webform 5.x-2.3\n" +"POT-Creation-Date: 2008-12-10 14:38+0100\n" +"PO-Revision-Date: 2008-12-10 14:40+0100\n" +"Last-Translator: Tomáš Čapek <charmer@solnet.cz>\n" +"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n< =4) ? 1 : 2;\n" + +#: webform_components.inc:39;127;352 +msgid "Weight" +msgstr "Váha" + +#: webform_components.inc:44;127;317 +msgid "Mandatory" +msgstr "Povinné" + +#: webform_components.inc:50;127 +msgid "E-mail" +msgstr "Zasílat" + +#: webform_components.inc:92 +msgid "Add" +msgstr "Přidat" + +#: webform_components.inc:98;385 +#: webform.module:1281;1300;1317;1420 +msgid "Submit" +msgstr "Poslat" + +#: webform_components.inc:104;241 +msgid "Publish" +msgstr "Vydat" + +#: webform_components.inc:127 +#: webform.module:710;1152 +#: components/file.inc:522 +msgid "Name" +msgstr "Jméno" + +#: webform_components.inc:127 +#: webform.module:711 +msgid "Type" +msgstr "Typ" + +#: webform_components.inc:127 +#: components/markup.inc:34 +msgid "Value" +msgstr "Hodnota" + +#: webform_components.inc:127 +#: webform_report.inc:44 +#: webform.module:1957 +msgid "Operations" +msgstr "Operace" + +#: webform_components.inc:132 +msgid "New component name" +msgstr "Jméno nové komponenty" + +#: webform_components.inc:188 +#: webform_report.inc:75 +#: webform.module:220;1968 +msgid "Edit" +msgstr "Upravit" + +#: webform_components.inc:189 +msgid "Clone" +msgstr "Duplikovat" + +#: webform_components.inc:190;475 +#: webform_report.inc:76 +#: webform_submissions.inc:117 +#: webform.module:229 +msgid "Delete" +msgstr "Smazat" + +#: webform_components.inc:212 +msgid "No Components, add a component below." +msgstr "Žádné komponenty, níže přidejte novou komponentu." + +#: webform_components.inc:244 +msgid "Your webform has been published." +msgstr "Váš formulář byl vydán." + +#: webform_components.inc:254 +msgid "The component positions and mandatory values have been updated." +msgstr "Umístění komponent a hodnoty povinných polí byly aktualizovány." + +#: webform_components.inc:259 +msgid "Edit component: @name (@type)" +msgstr "Úprava komponenty: @name (@type)" + +#: webform_components.inc:285 +msgid "Label" +msgstr "Nadpis" + +#: webform_components.inc:286 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "Toto je jmenovka, která se se bude zobrazovat u tohoto prvku formuláře." + +#: webform_components.inc:294 +#: webform.module:486;1152 +msgid "Description" +msgstr "Popis" + +#: webform_components.inc:295 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "Krátká nápověda, jak pole používat při vyplňování." + +#: webform_components.inc:301 +msgid "Advanced settings" +msgstr "Pokročilé volby" + +#: webform_components.inc:310 +msgid "Field Key" +msgstr "Identifikátor pole" + +#: webform_components.inc:311 +msgid "Enter a machine readable key for this form element. May contain only lowercase alphanumeric characters and underscores. This key will be used as the name attribute of the form element. This value has no effect on the way data is saved, but may be helpful if using Additional Processing or Validation code." +msgstr "Vložte strojově čitelný identifikátor pro tento prvek formuláře. Může obsahovat pouze malá písmena, číslice a podtržítka. Identifikátor bude použit jako atribut jména pro tento prvek. Nemá vliv na ukládání dat, ale může být užitečný v kódu pro Rozšířené zpracování a Validaci." + +#: webform_components.inc:319 +msgid "Check this option if the user must enter a value." +msgstr "Pokud je zaškrtnuto, bez zadané hodnoty tohoto pole nebude možné formulář odeslat." + +#: webform_components.inc:325 +msgid "Include in e-mails" +msgstr "Zasílat ve zprávách" + +#: webform_components.inc:327 +msgid "If checked, submitted values from this component will be included in e-mails." +msgstr "Pokud je zaškrtnuto, vložené hodnoty této komponenty budou vloženy do e-mailové zprávy." + +#: webform_components.inc:333 +msgid "Root" +msgstr "Nejvyšší" + +#: webform_components.inc:341 +msgid "Parent Fieldset" +msgstr "Nadřazená skupina polí" + +#: webform_components.inc:343 +msgid "Optional. You may organize your form by placing this component inside another fieldset." +msgstr "Volitelná hodnota. Můžete lépe uspořádat formulář, když umístíte tuto komponentu do jiné skupiny polí." + +#: webform_components.inc:354 +msgid "Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top." +msgstr "Volitelná hodnota. V nabídce se těžší položky propadnou dolů a lehčí se umístí výše." + +#: webform_components.inc:366 +msgid "The webform component of type @type does not have an edit function defined." +msgstr "Komponenta formuláře typu @type nemá definovánu funkci pro editování." + +#: webform_components.inc:399 +msgid "The field key %field_key is invalid. Please include only lowercase alphanumeric characters and underscores." +msgstr "Identifikátor %field_key není platný. Prosím použijte pouze malá písmena, číslice a podtržítka." + +#: webform_components.inc:404 +msgid "The field key %field_key is already in use by the field labeled %existing_field. Please use a unique key." +msgstr "Identifikátor %field_key již používá pole s nadpisem %existing_field. Prosím použijte unikátní identifikátor." + +#: webform_components.inc:438 +msgid "Component %name cloned." +msgstr "Komponenta %name byla zduplikována." + +#: webform_components.inc:442 +msgid "Component %name updated." +msgstr "Komponenta %name byla aktualizována." + +#: webform_components.inc:446 +msgid "New component %name added." +msgstr "Komponenta %name byla přidána." + +#: webform_components.inc:467 +msgid "Delete the %name fieldset?" +msgstr "Smazat skupinu polí %name?" + +#: webform_components.inc:468 +msgid "This will immediately delete the %name fieldset and all children elements within %name from the %webform webform. This cannot be undone." +msgstr "Tímto bezprostředně smažete skupinu polí %name a všechny její podřazená pole ve formuláři %webform. Tuto akci nebude možné vrátit." + +#: webform_components.inc:471 +msgid "Delete the %name component?" +msgstr "Smazat komponentu %name?" + +#: webform_components.inc:472 +msgid "This will immediately delete the %name component from the %webform webform. This cannot be undone." +msgstr "Tímto bezprostředně smažete komponentu %name formuláře %webform. Tuto akci nebude možné vrátit." + +#: webform_components.inc:479 +msgid "Component %name deleted." +msgstr "Komponenta %name byla smazána." + +#: webform_export.inc:21 +msgid "Delimited text" +msgstr "Text s oddělovačem" + +#: webform_export.inc:22 +msgid "A plain text file delimited by commas, tabs, or other characters." +msgstr "Soubor s prostým textem odděleným čárkami, tabulátory nebo jinými znaky." + +#: webform_export.inc:26 +msgid "Microsoft Excel" +msgstr "Microsoft Excel" + +#: webform_export.inc:27 +msgid "A file readable by Microsoft Excel." +msgstr "Soubor pro MS Excel." + +#: webform_report.inc:20 +msgid "Submissions for %user" +msgstr "Formuláře uživatele %user" + +#: webform_report.inc:37;111 +msgid "#" +msgstr "#" + +#: webform_report.inc:38;112 +msgid "Submitted" +msgstr "Odeslal" + +#: webform_report.inc:41;113 +msgid "User" +msgstr "Uživatel" + +#: webform_report.inc:42;114;311 +msgid "IP Address" +msgstr "IP adresa" + +#: webform_report.inc:73 +#: webform.module:211;1956 +msgid "View" +msgstr "Zobrazit" + +#: webform_report.inc:85;165;403 +msgid "There are no submissions for this form. <a href=\"!url\">View this form</a>." +msgstr "Tento formulář ještě nebyl vyplněn a odeslán. <a href=\"!url\">Zobrazit</a>." + +#: webform_report.inc:90 +#: webform.module:1715 +msgid "Go back to the form" +msgstr "Návrat do formuláře" + +#: webform_report.inc:192 +msgid "Clear Form Submissions" +msgstr "Vymazat odeslané formuláře" + +#: webform_report.inc:196 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "Určitě chcete smazat všechny odeslané formuláře pro tento typ?" + +#: webform_report.inc:198 +#: webform.module:181;1969 +msgid "Clear" +msgstr "Vyčistit" + +#: webform_report.inc:198 +#: webform_submissions.inc:117 +msgid "Cancel" +msgstr "Zrušit" + +#: webform_report.inc:206 +msgid "Webform %title entries cleared." +msgstr "Záznamy pro formulář %title byly vymazány." + +#: webform_report.inc:227 +msgid "Export format" +msgstr "Formát pro export" + +#: webform_report.inc:234 +msgid "Delimited text format" +msgstr "Text s oddělovači" + +#: webform_report.inc:235 +#: webform.module:1118 +msgid "This is the delimiter used in the CSV/TSV file when downloading Webform results. Using tabs in the export is the most reliable method for preserving non-latin characters. You may want to change this to another character depending on the program with which you anticipate importing results." +msgstr "Toto je oddělovač pro soubor typu CSV/TSV, ve kterém lze stáhnout výsledky formulářů. Použití tabulátorů je nespolehlivější způsob, jak zachovat znaky s diakritikou. Můžete oddělovač změnit na jiný podle toho, do které aplikace budete výsledky importovat." + +#: webform_report.inc:238 +#: webform.module:1121 +msgid "Comma (,)" +msgstr "Čárka (,)" + +#: webform_report.inc:239 +#: webform.module:1122 +msgid "Tab (\\t)" +msgstr "Tabulátor (\\t)" + +#: webform_report.inc:240 +#: webform.module:1123 +msgid "Semicolon (;)" +msgstr "Středník (;)" + +#: webform_report.inc:241 +#: webform.module:1124 +msgid "Colon (:)" +msgstr "Dvojtečka (:)" + +#: webform_report.inc:242 +#: webform.module:1125 +msgid "Pipe (|)" +msgstr "Roura (|)" + +#: webform_report.inc:243 +#: webform.module:1126 +msgid "Period (.)" +msgstr "Tečka (.)" + +#: webform_report.inc:244 +#: webform.module:1127 +msgid "Space ( )" +msgstr "Mezera ( )" + +#: webform_report.inc:250 +#: webform.module:172;1967 +msgid "Download" +msgstr "Stáhnout" + +#: webform_report.inc:310 +msgid "Submission Details" +msgstr "Detaily formuláře" + +#: webform_report.inc:311 +msgid "Serial" +msgstr "Sériové číslo" + +#: webform_report.inc:311 +msgid "SID" +msgstr "SID" + +#: webform_report.inc:311 +msgid "Time" +msgstr "Čas" + +#: webform_report.inc:311 +msgid "UID" +msgstr "UID" + +#: webform_report.inc:311 +msgid "Username" +msgstr "Uživ. jméno" + +#: webform_report.inc:382 +msgid "Q" +msgstr "Komponenta" + +#: webform_report.inc:383 +msgid "responses" +msgstr "odpovědi" + +#: webform_report.inc:208 +#: webform.module:1580;1619;0 +msgid "webform" +msgstr "webform" + +#: webform_submissions.inc:110 +msgid "Delete Form Submission" +msgstr "Smazat odeslaný formulář" + +#: webform_submissions.inc:115 +msgid "Are you sure you want to delete this submission?" +msgstr "Určitě chcete tento odeslaný formulář smazat?" + +#: webform_submissions.inc:122 +msgid "Submission deleted." +msgstr "Odeslaný formulář byl smazán." + +#: webform.module:22 +msgid "Webforms are forms and questionnaires. To add one, select <a href=\"!url\">Create content -> Webform</a>." +msgstr "Formulář může být anketa nebo dotazník. Můžete je vytvořit volbou <a href=\"!url\">Vytvořit obsah -> Formulář</a>." + +#: webform.module:25 +msgid "" +"<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will be sent. If no email address is specified, no e-mail will be sent when submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will be used to populate the return e-mail address on any sent e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that will be used to populate the subject e-mail field on any sent e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown after you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database table <i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" +"<p>Tento modul umožňuje vytváření webových formulářů a dotazníků a upravovat jejich obsah. Vyplněné a odeslané formuláře se ukládají do databáze a lze je také posílat na předem určenou e-mailovou adresu.</p>\n" +" <p>Následuje návod na vytvoření formuláře:</p>\n" +" <ul>\n" +" <li>Klikněte na 'Vytvořit obsah' a zvolte webform</li>\n" +" <li>Vložte popis, který se zobrazí jako úvodní text nad samotným formulářem.</li>\n" +" <li>Vložte zprávu nebo odkaz na uzel, který se zobrazí po úspěšném odeslání formuláře.</li>\n" +" <li>Přidejte do formuláře jednu nebo více komponent.</li>\n" +" <li>Volitelně zadejte e-mailovou adresu, na kterou budou automaticky chodit vyplněné formuláře. Pokud není adresa zadána, žádný e-mail se při odeslání formuláře posílat nebude.</li>\n" +" <li>Volitelně zadejte komponentu pro e-mailovou adresu (nebo skrytou komponentu), do které se bude vkládat návratová adresa pro jakýkoliv odeslaný e-mail.</li>\n" +" <li>Volitelně zadejte textové pole (nebo skrytou komponentu), do které se bude vkládat předmět pro jakýkoliv odeslaný e-mail.</li>\n" +" </ul>\n" +" <p>Nápověda pro přidávání a upravování komponent se zobrazí, jakmile vytvoříte první komponentu.</p>\n" +" <p>Obsah odeslaných formulářů je uložen v tabulce databáze <i>webform_submitted_data</i> ve formě dvojic klíč-hodnota.</p>\n" +" " + +#: webform.module:41 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "Formulář může být dotazník, kontaktní nebo objednávkový formulář. Návštěvníci se skrze něj mohou také registrovat na různé akce nebo vyplňovat rozsáhlé ankety." + +#: webform.module:58 +msgid "This page displays all the components currently configured for this webform node. You may add any number of components to the form, even multiple of the same type. To add a new component, fill in a name and select a type from the fields at the bottom of the table. Submit the form to create the new component or update any changed form values." +msgstr "Na této stránce jsou všechny aktuálně nastavené komponenty pro tento formulář. Můžete vytvořit libovolný počet komponent, i několik stejného typu. Novou komponentu přidáte tak, že v dolní části tabulky zadáte jméno a zvolíte typ pro dané pole. Nové komponenty, případně upravené hodnoty, je potřeba uložit tlačítkem Poslat." + +#: webform.module:59 +msgid "Click on any existing component's name to edit its settings." +msgstr "Kliknutím na jméno existující komponenty zobrazíte její nastavení." + +#: webform.module:76 +msgid "Webforms" +msgstr "Formuláře" + +#: webform.module:79 +msgid "View and edit all the available webforms on your site." +msgstr "Prohlížet a upravovat všechny formuláře na tomto webu." + +#: webform.module:86;256 +#: webform.info:0 +msgid "Webform" +msgstr "Formulář" + +#: webform.module:90 +msgid "Global configuration of webform functionality." +msgstr "Globální nastavení pro práci s webovými formuláři." + +#: webform.module:112 +msgid "Webform confirmation" +msgstr "Potvrzení formuláře" + +#: webform.module:119 +msgid "Configuration" +msgstr "Konfigurace" + +#: webform.module:127 +msgid "Form components" +msgstr "Komponenty" + +#: webform.module:136;1619 +msgid "Results" +msgstr "Výsledky" + +#: webform.module:145;190;1964 +msgid "Submissions" +msgstr "Odeslané formuláře" + +#: webform.module:154;1965 +msgid "Analysis" +msgstr "Analýza" + +#: webform.module:163;1966 +msgid "Table" +msgstr "Tabulka" + +#: webform.module:203 +msgid "Webform submission" +msgstr "Odeslání formuláře" + +#: webform.module:258 +msgid "Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users." +msgstr "Vytvořte nový formulář, anketu nebo dotazník přístupný všem uživatelům. Odeslané formuláře a statistiky se zaznamenávají a jsou přístupné autorizovaným uživatelům." + +#: webform.module:432 +msgid "Go to form" +msgstr "Přejít na formulář" + +#: webform.module:434 +msgid "View this form." +msgstr "Zobrazit formulář." + +#: webform.module:468 +msgid "Webform Settings" +msgstr "Nastavení formuláře" + +#: webform.module:477;1955 +msgid "Title" +msgstr "Nadpis" + +#: webform.module:487 +msgid "Text to be shown as teaser and before the form." +msgstr "Text, který se zobrazí jako úvodní text ještě před formulářem." + +#: webform.module:496 +msgid "Confirmation message or redirect URL" +msgstr "Potvrzovací zpráva nebo uzel pro přesměrování" + +#: webform.module:497 +msgid "Message to be shown upon successful submission or a path to a redirect page. Redirect pages must start with <em>http://</em> for external sites or <em>internal:</em> for an internal path. i.e. <em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "Po úspěšném odeslání formuláře se zobrazí tato zpráva nebo stránka, na kterou je uveden odkaz. Odkaz na externí stránku musí začínat na <em>http://</em>, odkaz na interní stránku na <em>internal:</em>. Například <em>http://www.priklad.cz</em> nebo <em>internal:node/10</em> ." + +#: webform.module:509 +msgid "Webform access control" +msgstr "Přístupová práva k formulářům" + +#: webform.module:514 +msgid "These permissions affect which roles can submit this webform. It does not prevent access to the webform page. If needing to prevent access to the webform page entirely, use a content access module such as <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> or <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." +msgstr "Tato přístupová práva uvádějí, které role uživatelů mohou tento formulář odesílat. Nebrání však k přístupu ke stránce s formulářem. Pokud potřebujete omezit přístup k samotné stránce, použijte jiný modul, např. <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> nebo <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." + +#: webform.module:521 +msgid "Roles that can submit this webform" +msgstr "Role, které smějí odesílat tento formulář" + +#: webform.module:522 +msgid "Uncheck all roles to prevent new submissions. The %authenticated role applies to any user signed into the site, regardless of other assigned roles." +msgstr "Pokud není označena žádná role, nebude možné formulář odeslat. Role %authenticated se vztahuje na každého uživatele, který je přihlášen, bez ohledu na jeho další role." + +#: webform.module:529 +msgid "Webform mail settings" +msgstr "Nastavení pošty" + +#: webform.module:539 +msgid "E-mail to address" +msgstr "Cílová e-mailová adresa" + +#: webform.module:541 +msgid "Form submissions will be e-mailed to this address. Leave blank for none. Multiple e-mail addresses may be separated by commas." +msgstr "Obsah odeslaných formulářů bude odeslán na tuto adresu. Nevyplněné pole zablokuje posílání e-mailu. Více e-mailových adres je potřeba oddělit čárkou." + +#: webform.module:549 +msgid "Conditional e-mail recipients" +msgstr "Podmínění příjemci e-mailu" + +#: webform.module:550 +msgid "The settings below allow you to send e-mails to multiple recipients based off the value of a component." +msgstr "Díky nastavení níže můžete posílat e-mail na více adres podle vyplněných údajů jednotlivých komponent." + +#: webform.module:574 +msgid "E-mail from name" +msgstr "Jméno odesílatele formuláře" + +#: webform.module:575 +msgid "After adding components to this form any email, select, or hidden form element may be selected as the sender's name for e-mails." +msgstr "Jakmile přidáte do formuláře komponenty, pak pole pro e-mailovou adresu, rozbalovací menu a skrytá pole budete moci nastavit jako jméno odesílatele formuláře." + +#: webform.module:579 +msgid "E-mail from address" +msgstr "Adresa odesílatele formuláře" + +#: webform.module:580 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the sender's e-mail address." +msgstr "Jakmile přidáte do formuláře komponenty, pak pole pro e-mailovou adresu, rozbalovací menu a skrytá pole budete moci nastavit jako adresu odesílatele formuláře." + +#: webform.module:584 +msgid "E-mail subject" +msgstr "Předmět e-mailu" + +#: webform.module:585 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the subject for e-mails." +msgstr "Jakmile přidáte do formuláře komponenty, pak textová pole, rozbalovací menu a skrytá pole budete moci nastavit jako předmět e-mailu." + +#: webform.module:620 +msgid "Webform advanced settings" +msgstr "Pokročilá nastavení" + +#: webform.module:628 +msgid "Show complete form in teaser" +msgstr "V náhledu uzlu zobrazit celý formulář" + +#: webform.module:630 +msgid "Display the entire form in the teaser display of this node." +msgstr "Zobrazí celý formulář jako součást úvodního odstavce uzlu." + +#: webform.module:634 +msgid "Limit the number of submissions a user may send within a specified time period" +msgstr "Omezit počet odeslání, které může jeden uživatel provést v určeném časovém rozmezí" + +#: webform.module:639 +msgid "Unlimited" +msgstr "neomezeně" + +#: webform.module:653 +msgid "ever" +msgstr "navždy" + +#: webform.module:654 +msgid "every hour" +msgstr "za hodinu" + +#: webform.module:655 +msgid "every day" +msgstr "za den" + +#: webform.module:656 +msgid "every week" +msgstr "za týden" + +#: webform.module:663 +msgid "Submit button text" +msgstr "Text odesílacího tlačítka" + +#: webform.module:665 +msgid "By default the submit button on this form will have the label <em>Submit</em>. Enter a new title here to override the default." +msgstr "Výchozí hodnota textu tlačítka pro odeslání formuláře je <em>Poslat</em>. Tuto hodnotu můžete přebít, když vyplníte toto pole." + +#: webform.module:670 +msgid "Additional Validation" +msgstr "Dodatečná validace" + +#: webform.module:671 +msgid "Enter PHP code to perform additional validation for this form. Include the <?php ?> tags. $form_id and $form_values are available variables. If validation fails, use the form_set_error function to prevent the form from being submitted. Use the same syntax as a _validate function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Vložte kód v PHP, který provede dodatečnou validaci formuláře. Použijte značky <?php ?>. Mezi dostupné proměnné patří $form_id a $form_values. Pokud validace selže, použijte funkci form_set_error, která zabrání odeslání. Použijte stejnou syntaxi jako funkce _validate, která je součástí <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">API pro formuláře</a>." + +#: webform.module:679 +msgid "Additional Processing" +msgstr "Dodatečné zpracování" + +#: webform.module:680 +msgid "Enter PHP code to perform additional processing for this form (after the validation). Include the <?php ?> tags. $form_id and $form_values are available variables, use the same syntax as a _submit function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Vložte kód v PHP, který provede dodatečné zpracování formuláři (po validaci). Použijte značky <?php ?>. Mezi dostupné proměnné patří $form_id a $form_values. Použijte stejnou syntaxi jako funkce _submit, která je součástí <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">API pro formuláře</a>." + +#: webform.module:709 +msgid "To" +msgstr "Komu" + +#: webform.module:724 +msgid "No components yet in this webform." +msgstr "Tento formulář zatím nemá žádnou komponentu." + +#: webform.module:739 +msgid "Custom" +msgstr "Vlastní" + +#: webform.module:739 +msgid "Component" +msgstr "Komponenta" + +#: webform.module:750 +msgid "Default" +msgstr "Výchozí" + +#: webform.module:771 +msgid "Limit to !count submission(s) !timespan" +msgstr "Omezit na !count odeslání !timespan" + +#: webform.module:784;791 +msgid "The entered email address %address is not a valid address." +msgstr "Vložená adresa není platnou e-mailovou adresou." + +#: webform.module:866 +msgid "The new webform %title has been created. Add new fields to your webform with the form below." +msgstr "Formulář %title byl vytvořen. Níže do něj můžete přidat nová pole." + +#: webform.module:869 +msgid "This webform is currently unpublished. After finishing your changes to the webform, use the <em>Publish</em> button below." +msgstr "Tento formulář není v této chvíli vydán. Jakmile dokončíte jeho úpravu, vydejte ho tlačítkem <em>Poslat</em>." + +#: webform.module:892 +#: components/markup.inc:58 +msgid "Preview" +msgstr "Náhled" + +#: webform.module:998 +msgid "Submissions for this form are closed." +msgstr "Odeslané formuláře pro tento formulář jsou uzavřené." + +#: webform.module:1002 +msgid "You must <a href=\"!login\">login</a> or <a href=\"!register\">register</a> to view this form." +msgstr "Abyste mohli zobrazit tento formulář, musíte se <a href=\"!login\">přihlásit</a> nebo <a href=\"!register\">zaregistrovat</a>." + +#: webform.module:1006 +msgid "You do not have permission to view this form." +msgstr "Nemáte oprávnění zobrazit tento formulář." + +#: webform.module:1013 +msgid "You have submitted this form the maximum number of times (@count)." +msgstr "Vyčerpal(a) jste maximální limit pro odeslání tohoto formuláře (@count)." + +#: webform.module:1016;1027 +msgid "You have already submitted this form." +msgstr "Tento formulář jste již odeslal(a)." + +#: webform.module:1019 +msgid "You may not submit another entry at this time." +msgstr "V tuto chvíli nemůžete formulář znovu odeslat." + +#: webform.module:1027;1030 +msgid "<a href=\"!url\">View your previous submissions</a>." +msgstr "<a href=\"!url\">Prohlédnout předchozí odeslané formuláře</a>." + +#: webform.module:1047 +msgid "Available components" +msgstr "Dostupné komponenty" + +#: webform.module:1050 +msgid "These are the available field types for your installation of Webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms." +msgstr "Toto jsou dostupné typy polí ve Vaší instalaci Formulářů. Kterékoliv z nich můžete deaktivovat příslušným zaškrtávacím políčkem. V nových i existujících formulářích budou k dispozici zaškrtnuté komponenty." + +#: webform.module:1067 +msgid "Default e-mail values" +msgstr "Výchozí hodnoty pro e-mail" + +#: webform.module:1074 +msgid "From address" +msgstr "Odchozí adresa" + +#: webform.module:1076 +msgid "The default sender address for emailed webform results; often the e-mail address of the maintainer of your forms." +msgstr "Výchozí adresa odesílatele vyplněných formulářů; často je to adresa správce formulářů." + +#: webform.module:1081 +msgid "From name" +msgstr "Jméno odesílatele" + +#: webform.module:1083 +msgid "The default sender name which is used along with the default from address." +msgstr "Výchozí jméno odesílatele, které se přidá k odchozí adrese." + +#: webform.module:1088 +msgid "Default subject" +msgstr "Výchozí předmět" + +#: webform.module:1089;2064 +msgid "Form submission from: %title" +msgstr "Vyplněný formulář %title" + +#: webform.module:1090 +msgid "The default subject line of any e-mailed results." +msgstr "Výchozí znění předmětu pro e-maily s vyplněnými formuláři." + +#: webform.module:1095 +msgid "Advanced options" +msgstr "Pokročilá nastavení" + +#: webform.module:1103 +msgid "Allow cookies for tracking submissions" +msgstr "Povolit cookies pro sledování výsledků" + +#: webform.module:1105 +msgid "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, Webform also uses IP addresses and site usernames to prevent repeated submissions." +msgstr "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> lze použít, aby stejný uživatel nemohl opakovaně odesílat stejný formulář. Tato volba není nezbytná pro omezování počtu odeslání jednotlivými uživateli, ale v některých případech může zvýšit přesnost. Kromě cookies využívají Formuláře také záznamy IP adres a jména registrovaných uživatelů." + +#: webform.module:1110 +msgid "Default export format" +msgstr "Výchozí exportní formát" + +#: webform.module:1117 +msgid "Default export delimiter" +msgstr "Výchozí oddělovač pro export" + +#: webform.module:1133 +msgid "Webforms debug" +msgstr "Ladění formuláře" + +#: webform.module:1135 +msgid "Off" +msgstr "Vypnuto" + +#: webform.module:1135 +msgid "Log submissions" +msgstr "Zaznamenávat výsledky" + +#: webform.module:1135 +msgid "Full debug" +msgstr "Úplný záznam" + +#: webform.module:1136 +msgid "Set to \"Log submissions\" to log all submissions in the watchdog. Set to \"Full debug\" to print debug info on submission." +msgstr "Nastavte na \"Zaznamenávat výsledky\" a všechny odeslané formuláře se zapíší do logu. Nastavte na \"Úplný záznam\" a budou se navíc ukládat i ladící informace." + +#: webform.module:1152 +msgid "Enabled" +msgstr "Povoleno" + +#: webform.module:1186 +msgid "Submission #@sid" +msgstr "Odeslaný formulář #@sid" + +#: webform.module:1206;1206 +msgid "Previous submission" +msgstr "Předchozí odeslaný formulář" + +#: webform.module:1209;1209 +msgid "Next submission" +msgstr "Následující odeslaný formulář" + +#: webform.module:1213 +msgid "Submission Information" +msgstr "Informace o formuláři" + +#: webform.module:1222 +msgid "Form: !form" +msgstr "Formulář: !form" + +#: webform.module:1225 +msgid "Submitted by !name" +msgstr "Odesláno uživatelem !name" + +#: webform.module:1265 +msgid "Next Page >" +msgstr "Další stránka >" + +#: webform.module:1266 +msgid "< Previous Page" +msgstr "< Předchozí stránka" + +#: webform.module:1384 +msgid "The webform component @type is not able to be displayed" +msgstr "Komponentu typu @typu není možné zobrazit" + +#: webform.module:1580 +msgid "Possible spam attempt from @remote_addr" +msgstr "Možný pokus o spam z adresy @remote_addr" + +#: webform.module:1581 +msgid "Illegal information. Data not submitted." +msgstr "Nesprávné údaje. Data nebyla odeslána." + +#: webform.module:1619 +msgid "Submission posted to %title" +msgstr "Formulář byl odeslán na %title" + +#: webform.module:1624 +msgid "Submission updated." +msgstr "Odeslaný formulář byl aktualizován." + +#: webform.module:1708 +msgid "Thank you, your submission has been received." +msgstr "Díky, Váš formulář byl doručen." + +#: webform.module:1744 +msgid "Submitted on" +msgstr "Odesláno" + +#: webform.module:1748 +msgid "Submitted by user" +msgstr "Odesláno uživatelem" + +#: webform.module:1751 +msgid "Submitted by anonymous user" +msgstr "Odesláno anonymním uživatelem" + +#: webform.module:1755 +msgid "Submitted values are:" +msgstr "Odeslané údaje:" + +#: webform.module:1759 +msgid "The results of this submission may be viewed at:" +msgstr "Tento odeslaný formulář lze zobrazit zde:" + +#: webform.module:2076;2077;2078;2079;2080;2083 +msgid "key" +msgstr "klíč" + +#: webform.module:2087 +msgid "You may use special tokens in this field that will be replaced with dynamic values." +msgstr "V tomto poli můžete používat speciální symboly, které budou dynamicky nahrazovány skutečnými hodnotami." + +#: webform.module:2089 +msgid "You can use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables, %session[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> variables and %get[key] to create prefilled forms from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. %cookie, %request and %post also work with their respective PHP variables. For example %server[HTTP_USER_AGENT], %session[id], or %get[q]." +msgstr "Symbol %server[key] můžete použít k přidání libovolné speciální proměnné PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a>. Symbol %session[key] slouží k přidání libovolné speciální proměnné PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a>, symbol %get[key] pak k vytvoření předvyplněných polí formuláře z <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. Symboly %cookie, %request a %post lze rovněž používat s odpovídajícími proměnnými PHP. Například %server[HTTP_USER_AGENT], %session[id] nebo %get[q]." + +#: webform.module:2091 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "Pokud používáte modul pro profily, můžete ke všem datům v profilech s použitím syntaxe %profile[form_name]. Například když máte hodnotu profilu nazvanou profile_city, použijte proměnnou %profile[profile_city]." + +#: webform.module:2095 +msgid "Token values" +msgstr "Hodnoty symbolu" + +#: webform.module:247 +msgid "create webforms" +msgstr "vytvářet formuláře" + +#: webform.module:247 +msgid "edit own webforms" +msgstr "upravovat vlastní formuláře" + +#: webform.module:247 +msgid "edit webforms" +msgstr "upravovat formuláře" + +#: webform.module:247 +msgid "access webform results" +msgstr "přístup k odeslaným formulářům" + +#: webform.module:247 +msgid "clear webform results" +msgstr "mazat odeslané formuláře" + +#: webform.module:247 +msgid "access own webform submissions" +msgstr "přístup k vlastním odeslaným formulářům" + +#: webform.module:247 +msgid "edit own webform submissions" +msgstr "upravovat vlastní odeslané formuláře" + +#: webform.module:247 +msgid "edit webform submissions" +msgstr "upravovat odeslané formuláře" + +#: webform.module:247 +msgid "use PHP for additional processing" +msgstr "používat PHP na dodatečné zpracování" + +#: webform.install:146 +msgid "Webform module installed module tables successfully." +msgstr "Modul Formuláře úspěšně nainstaloval potřebné tabulky databáze." + +#: webform.install:149 +msgid "The installation of webform module was unsuccessful." +msgstr "Instalace modulu Formuláře se nezdařila." + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "Umožňuje vytváření dotazníků, anket a jiných formulářů." + +#: components/date.inc:37 +#: components/email.inc:38 +#: components/hidden.inc:33 +#: components/select.inc:49 +#: components/textarea.inc:39 +#: components/textfield.inc:41 +#: components/time.inc:36 +msgid "Default value" +msgstr "Výchozí hodnota" + +#: components/date.inc:39 +#: components/email.inc:40 +#: components/hidden.inc:35 +#: components/textarea.inc:41 +#: components/textfield.inc:43 +#: components/time.inc:38 +msgid "The default value of the field." +msgstr "Implicitní hodnota tohoto pole." + +#: components/date.inc:39 +msgid "Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid." +msgstr "Podporuje zápis datumu ve formátu <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Například řetězce 'dnes', '+2 měsíce' nebo '9.prosince 2004' jsou korektní." + +#: components/date.inc:46 +#: components/time.inc:46 +msgid "Timezone" +msgstr "Časová zóna" + +#: components/date.inc:48 +msgid "Adjust the date according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "Upravte datum v závislosti na časové zóně. Časová zóna webu je nastavena v <a href=\"!settings\">Nastavení Webu</a> a představuje výchozí hodnotu." + +#: components/date.inc:49 +msgid "Website timezone" +msgstr "Časová zóna webu" + +#: components/date.inc:49 +msgid "User timezone" +msgstr "Časová zóna uživatele" + +#: components/date.inc:49 +msgid "GMT" +msgstr "GMT" + +#: components/date.inc:54 +#: components/time.inc:54 +msgid "Observe Daylight Savings" +msgstr "Letní čas" + +#: components/date.inc:57 +#: components/time.inc:57 +msgid "Automatically adjust the time during daylight savings." +msgstr "Automaticky upravit čas při přechodu na letní čas." + +#: components/date.inc:63 +msgid "Start year" +msgstr "Počáteční rok" + +#: components/date.inc:65 +msgid "The first year that is allowed to be entered." +msgstr "První letopočet, který je možné zadat." + +#: components/date.inc:72 +msgid "End year" +msgstr "Konečný rok" + +#: components/date.inc:74 +msgid "The last year that is allowed to be entered." +msgstr "Poslední letopočet, který je možné zadat." + +#: components/date.inc:81 +msgid "Use a textfield for year" +msgstr "Pro rok použít textové pole" + +#: components/date.inc:83 +msgid "If checked, the generated date field will use a textfield for the year. Otherwise it will use a select list." +msgstr "Pokud je povoleno, vygenerovaná pole pro datum budou mít pro letopočet textové pole. Jinak se použije rozbalovací menu." + +#: components/date.inc:188 +msgid "Year" +msgstr "Rok" + +#: components/date.inc:205 +msgid "!name field is required." +msgstr "Pole !name musí být vyplněno." + +#: components/date.inc:212 +msgid "Entered !name is not a valid date." +msgstr "Vložená hodnota !name není korektní datum." + +#: components/date.inc:219 +msgid "The entered date needs to be between the years @start and @end." +msgstr "Letopočet vloženého data musí být v rozmezí @start a @end." + +#: components/date.inc:292 +msgid "Presents month, day, and year fields." +msgstr "Představuje pole pro měsíc, den a rok." + +#: components/date.inc:349 +#: components/email.inc:196 +#: components/file.inc:476 +#: components/textarea.inc:158 +#: components/textfield.inc:203 +#: components/time.inc:297 +msgid "Left Blank" +msgstr "Nevyplněno" + +#: components/date.inc:350 +#: components/email.inc:197 +#: components/textarea.inc:159 +#: components/textfield.inc:204 +#: components/time.inc:298 +msgid "User entered value" +msgstr "Vyplněno uživatelem" + +#: components/email.inc:49 +msgid "User email as default" +msgstr "Adresa uživatele jako výchozí" + +#: components/email.inc:51 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "Pokud je uživatel přihlášen, použije se jeho e-mailová adresa jako výchozí hodnota tohoto pole." + +#: components/email.inc:58 +#: components/file.inc:122 +#: components/textarea.inc:48 +#: components/textfield.inc:50 +msgid "Width" +msgstr "Šířka" + +#: components/email.inc:60 +#: components/textarea.inc:50 +#: components/textfield.inc:52 +msgid "Width of the textfield." +msgstr "Šířka textového pole." + +#: components/email.inc:60 +#: components/file.inc:124 +#: components/textarea.inc:50;58 +#: components/textfield.inc:52 +msgid "Leaving blank will use the default size." +msgstr "Pokud zůstane nevyplněno, použije se výchozí velikost." + +#: components/email.inc:66 +#: components/hidden.inc:46 +#: components/select.inc:72 +msgid "E-mail a submission copy" +msgstr "Poslat kopii odeslaného formuláře" + +#: components/email.inc:69 +#: components/hidden.inc:49 +#: components/select.inc:75 +msgid "Check this option if this component contains an e-mail address that should get a copy of the submission. Emails are sent individually so other emails will not be shown to the recipient." +msgstr "Pokud je povoleno a tato komponenta obsahuje e-mailovou adresu, odešle se na ni kopie vyplněného formuláře. E-mailové zprávy se posílají každá zvlášť, takže příjemce neuvidí adresy ostatních." + +#: components/email.inc:73 +#: components/textarea.inc:64 +#: components/textfield.inc:86 +msgid "Disabled" +msgstr "Vypnuto" + +#: components/email.inc:75 +#: components/textarea.inc:66 +#: components/textfield.inc:88 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "Obsah pole nebude možné měnit. Užitečné pro zadávání fixních výchozích hodnot." + +#: components/email.inc:134 +msgid "%value is not a valid email address." +msgstr "%value není korektní e-mailová adresa." + +#: components/email.inc:163 +msgid "A textfield that automatically fills in a logged-in user's e-mail." +msgstr "Textová pole, do kterého se automaticky vyplní e-mailová adresa přihlášeného uživatele." + +#: components/email.inc:198 +#: components/hidden.inc:139 +#: components/textarea.inc:160 +#: components/textfield.inc:205 +msgid "Average submission length in words (ex blanks)" +msgstr "Průměrná délka zadané hodnoty (kromě mezer)" + +#: components/fieldset.inc:34 +msgid "Collapsible" +msgstr "Rozbalitelná" + +#: components/fieldset.inc:36 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "Pokud je tato skupina polí rozbalitelná, uživatelé ji budou moci otevírat a zavírat." + +#: components/fieldset.inc:41 +msgid "Collapsed by Default" +msgstr "Implicitně sbalená" + +#: components/fieldset.inc:43 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "Rozbalitelné skupiny polí jsou implicitně \"otevřené\". Tato volba nastaví výchozí stav této skupiny polí na \"zavřený\"." + +#: components/fieldset.inc:95 +msgid "Fieldsets allow you to organize multiple fields into groups." +msgstr "Skupiny polí umožňují roztřídit jednotlivá pole do skupin." + +#: components/file.inc:44 +msgid "Upload Filtering" +msgstr "Filtrování souborů" + +#: components/file.inc:45 +msgid "Select the types of uploads you would like to allow." +msgstr "Zvolte typy souborů, které bude možné nahrávat." + +#: components/file.inc:55 +msgid "Web Images" +msgstr "Webové obrázky" + +#: components/file.inc:63 +msgid "Desktop Images" +msgstr "Obrázky" + +#: components/file.inc:71 +msgid "Documents" +msgstr "Dokumenty" + +#: components/file.inc:79 +msgid "Media" +msgstr "Multimediální" + +#: components/file.inc:87 +msgid "Archives" +msgstr "Archivy" + +#: components/file.inc:94 +msgid "Additional Extensions" +msgstr "Další přípony" + +#: components/file.inc:96 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "Vložte seznam dalších přípon souborů pro toto pole, oddělených čárkami.<br />Vložené přípony se přidají k ostatním povoleným výše." + +#: components/file.inc:104 +msgid "Max Upload Size" +msgstr "Maximální velikost" + +#: components/file.inc:106 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "Vložte horní limit pro velikost nahrávaného souboru v KB." + +#: components/file.inc:113 +msgid "Upload Directory" +msgstr "Adresář pro soubory" + +#: components/file.inc:115 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "Nahrané soubory se implicitně ukládají do adresáře files. Zde můžete zvolit jeho podadresář." + +#: components/file.inc:124 +msgid "Width of the file field." +msgstr "Šířka pole pro soubory." + +#: components/file.inc:139 +msgid "The save directory %directory could not be created. Check that the webform files directory is writtable." +msgstr "Adresář pro soubory %directory se nepodařilo vytvořit. Zkontrolujte, zda je adresář pro soubory k formulářům zapisovatelný." + +#: components/file.inc:242 +msgid "Category" +msgstr "Kategorie" + +#: components/file.inc:242 +msgid "Types" +msgstr "Typy" + +#: components/file.inc:291 +#: components/time.inc:166 +msgid "%field field is required." +msgstr "Pole %field musí být vyplněno." + +#: components/file.inc:324 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "Soubory s příponou '%ext' není možné nahrávat. Povolené přípony jsou %exts." + +#: components/file.inc:329 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "Soubor %filename je příliš velký (%filesize KB). Horní limit pro velikost souboru je %maxsize KB." + +#: components/file.inc:357 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "Nahraný soubor %filename se nepodařilo uložit. Zkontrolujte, zda je cílový adresář zapisovatelný." + +#: components/file.inc:365 +msgid "The uploaded file was unable to be saved. The destination directory does not exist." +msgstr "Nahraný soubor %filename se nepodařilo uložit. Cílový adresář neexistuje." + +#: components/file.inc:411 +msgid "Uploading a new file will replace the current file." +msgstr "Nahráním nového souboru se přepíše ten původní." + +#: components/file.inc:442 +msgid "Allow users to submit files of the configured types." +msgstr "Umožní uživatelům odesílat soubory povolených typů." + +#: components/file.inc:477 +msgid "User uploaded file" +msgstr "Soubor nahraný uživatelem" + +#: components/file.inc:478 +msgid "Average uploaded file size" +msgstr "Průměrná velikost nahraného souboru" + +#: components/file.inc:522 +msgid "Filesize (KB)" +msgstr "Velikost souboru (KB)" + +#: components/grid.inc:37 +#: components/select.inc:39 +msgid "Options" +msgstr "Možnosti" + +#: components/grid.inc:39 +msgid "Options to select across the top. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "Možnosti pro výběr jsou umístěny ve formuláři vedle sebe a zde se zadávají ve formě jedné volby na jeden řádek. Je také možné zadat dvojici oddělenou znakem roury (|), tedy například klíč|Text." + +#: components/grid.inc:47 +msgid "Questions" +msgstr "Otázky" + +#: components/grid.inc:49 +msgid "Questions list down the left side. One question per line." +msgstr "Otázky se zobrazují ve formuláři vlevo pod sebou a zde zadávají se ve formě jedné otázky na jeden řádek." + +#: components/grid.inc:57 +msgid "Randomize Options" +msgstr "Zamíchat možnosti" + +#: components/grid.inc:59 +msgid "Randomizes the order of options on the top when they are displayed in the form." +msgstr "Ve formuláři náhodně změní pořadí možností pro výběr." + +#: components/grid.inc:63 +msgid "Randomize Questions" +msgstr "Zamíchat otázky" + +#: components/grid.inc:65 +msgid "Randomize the order of the questions on the side when they are displayed in the form." +msgstr "Ve formuláři náhodně změní pořadí otázek." + +#: components/grid.inc:208 +msgid "Allows creation of grid questions, denoted by radio buttons." +msgstr "Umožňuje tvorbu mřížky otázek, kde možnosti odpovědí jsou ve formě přepínacích políček." + +#: components/hidden.inc:92 +msgid "@name (hidden)" +msgstr "@name (skrytá)" + +#: components/hidden.inc:104 +msgid "A field which is not visible to the user, but is recorded with the submission." +msgstr "Pole, které je pro uživatele neviditelné, ale počítá se jako součást formuláře." + +#: components/hidden.inc:137 +msgid "Empty" +msgstr "Prádný" + +#: components/hidden.inc:138 +msgid "Non-empty" +msgstr "Neprázdný" + +#: components/markup.inc:36 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "Pole se značkováním umožňuje vkládat do formuláře vlastní kód HTML nebo PHP." + +#: components/markup.inc:98 +msgid "Displays text as HTML in the form; does not render a field." +msgstr "Zobrazí text ve formuláři jako HTML - nevytváří samostatné pole." + +#: components/pagebreak.inc:27 +msgid "Use caution when combining the pagebreak and file components. File components will not be submitted unless they are after the last pagebreak in the form." +msgstr "Při současném používání komponent pro vícestránkový formulář a nahrávání souborů mějte na paměti, že soubory je nutné nahrávat na poslední stránce formuláře, jinak nebudou odeslány." + +#: components/pagebreak.inc:54 +msgid "Break up a multi-page form." +msgstr "Rozdělí formulář na stránky." + +#: components/select.inc:41 +msgid "A list of selectable options. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "Možnosti pro výběr se zadávají ve formě jedné volby na jeden řádek. Je také možné zadat dvojici oddělenou znakem roury (|), tedy například klíč|Text." + +#: components/select.inc:51 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "Výchozí hodnota pole. U vícenásobné výchozí hodnoty v menu oddělte hodnoty čárkou." + +#: components/select.inc:58 +msgid "Multiple" +msgstr "Vícenásobné" + +#: components/select.inc:61 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "Pokud je povoleno, v menu bude možné označovat více než jednu volbu najednou." + +#: components/select.inc:65 +msgid "Listbox" +msgstr "Menu" + +#: components/select.inc:68 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "Pokud je povoleno, jednotlivé volby budou umístěny do rozbalovacího menu namísto přepínacích políček." + +#: components/select.inc:76 +msgid "To use the option with a select component, you must use key-value pairs seperated by pipes. i.e. user@example.com|Sample user." +msgstr "Při použití s rozbalovacím menu je nutné zadávat hodnoty jako dvojice klíč-hodnota oddělené znakem roury, např. uzivatel@priklad.cz|Jmeno." + +#: components/select.inc:271 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "Umožňuje vytváření zaškrtávacích a přepínacích políček a rozbalovacích menu." + +#: components/textarea.inc:56 +msgid "Height" +msgstr "Výška" + +#: components/textarea.inc:58 +msgid "Height of the textfield." +msgstr "Výška textového pole." + +#: components/textarea.inc:125 +msgid "A large text area that allows for multiple lines of input." +msgstr "Větší plocha pro víceřádkový text." + +#: components/textfield.inc:59 +msgid "Maxlength" +msgstr "Max. délka" + +#: components/textfield.inc:61 +msgid "Maxlength of the textfield." +msgstr "Maximální délka textového pole." + +#: components/textfield.inc:68 +msgid "Label placed to the left of the textfield" +msgstr "Znak pro textové pole zleva" + +#: components/textfield.inc:70 +msgid "Examples: $, #, -." +msgstr "Příklady: $, #, -." + +#: components/textfield.inc:77 +msgid "Label placed to the right of the textfield" +msgstr "Znak pro textové pole zprava" + +#: components/textfield.inc:79 +msgid "Examples: lb, kg, %." +msgstr "Příklady: kg, cm, %." + +#: components/textfield.inc:170 +msgid "Basic textfield type." +msgstr "Základní textové pole." + +#: components/time.inc:38 +msgid "Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are all valid." +msgstr "Podporuje zápis času ve formátu <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Například řetězce 'nyní', '+2 hodiny' nebo '10:30' jsou korektní." + +#: components/time.inc:48 +msgid "Adjust the time according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "Upravte datum v závislosti na časové zóně. Časová zóna webu je nastavena v <a href=\"!settings\">Nastavení Webu</a> a představuje výchozí hodnotu." + +#: components/time.inc:62 +msgid "Time Format" +msgstr "Formát času" + +#: components/time.inc:64 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Formát pro zobrazování času buď ve 12 nebo 24 hodinách." + +#: components/time.inc:118 +msgid "hour" +msgstr "hodina" + +#: components/time.inc:119 +msgid "minute" +msgstr "minuta" + +#: components/time.inc:122 +msgid "am" +msgstr "dopoledne" + +#: components/time.inc:122 +msgid "pm" +msgstr "odpoledne" + +#: components/time.inc:174 +msgid "Entered %name is not a valid time." +msgstr "Zadaná hodnota %name není korektní čas." + +#: components/time.inc:243 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "Poskytuje uživateli pole pro hodinu a minutu a volitelně také pro dopoledne/odpoledne." + +#~ msgid "Edit this component" +#~ msgstr "Upravit komponentu" + diff --git a/sites/all/modules/webform/translations/da.po b/sites/all/modules/webform/translations/da.po new file mode 100644 index 0000000000000000000000000000000000000000..dc5316f844244d452bc1aca52dace5d2f29359a9 --- /dev/null +++ b/sites/all/modules/webform/translations/da.po @@ -0,0 +1,572 @@ +# Danish translation of Drupal (webform.module) +# Copyright 2005 Morten Wulff <wulff@tem.dtu.dk> +msgid "" +msgstr "" +"Project-Id-Version: Danish Translation of Drupal (webform.module) $Id: da.po,v 1.2 2009/05/07 22:38:14 quicksketch Exp $\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2005-05-16 12:13+0100\n" +"Last-Translator: Morten Wulff <wulff@tem.dtu.dk>\n" +"Language-Team: Danish <danish@psyke.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-Language: Danish\n" +"X-Poedit-Country: DENMARK\n" + +#: webform.inc:11 +msgid "Title" +msgstr "Titel" + +#: webform.inc:12 +#: ;321;390 +msgid "View" +msgstr "Vis" + +#: webform.inc:14 +msgid "Operations" +msgstr "Handlinger" + +#: webform.inc:51 +msgid "Do you really want to delete all submissions for this form?" +msgstr "Ønsker du at slette alle tilbagemeldinger fra denne formular?" + +#: webform.inc:52 +msgid "Do you really want to delete <strong>all</strong> submissions for this form?" +msgstr "Ønsker du at slette <strong>alle</strong> tilbagemeldinger fra denne formular?" + +#: webform.inc:52 +#: ;72 +msgid "This action cannot be undone." +msgstr "Denne handling kan ikke fortrydes." + +#: webform.inc:71 +#: ;72 +msgid "Do you really want to delete this form submission?" +msgstr "Ønsker du at slette denne formular?" + +#: webform.inc:149 +msgid "#" +msgstr "#" + +#: webform.inc:286 +msgid "Date" +msgstr "Dato" + +#: webform.inc:286 +msgid "User" +msgstr "Bruger" + +#: webform.inc:286 +msgid "Action" +msgstr "Handling" + +#: webform.inc:322 +#: ;391 +msgid "Delete" +msgstr "Slet" + +#: webform.inc:502 +msgid "Unique Users Only" +msgstr "Kun unikke brugere" + +#: webform.inc:502 +msgid "Unique IPs Only" +msgstr "Kun unikke IP adresser" + +#: webform.inc:503 +msgid "Analog Bar" +msgstr "Bjælke" + +#: webform.inc:503 +msgid "Percentage" +msgstr "Procentdel" + +#: webform.inc:503 +msgid "Tallies" +msgstr "Sammentællinger" + +#: webform.inc:503 +msgid "Covariance Matrix" +msgstr "Kovariant matrice" + +#: webform.inc:605 +msgid "Q" +msgstr "Q" + +#: webform.inc:605 +msgid "choice" +msgstr "valg" + +#: webform.inc:605 +msgid "responses" +msgstr "besvarelser" + +#: webform.inc:661 +msgid "Left Blank" +msgstr "Tomme" + +#: webform.inc:661 +msgid "Default" +msgstr "Standard" + +#: webform.inc:661 +msgid "User entered value" +msgstr "Indtastet af bruger" + +#: webform.inc:661 +msgid "Average submission length in words (ex blanks)" +msgstr "Gennemsnitlig længde af bidrag" + +#: webform.module:26 +msgid "Webforms are forms and questionnaires. To add one select <strong>create content -> webform</strong>. Below you can set different security and debug options." +msgstr "Webforms er formularer og spørgeskemaer. Vælg <strong>opret indhold -> webform</strong> for at oprette en webform. Her kan du ændre indstillinger for sikkerhed og fejlsøgning." + +#: webform.module:29 +msgid "" +"<p>This module lets you create forms or questionnaires and define there content. Submissions from these forms are stored in the database and optionaly also send by e-mail to a predefined address.</p>\n" +"<p>Here is how to create one:\n" +"<ul>\n" +"\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description that is displayed as a teaser and above the actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be displayed after a successful submission.</li>\n" +" <li>Select which roles who should have submission access to this form (roles that have the "use all webforms" permision can allways use a webform).</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionaly add a email address to which submissions will be send. If no email address is specified no email will be send when submissions are made through the form.</li>\n" +" <li>Optionally select an email component that will be used to populate the return email address on any sent email.</ul>\n" +" <li>Optionally select a textfield component that will be used to populate the subject email field on any sent email.</ul>\n" +"</ul>\n" +"Help on adding and how to configure the components will be shown after adding your first component.\n" +"</p>\n" +"<p>On user submissions the form content is stored in the database table <i>webform_submitted_data</i> as key-value pairs. Apart from the form fields the following "special" fields are added:\n" +"<ul>\n" +" <li> __userid : UID of the submiting user.</li>\n" +" <li> __timestamp : UNIX timestamp for when the submission occured.</li>\n" +" <li> __remotehost : IP or name of the remote host from which the submission came.</li>\n" +" <li> __useragent : What user agent (browser) the user used upon submitting the data.</li>\n" +"</ul>\n" +msgstr "" +"<p>Dette modul gør det muligt at oprette formularer eller spørgeskemaer. Indsendte besvarelser gemmes i databasen og kan sendes via e-mail til en valgfri adresse.</p>\n" +"<p>Sådan opretter du en webform:\n" +"<ul>\n" +"\n" +"<li>Gå til opret indhold tilføj en webform</li>\n" +"<li>Indtast en beskrivelse, der vises om sammendrag og over selve formularen.</li>\n" +"<li>Indtast en bekræftelse eller viderestilling, der vises når formularen indsendes.</li>\n" +"<li>Vælg hvilke roller der skal kunne indsende formularer (roller der har rettigheden \"brug alle formularer\" kan altid udfylde formularer).</li>\n" +"<li>Tilføj en eller flere komponenter til formularen.</li>\n" +"<li>Tilføj evt. en e-mail adresse som resultatet af formularen sendes til.</li>\n" +"<li>Tilføj evt. en e-mail komponent som bruges som afsenderadresse på afsendte e-mails.</li>\n" +"<li>Tilføj evt. et tekstfelt som bruges som emne på afsendte e-mails.</li>\n" +"</ul>\n" +"Hjælp til oprettelse og tilpasning af komponenter vises når du har tilføjet den første komponent.\n" +"</p>\n" +"<p>Når formularen indsendes gemmes data i tabellen <em>webform_submitted_data</em> som nøgle-værdi par. Udover formularens felter gemmes følgende data:\n" +"<ul>\n" +"<li>__userid: brugerens UID</li>\n" +"<li>__timestamp: tidspunktet hvor formularen blev indsendt</li>\n" +"<li>__remotehost: IP eller domæne for værten hvorfra formularen blev udfyldt.</li>\n" +"<li>__useragent: Hvilken browser der blev brugt til at udfylde formularen.</li>\n" +"</ul>\n" + +#: webform.module:54 +msgid "Enables the creation of forms and questionnaires." +msgstr "Gør det muligt at oprette formularer og spørgeskemaer." + +#: webform.module:57 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "En webform kan være et spørgeskema, en kontaktformular eller en bestillingsformular. Den kan bruges til at lade besøgende kontakte dig, tilmelde sig til arrangementer eller deltage i undersøgelser." + +#: webform.module:60 +msgid "Available variables are: %username, %useremail, %site, %date." +msgstr "Tilgængelige variable er: %username, %useremail, %site, %date." + +#: webform.module:61 +msgid "You can also use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables and %get[key] to create prefilled forms from from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>." +msgstr "Du kan bruge %server[key] til at tilføje en af PHPs <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variable og %get[key] til at oprette udfyldte formularer via <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URLen</a>." + +#: webform.module:63 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "Hvis du bruger profil modulet kan du tilgå profildata med syntaksen %profile[form_name]. Hvis du har et profilfelt med navnet profile_city kandu bruge variablen %profile[profile_city]." + +#: webform.module:237 +msgid "Update from version %a to version %b" +msgstr "Opdater fra version %a til version %b" + +#: webform.module:242 +msgid "Allow cross site posting" +msgstr "Tillad indlæg fra andre netsteder" + +#: webform.module:244 +msgid "Yes" +msgstr "Ja" + +#: webform.module:244 +msgid "No" +msgstr "Nej" + +#: webform.module:245 +msgid "Allow postings to your webforms that do not originating from your sites domain." +msgstr "Tillad brug af dine webforms fra andre domæner." + +#: webform.module:247 +msgid "Webforms Debug" +msgstr "Webforms fejlsøgning" + +#: webform.module:250 +msgid "DEBUG for the webform module" +msgstr "Fejlsøgning for webforms modulet" + +#: webform.module:251 +msgid "Set this option to \"Log submissions\" to log all submissions in the watchdog. Set it to \"Full debug\" to print debug info on submission. You probably want to leave this option on \"OFF\"." +msgstr "Sæt denne til \"Gem bidrag\" for at gemme alle bidrag i systemloggen. Set den til \"Fuld fejlsøgning\" for at gemme yderligere information om hvert bidrag. Bør sættes til \"Fra\"." + +#: webform.module:253 +msgid "Show main webform menu" +msgstr "Vis webform menuen" + +#: webform.module:255 +msgid "Select the visibility of the main webform item on the main menu" +msgstr "Angiv om webform skal vises på hovedmenuen" + +#: webform.module:291 +msgid "The form component has been changed. Remember to press Submit on the bottom of this form to save your changes." +msgstr "Formularkomponent ændret. Husk at vælge Indsend nederst på siden for at gemme dine ændringer." + +#: webform.module:296 +msgid "The form component has been deleted. Remember to press Submit on the bottom of this form to save your changes." +msgstr "Formularkomponent slettet. Husk at vælge Indsend nederst på siden for at gemme dine ændringer." + +#: webform.module:302 +msgid "You have to specify a form description." +msgstr "Du skal angive en beskrivelse." + +#: webform.module:310 +msgid "You have to specify a confirmation message." +msgstr "Du skal angive en bekræftelse." + +#: webform.module:337 +msgid "Webform upgrade page" +msgstr "Webform opgradering" + +#: webform.module:368 +msgid "results" +msgstr "resultater" + +#: webform.module:405 +msgid "go to form" +msgstr "gå til formular" + +#: webform.module:405 +msgid "View this form." +msgstr "Vis formular" + +#: webform.module:408 +msgid "Go back to the form" +msgstr "Tilbage til formularen" + +#: webform.module:418 +msgid "textfield" +msgstr "tekstfelt" + +#: webform.module:419 +msgid "textarea" +msgstr "tekstområde" + +#: webform.module:420 +msgid "select" +msgstr "valg" + +#: webform.module:421 +msgid "label" +msgstr "etiket" + +#: webform.module:422 +msgid "hidden" +msgstr "skjult" + +#: webform.module:423 +msgid "e-mail address" +msgstr "e-mail adresse" + +#: webform.module:435 +msgid "Use access" +msgstr "Brug adgang" + +#: webform.module:435 +msgid "Roles that should be able to submit data using this form." +msgstr "Roller der kan indsende data gennem denne formular." + +#: webform.module:441;650 +msgid "Description" +msgstr "Beskrivelse" + +#: webform.module:442 +msgid "Text to be shown as teaser and before the form." +msgstr "Tekst der vises som sammendrag og før formularen." + +#: webform.module:445 +msgid "Confirmation message or redirect URL" +msgstr "Bekræftelse eller URL der viderestilles til" + +#: webform.module:447 +msgid "Message to be shown upon successful submission or an absolute path to a redirect page (must start with http://)" +msgstr "Meddelelse der vises når formularen indsendes eller den fulstændige sti til en side der skal viderestilles til (skal starte med http://)" + +#: webform.module:473 +msgid "To edit a component, check its \"selected\" box and press \"Edit selected\"." +msgstr "For at redigere en komponent skal du markere dens \"valgt\" boks og klikke på \"Rediger valgte\"." + +#: webform.module:474 +msgid "To delete a component, check its \"selected\" box and press \"Delete selected\"." +msgstr "For at slette en komponent skal du markere dens \"valgt\" boks og klikke på \"Slet valgte\"." + +#: webform.module:475 +msgid "Use \"value\" to enter a default value." +msgstr "Brug \"værdi\" til at angive en standardværdi." + +#: webform.module:476 +msgid "Check \"mandatory\" box if the field should be mandatory." +msgstr "Marker \"påkrævet\" hvis feltet er påkrævet." + +#: webform.module:477 +msgid "Remember to set weight on the components or they will be added to the form in a random order." +msgstr "Husk at angiver komponenternes vægt, ellers bliver de tilføjet formularen i tilfældig rækkefølge." + +#: webform.module:478 +msgid "The components are sorted first by weight and then by name." +msgstr "Komponenterne sorteres først efter vægt og derefter efter navn." + +#: webform.module:481 +msgid "Form components" +msgstr "Formularkomponenter" + +#: webform.module:483 +msgid "Select" +msgstr "Valg" + +#: webform.module:484;648 +msgid "Name" +msgstr "Navn" + +#: webform.module:485 +msgid "Type" +msgstr "Type" + +#: webform.module:486 +msgid "Value" +msgstr "Værdi" + +#: webform.module:487 +msgid "Mandatory" +msgstr "Påkrævet" + +#: webform.module:488 +msgid "Weight" +msgstr "Vægt" + +#: webform.module:492 +msgid "Edit selected" +msgstr "Rediger valgte" + +#: webform.module:493 +msgid "Delete selected" +msgstr "Slet valgte" + +#: webform.module:497 +msgid "Add a new component" +msgstr "Tilføj ny komponent" + +#: webform.module:498 +msgid "Select a component type to add." +msgstr "Vælg hvilken kompnonenttype du ønsker at tilføje." + +#: webform.module:499;628 +msgid "Add" +msgstr "Tilføj" + +#: webform.module:501 +msgid "E-mail to address" +msgstr "E-mail 'til' adresse" + +#: webform.module:503 +msgid "Form submissions will be e-mailed to this address. Leave blank for none." +msgstr "Bidrag e-mailes til denne adresse. Lad feltet stå tomt hvis du ikke ønsker at modtage e-mail." + +#: webform.module:522 +msgid "E-mail from address" +msgstr "E-mail 'fra' adresse" + +#: webform.module:523 +msgid "Form e-mails will have this return address. Choose Automatic for the default" +msgstr "Formular e-mails har denne afsenderadresse. Vælg Automatisk for at bruge standardadressen." + +#: webform.module:525 +msgid "E-mail subject" +msgstr "E-mail emne" + +#: webform.module:526 +msgid "Form e-mails will have this subject line. Choose Automatic for the default" +msgstr "Formular e-mails har dette emne. Vælg Automatisk for at bruge standardemnet." + +#: webform.module:551 +msgid "Unauthorized webform access attempt" +msgstr "Uautoriseret forsøg på at tilgå webform" + +#: webform.module:586 +msgid "Preview" +msgstr "Gennemse" + +#: webform.module:589 +msgid "Submit" +msgstr "Indsend" + +#: webform.module:621 +msgid "Page called out of order" +msgstr "Side kaldt uden for rækkefølge" + +#: webform.module:649 +msgid "Name of the field. This is used as a descriptive label and as the key when saving data in the database." +msgstr "Feltets navn. Bruges som beskrivelse af feltet og som nøgle når data gemmes i databasen." + +#: webform.module:652 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "En kort beskrivelse af feltet som hjælp til brugeren når hun udfylder formularen." + +#: webform.module:659;666;678;685;706 +msgid "Default value" +msgstr "Standardværdi" + +#: webform.module:659 +msgid "The default value of a email field is always the users email address if he/she is logged in." +msgstr "Standardværdien af et e-mail felt er altid brugerens e-mail adresse hvis hun er logget ind." + +#: webform.module:660;672;691 +msgid "Width" +msgstr "Bredde" + +#: webform.module:662;674 +msgid "Width of the textfield." +msgstr "Tekstfeltets bredde." + +#: webform.module:668 +msgid "The default value of the field." +msgstr "Feltets standardværdi." + +#: webform.module:680 +msgid "The value of the field." +msgstr "Feltets værdi." + +#: webform.module:687 +msgid "The default value of the area." +msgstr "Områdets standardværdi." + +#: webform.module:693 +msgid "Width of the textarea." +msgstr "Tekstområdets bredde." + +#: webform.module:695 +msgid "Height" +msgstr "Højde" + +#: webform.module:697 +msgid "Height of the textarea." +msgstr "Tekstområdets højde." + +#: webform.module:701 +msgid "Options" +msgstr "Valg" + +#: webform.module:703 +msgid "Enter one option per line." +msgstr "Indtast en valgmulighed pr. linje." + +#: webform.module:708 +msgid "The preselected value." +msgstr "Den forvalgte værdi." + +#: webform.module:711 +msgid "Multiple" +msgstr "Flere" + +#: webform.module:713 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "Marker dette hvis du ønsker at brugeren skal kunne vælge flere værdier." + +#: webform.module:714 +msgid "Listbox" +msgstr "Rulleliste" + +#: webform.module:716 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "Vælg dette hvis du ønsker at bruge en rulleliste i stedet for radioknapper eller afkrydsningsfelter." + +#: webform.module:747 +msgid "Done" +msgstr "Færdig" + +#: webform.module:748 +msgid "Warning: This button will accept your changes as sub-part of the edit. You will still have to select <b>'submit'</b> on the next screen to make your changes permanent." +msgstr "Advarsel: Denne knap accepterer dine rettelser i denne del af formularen. Du skal stadig vælge <strong>indsend</strongs> på næste side for at gøre dine rettelser permanente." + +#: webform.module:766 +msgid "Trying to post to webform from external domain." +msgstr "Forsøg på at kalde webform fra eksternt domæne." + +#: webform.module:768 +msgid "Visit referer" +msgstr "Besøg" + +#: webform.module:769 +msgid "You are not allowed to post to this form from an external domain." +msgstr "Du har ikke adgang til at bruge denne formular fra et eksternt domæne." + +#: webform.module:778 +msgid "You are not allowed to submit data using this form." +msgstr "Du har ikke adgang til at indsende oplysninger via denne formular." + +#: webform.module:800 +msgid "Form submission from: " +msgstr "Formular indsendt fra:" + +#: webform.module:838 +msgid "Submission posted to " +msgstr "Sendt til" + +#: webform.module:966 +msgid "You have not completed the form. %s is a mandatory field." +msgstr "Du har ikke udfyldt formularen. %s er obligatorisk." + +#: webform.module:1018 +msgid "Submitted on" +msgstr "Indsendt den" + +#: webform.module:1022 +msgid "Submitted by user" +msgstr "Indsendt af" + +#: webform.module:1025 +msgid "Submitted by anonymous user" +msgstr "Indsendt af anonym bruger" + +#: webform.module:1027 +msgid "Submitted values are" +msgstr "Indsendte værdier" + +#: webform.module:1261 +msgid "Go back" +msgstr "Tilbage" + +#: webform.module:72 +msgid "maintain webforms" +msgstr "vedligehold webforms" + +#: webform.module:72 +msgid "create webforms" +msgstr "opret webforms" + +#: webform.module:72 +msgid "use all webforms" +msgstr "brug alle webforms" + diff --git a/sites/all/modules/webform/translations/de.po b/sites/all/modules/webform/translations/de.po new file mode 100644 index 0000000000000000000000000000000000000000..c51a919d7806333a270f22e6b79a5e3ad00119f3 --- /dev/null +++ b/sites/all/modules/webform/translations/de.po @@ -0,0 +1,1467 @@ +# LANGUAGE translation of Drupal (webform.inc) +# Generated from files: +# webform.pot,v 1.1.2.1 2007/06/13 03:05:25 quicksketch +# Copyright 2007 Thomas Klein <tkl-online@gmx.de> +msgid "" +msgstr "" +"Project-Id-Version: German translation of Webforms\n" +"POT-Creation-Date: 2009-02-27 23:13+0100\n" +"PO-Revision-Date: 2010-01-11 00:31+0100\n" +"Last-Translator: Frank Spade <frank@spade.de>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: webform-confirmation.tpl.php:23 +#: webform_report.inc:154 +msgid "Go back to the form" +msgstr "Zurück zum Formular" + +#: webform-mail.tpl.php:26 +msgid "Submitted on @date" +msgstr "Verfasst am @date" + +#: webform-mail.tpl.php:29 +msgid "Submitted by user: @username [@ip_address]" +msgstr "Verfasst von Benutzer: @username [@ip_address]" + +#: webform-mail.tpl.php:31 +msgid "Submitted by anonymous user: [@ip_address]" +msgstr "Verfasst vom Gast: [@ip_address]" + +#: webform-mail.tpl.php:35 +msgid "Submitted values are" +msgstr "Diese Werte wurden eingegeben:" + +#: webform-mail.tpl.php:44 +msgid "The results of this submission may be viewed at:" +msgstr "Die Ergebnisse dieser Eingabe können eingesehen werden unter:" + +#: webform_components.inc:44;135;364 +msgid "Weight" +msgstr "Reihenfolge" + +#: webform_components.inc:49;135;329 +msgid "Mandatory" +msgstr "Erforderlich" + +#: webform_components.inc:55;135 +msgid "E-mail" +msgstr "E-Mail" + +#: webform_components.inc:97;235;261 +msgid "Add" +msgstr "Hinzufügen" + +#: webform_components.inc:103;397 +#: webform.module:1531;1548;1669 +msgid "Submit" +msgstr "Speichern" + +#: webform_components.inc:109;255 +msgid "Publish" +msgstr "Veröffentlichen" + +#: webform_components.inc:135 +#: webform.module:889;1362 +#: components/file.inc:556 +msgid "Name" +msgstr "Name" + +#: webform_components.inc:135 +#: webform.module:890 +msgid "Type" +msgstr "Typ" + +#: webform_components.inc:135 +#: components/markup.inc:39 +msgid "Value" +msgstr "Wert" + +#: webform_components.inc:135 +#: webform_report.inc:99 +#: webform.module:2195 +msgid "Operations" +msgstr "Operationen" + +#: webform_components.inc:140 +msgid "New component name" +msgstr "Neuer Komponentenname" + +#: webform_components.inc:196 +#: webform_report.inc:137 +#: webform.module:2206;233 +msgid "Edit" +msgstr "Bearbeiten" + +#: webform_components.inc:197 +msgid "Clone" +msgstr "Duplizieren" + +#: webform_components.inc:198;487 +#: webform_report.inc:138 +#: webform_submissions.inc:105 +#: webform.module:243 +msgid "Delete" +msgstr "Löschen" + +#: webform_components.inc:220 +msgid "No Components, add a component below." +msgstr "Keine Komponenten vorhanden, eine Komponente kann unten hinzugefügt werden." + +#: webform_components.inc:236 +msgid "When adding a new component, the name field is required." +msgstr "Beim Hinzufügen einer neuen Komponente ist das Namensfeld erforderlich." + +#: webform_components.inc:258 +msgid "Your webform has been published." +msgstr "Das Webformular wurde veröffentlicht." + +#: webform_components.inc:266 +msgid "The component positions and mandatory values have been updated." +msgstr "Die Positionen der Komponenten und Pflichtwerte wurden aktualisiert." + +#: webform_components.inc:271 +msgid "Edit component: @name (@type)" +msgstr "Komponente bearbeiten: @name (@type)" + +#: webform_components.inc:297 +msgid "Label" +msgstr "Beschriftung" + +#: webform_components.inc:298 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "Dies wird als beschreibende Beschriftung verwendet, wenn dieses Formularelement angezeigt wird." + +#: webform_components.inc:306 +#: webform.module:663;1362 +msgid "Description" +msgstr "Beschreibung" + +#: webform_components.inc:307 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "Eine kurze Feldbeschreibung, die dem Benutzer beim Ausfüllen des Formulars helfen soll." + +#: webform_components.inc:313 +msgid "Advanced settings" +msgstr "Erweiterte Einstellungen" + +#: webform_components.inc:322 +msgid "Field Key" +msgstr "Feldschlüssel" + +#: webform_components.inc:323 +msgid "Enter a machine readable key for this form element. May contain only lowercase alphanumeric characters and underscores. This key will be used as the name attribute of the form element. This value has no effect on the way data is saved, but may be helpful if using Additional Processing or Validation code." +msgstr "Einen maschinenlesbaren Schlüssel für dieses Formularelement angeben. Dieser darf nur alphanumerische Zeichen und Unterstriche enthalten. Dieser Schlüssel wird als Namensattribut für des Formularelement verwendet. Dieser Wert hat keine Auswirkungen auf die Art und Weise wie Daten gespeichert werden, kann aber für die weitere Verarbeitung oder den Validierungscode hilfreich sein." + +#: webform_components.inc:331 +msgid "Check this option if the user must enter a value." +msgstr "Diese Option aktivieren, wenn der Benutzer einen Wert eingeben muss." + +#: webform_components.inc:337 +msgid "Include in e-mails" +msgstr "In E-Mails einfügen" + +#: webform_components.inc:339 +msgid "If checked, submitted values from this component will be included in e-mails." +msgstr "Sobald aktiviert, werden gespeicherte Werte aus dieser Komponente in die E-Mail eingefügt." + +#: webform_components.inc:345 +msgid "Root" +msgstr "Hauptebene" + +#: webform_components.inc:353 +msgid "Parent Fieldset" +msgstr "Übergeordnete Feldgruppe" + +#: webform_components.inc:355 +msgid "Optional. You may organize your form by placing this component inside another fieldset." +msgstr "Optional. Das Formular kann durch Anordnung dieser Komponente in einer anderen Feldgruppe gegeliedert werden." + +#: webform_components.inc:366 +msgid "Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top." +msgstr "Optional. Im Menü werden schwerere Einträge nach unten sinken, während leichtere Einträge weiter oben platziert werden." + +#: webform_components.inc:378 +msgid "The webform component of type @type does not have an edit function defined." +msgstr "Für die Webformular-Komponente vom Typ @type wurde keine Bearbeitungsfunktion festgelegt." + +# not literally +#: webform_components.inc:411 +msgid "The field key %field_key is invalid. Please include only lowercase alphanumeric characters and underscores." +msgstr "Der Feldschlüssel %field_key ist ungültig. Nur Kleinbuchstaben, alphanumerische Zeichen und Unterstriche sind zulässig." + +#: webform_components.inc:416 +msgid "The field key %field_key is already in use by the field labeled %existing_field. Please use a unique key." +msgstr "Der Feldschlüssel %field_key wird schon vom Feld %existing_field verwendet. Bitte einen eindeutigen Schlüssel verwenden." + +#: webform_components.inc:450 +msgid "Component %name cloned." +msgstr "Die Komponente %name wurde dupliziert." + +#: webform_components.inc:454 +msgid "Component %name updated." +msgstr "Die Komponente %name wurde aktualisiert." + +#: webform_components.inc:458 +msgid "New component %name added." +msgstr "Neue Komponente %name wurde hinzugefügt." + +#: webform_components.inc:479 +msgid "Delete the %name fieldset?" +msgstr "Soll die Feldgruppe %name wirklich gelöscht werden?" + +# not literally +#: webform_components.inc:480 +msgid "This will immediately delete the %name fieldset and all children elements within %name from the %webform webform. This cannot be undone." +msgstr "Diese Aktion wird umgehend die Feldgruppe %name und alle innerhalb von %name enthaltenen Elemente aus dem Webformular %webform löschen. Dies kann nicht rückgängig gemacht werden." + +#: webform_components.inc:483 +msgid "Delete the %name component?" +msgstr "Soll die Komponente %name wirklich gelöscht werden?" + +#: webform_components.inc:484 +msgid "This will immediately delete the %name component from the %webform webform. This cannot be undone." +msgstr "Diese Aktion wird umgehend die Komponente %name aus dem Webformular %webform löschen. Dies kann nicht rückgängig gemacht werden." + +#: webform_components.inc:491 +msgid "Component %name deleted." +msgstr "Die Komponente %name wurde gelöscht." + +#: webform_export.inc:21 +msgid "Delimited text" +msgstr "Abgetrennter Text" + +#: webform_export.inc:22 +msgid "A plain text file delimited by commas, tabs, or other characters." +msgstr "Eine Klartext-Datei abgetrennt mit Kommata, Tabulatoren oder anderen Zeichen." + +#: webform_export.inc:26 +msgid "Microsoft Excel" +msgstr "Microsoft Excel" + +#: webform_export.inc:27 +msgid "A file readable by Microsoft Excel." +msgstr "Eine von Microsoft Excel lesbare Datei." + +#: webform_report.inc:28 +msgid "Submissions for %user" +msgstr "Eingaben für %user" + +#: webform_report.inc:58 +msgid "All" +msgstr "Alle" + +#: webform_report.inc:71 +msgid "Show !count results per page." +msgstr "!count Ergebnisse pro Seite anzeigen." + +#: webform_report.inc:74 +msgid "Showing all results." +msgstr "Alle Ergebnisse werden angezeigt." + +#: webform_report.inc:77 +msgid "@total results total." +msgstr "Insgesamt @total Ergebnisse." + +#: webform_report.inc:92;187 +msgid "#" +msgstr "Nr." + +#: webform_report.inc:93;188 +msgid "Submitted" +msgstr "Gespeichert" + +#: webform_report.inc:96;189 +msgid "User" +msgstr "Benutzer" + +#: webform_report.inc:97;190;398 +msgid "IP Address" +msgstr "IP-Adresse" + +#: webform_report.inc:135 +#: webform.module:2194;223 +msgid "View" +msgstr "Ansicht" + +#: webform_report.inc:147;248;491 +msgid "There are no submissions for this form. <a href=\"!url\">View this form</a>." +msgstr "Es gibt keine Eingaben für dieses Formular. <a href=\"!url\">Formular ansehen</a>." + +#: webform_report.inc:279 +msgid "Clear Form Submissions" +msgstr "Formulareingaben löschen" + +#: webform_report.inc:283 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "Sollen alle Eingaben für dieses Formular wirklich gelöscht werden?" + +#: webform_report.inc:285 +#: webform.module:2207;193 +msgid "Clear" +msgstr "Leeren" + +#: webform_report.inc:285 +#: webform_submissions.inc:105 +msgid "Cancel" +msgstr "Abbrechen" + +#: webform_report.inc:293 +msgid "Webform %title entries cleared." +msgstr "Einträge des Webformulars %title wurden gelöscht." + +#: webform_report.inc:314 +msgid "Export format" +msgstr "Export Format" + +#: webform_report.inc:321 +msgid "Delimited text format" +msgstr "Begrenztes Textformat." + +#: webform_report.inc:322 +#: webform.module:1313 +msgid "This is the delimiter used in the CSV/TSV file when downloading Webform results. Using tabs in the export is the most reliable method for preserving non-latin characters. You may want to change this to another character depending on the program with which you anticipate importing results." +msgstr "Dies ist der Separator für die CSV/TSV-Datei, wenn Webform-Ergebnisse herunter geladen werden. Die Verwendung von Tabulatoren in der Ausgabedatei ist die zuverlässigste Methode um Schriftzeichen, die nicht zum lateinischen Alphabet gehören, zu erhalten. Seperator evtl. an die Vorgabe des Programms anpassen, in das die Daten importiert werden sollen." + +#: webform_report.inc:325 +#: webform.module:1316 +msgid "Comma (,)" +msgstr "Komma (,)" + +#: webform_report.inc:326 +#: webform.module:1317 +msgid "Tab (\\t)" +msgstr "Tabulator (\\t)" + +#: webform_report.inc:327 +#: webform.module:1318 +msgid "Semicolon (;)" +msgstr "Semikolon (;)" + +#: webform_report.inc:328 +#: webform.module:1319 +msgid "Colon (:)" +msgstr "Doppelpunkt (:)" + +#: webform_report.inc:329 +#: webform.module:1320 +msgid "Pipe (|)" +msgstr "Pipe (|)" + +#: webform_report.inc:330 +#: webform.module:1321 +msgid "Period (.)" +msgstr "Punkt (.)" + +#: webform_report.inc:331 +#: webform.module:1322 +msgid "Space ( )" +msgstr "Leerzeichen ( )" + +#: webform_report.inc:337 +#: webform.module:2205;183 +msgid "Download" +msgstr "Herunterladen" + +#: webform_report.inc:397 +msgid "Submission Details" +msgstr "Einzellheiten der Übermittlung" + +# ? +#: webform_report.inc:398 +msgid "Serial" +msgstr "Seriennummer" + +#: webform_report.inc:398 +msgid "SID" +msgstr "SID" + +#: webform_report.inc:398 +msgid "Time" +msgstr "Zeit" + +#: webform_report.inc:398 +msgid "UID" +msgstr "UID" + +#: webform_report.inc:398 +msgid "Username" +msgstr "Benutzername" + +#: webform_report.inc:470 +msgid "Q" +msgstr "F" + +#: webform_report.inc:471 +msgid "responses" +msgstr "Antworten" + +#: webform_submissions.inc:98 +msgid "Delete Form Submission" +msgstr "Formulareingabe löschen" + +#: webform_submissions.inc:103 +msgid "Are you sure you want to delete this submission?" +msgstr "Soll diese Eingabe wirklich gelöscht werden?" + +#: webform_submissions.inc:110 +msgid "Submission deleted." +msgstr "Die Eingabe wurde gelöscht." + +#: webform.module:22 +msgid "Webforms are forms and questionnaires. To add one, select <a href=\"!url\">Create content -> Webform</a>." +msgstr "Webformulare sind Formulare und Fragebögen. Unter <a href=\"!url\">Inhalt erstellen » Webformular</a> kann eines erstellt werden." + +#: webform.module:25 +msgid "" +"<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will be sent. If no email address is specified, no e-mail will be sent when submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will be used to populate the return e-mail address on any sent e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that will be used to populate the subject e-mail field on any sent e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown after you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database table <i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" +"<p>Mit diesem Modul können Formulare oder Fragebögen erstellt werden. Formulareingaben werden in der Datenbank gespeichert und können optional an eine vordefinierte E-Mailadresse gesendet werden.</p>\n" +"<p>So erstellen Sie ein neues Formuar:</p>\n" +"<ul>\n" +" <li>Gehen Sie zu „Inhalt erstellen -> Webform“ und erstellen Sie ein neues Formular.<li>\n" +" <li>Fügen Sie eine Beschreibung ein. Diese wird als Teaser und oberhalb des des Formulars angezeigt.</li>\n" +" <li>Fügen Sie eine Bestätigungsnachricht ein, die nach erfolgreicher Eingabe angezeigt wird oder geben Sie einen Seite an, zu der weitergeleitet werden soll.</li>\n" +" <li>Fügen Sie eine oder mehr Komponenten zum Formular.</li>\n" +" <li>Optional kann eine E-Mailadresse definiert werden, an welche die Eingaben gesendet werden sollen.</li>\n" +" <li>Optional kann eine E-Mailkomponente ausgewählt werden, die als Absenderadresse jeder versandten Email verwendet wird.</li>\n" +" <li>Optional kann ein Textfeld ausgewählt werden, das für den Betreff jeder E-Mail versendet wird.</li>\n" +"</ul>\n" +"<p>Hilfe zum Hinzfügen und zur Konfiguration der einzelnen Komponenten ist erhältlich nach dem Hinzufügen der ersten Komponente.</p>\n" +"<p>Die Benutzereingaben werden in der Datenbanktabelle <i>webform_submitted_data</i> als Schlüssel-Werte-Paare gespeichert.</p>" + +#: webform.module:41 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "Ein Webformular kann als Fragebogen, Kontakt- oder Anfrageformular gestaltet werden. Ein Webformular kann eingesetzt werden, um Besuchern eine Kontaktmöglichkeit zu bieten, zur Anmeldung an eine Veranstaltung oder auch zur Erstellung einer komplexen Umfrage." + +#: webform.module:44 +msgid "This page displays all the components currently configured for this webform node. You may add any number of components to the form, even multiple of the same type. To add a new component, fill in a name and select a type from the fields at the bottom of the table. Submit the form to create the new component or update any changed form values." +msgstr "Diese Seite zeigt alle Komponenten die zurzeit für dieses Formular konfiguriert sind. Es können beliebig viele Komponenten hinzugefügt werden, auch vom gleichen Typ. Um eine neue Komponente hinzuzufügen, einen Namen dafür angeben und den Typ aus dem Feld am Ende der Tabelle auswählen. Das Formular abschicken, um die neue Komponente zu erzeugen oder geänderte Werte zu speichern." + +#: webform.module:45 +msgid "Click on any existing component's name to edit its settings." +msgstr "Auf einen vorhandenen Komponentennamen klicken, um dessen Einstellungen zu bearbeiten." + +#: webform.module:416;80 +#: webform.info:0 +msgid "Webform" +msgstr "Webformular" + +#: webform.module:418 +msgid "Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users." +msgstr "Ein neues Formular oder Fragebogen für Benutzer erstellen. Abgeschickte Daten und Statistiken werden gespeichert und für berechtigte Benutzer zugänglich gemacht." + +#: webform.module:604 +msgid "Go to form" +msgstr "Zum Formular wechseln" + +#: webform.module:606 +msgid "View this form." +msgstr "Dieses Formular anzeigen." + +#: webform.module:645 +msgid "Webform Settings" +msgstr "Webformular-Einstellungen" + +#: webform.module:654;2193 +msgid "Title" +msgstr "Titel" + +#: webform.module:664 +msgid "Text to be shown as teaser and before the form." +msgstr "Text der als Anrisstext und vor dem Formular angezeigt werden soll." + +#: webform.module:673 +msgid "Confirmation message or redirect URL" +msgstr "Bestätigungsnachricht oder Weiterleitungs-URL" + +#: webform.module:674 +msgid "Message to be shown upon successful submission or a path to a redirect page. Preface message with <em>message:</em> for a simple message that does not require a page refresh. Redirect pages must start with <em>http://</em> for external sites or <em>internal:</em> for an internal path. i.e. <em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "Die nach einer erfolgreichen Eingabe anzuzeigende Nachricht oder ein Pfad zu einer Weiterleitungsseite. Eine einfache Nachricht, die keine Seitenaktualisierung erfordert muss mit <em>message:</em> beginnen. Weiterleitungsseiten müssen mit <em>http://</em> für externe Websites oder <em>internal:</em> für einen internen Pfad beginnen (z. B. <em>http://www.example.com</em> bzw. <em>internal:node/10</em>)." + +#: webform.module:686 +msgid "Webform access control" +msgstr "Webformular-Zugriffskontrolle" + +#: webform.module:691 +msgid "These permissions affect which roles can submit this webform. It does not prevent access to the webform page. If needing to prevent access to the webform page entirely, use a content access module such as <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> or <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." +msgstr "Diese Berechtigungen bestimmen, welche Rollen dises Formular übermittlen dürfen. Sie verhindern nicht den Zugriff auf das Formular. Wenn der Zugriff insgesamt verhindert werden soll, sollte ein Zugriffskontrollmodul wie <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> oder <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a> eingesetzt werden." + +#: webform.module:699 +msgid "Roles that can submit this webform" +msgstr "Rollen, die dieses Webformular speichern können" + +#: webform.module:700 +msgid "Uncheck all roles to prevent new submissions. The %authenticated role applies to any user signed into the site, regardless of other assigned roles." +msgstr "Um weitere Übermittlungen zu verhindern, das Häckchen für alle Rollen entfernen. Die Rolle %authenticated gilt für jeden angemeldeten Besucher, unabhängig von ihrer sonstigen Rolle." + +#: webform.module:707 +msgid "Webform mail settings" +msgstr "Webformular-E-Mail-Einstellungen" + +#: webform.module:717 +msgid "E-mail to address" +msgstr "Ziel-E-Mail-Adresse" + +#: webform.module:720 +msgid "Form submissions will be e-mailed to this address. Leave blank for none. Multiple e-mail addresses may be separated by commas." +msgstr "Formulareingaben werden an diese E-Mail-Adresse geschickt. Leer lassen, wenn kein Versand gewünscht wird. Mehrere E-Mail-Adressen können durch Kommata getrennt werden." + +#: webform.module:728 +msgid "Conditional e-mail recipients" +msgstr "Bedingte E-Mail-Empfänger" + +#: webform.module:729 +msgid "The settings below allow you to send e-mails to multiple recipients based off the value of a component." +msgstr "Die unten stehenden Einstellungen erlauben es E-Mails an mehrere Empfänger zu senden, basierend auf den Werten einer Komponente." + +#: webform.module:753 +msgid "E-mail from name" +msgstr "E-Mail-Absendername" + +#: webform.module:754 +msgid "After adding components to this form any email, select, or hidden form element may be selected as the sender's name for e-mails." +msgstr "Nachdem Komponenten zu diesem Formular hinzugefügt wurden, kann jede E-Mail, Auswahlliste oder verstecktes Formularelement als Absendername für E-Mails ausgewählt werden." + +#: webform.module:758 +msgid "E-mail from address" +msgstr "E-Mail-Absenderadresse" + +#: webform.module:759 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the sender's e-mail address." +msgstr "Nachdem Komponenten zu diesem Formular hinzugefügt wurden, kann jedes Textfeld, jede Auswahlliste oder verstecktes Formularelement als Absenderadresse für E-Mails ausgewählt werden." + +#: webform.module:763 +msgid "E-mail subject" +msgstr "E-Mail-Betreff" + +#: webform.module:764 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the subject for e-mails." +msgstr "Nachdem Komponenten zu diesem Formular hinzugefügt wurden, kann jedes Textfeld, jede Auswahlliste oder verstecktes Formularelement als Betreffzeile für E-Mails ausgewählt werden." + +#: webform.module:799 +msgid "Webform advanced settings" +msgstr "Erweiterte Webformular-Einstellungen" + +#: webform.module:807 +msgid "Show complete form in teaser" +msgstr "Das vollständige Formular im Anrisstext anzeigen" + +#: webform.module:809 +msgid "Display the entire form in the teaser display of this node." +msgstr "Das vollständige Formular in der Anrisstextanzeige eines Beitrages anzeigen." + +#: webform.module:813 +msgid "Limit the number of submissions a user may send within a specified time period" +msgstr "Anzahl von Eingaben eines Benutzers auf einen bestimmten Zeitraum begrenzen" + +#: webform.module:818 +msgid "Unlimited" +msgstr "Unbegrenzt" + +#: webform.module:832 +msgid "ever" +msgstr "immer" + +#: webform.module:833 +msgid "every hour" +msgstr "jede Stunde" + +#: webform.module:834 +msgid "every day" +msgstr "jeden Tag" + +#: webform.module:835 +msgid "every week" +msgstr "jede Woche" + +#: webform.module:842 +msgid "Submit button text" +msgstr "Text des „Speichern“-Schaltknopfes" + +#: webform.module:844 +msgid "By default the submit button on this form will have the label <em>Submit</em>. Enter a new title here to override the default." +msgstr "Standardmäßig wird der „Speichern“-Schaltknopf in diesem Formular die Beschriftung <em>Speichern</em> haben. Der Standard kann hier durch Eingabe eines neuen Titels übersteuert werden." + +#: webform.module:849 +msgid "Additional Validation" +msgstr "Erweiterte Überprüfung" + +#: webform.module:850 +msgid "Enter PHP code to perform additional validation for this form. Include the <?php ?> tags. $form and $form_state are available variables. If validation fails, use the form_set_error function to prevent the form from being submitted. Use the same syntax as a _validate function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Hier den PHP-Code eingeben, um eine zusätzliche Überprüfung für dieses Formular durchzuführen. <?php ?> Tags mit eingeben. $form_id und $form_values sind verfügbare Variablen. Für den Fall, dass die Überprüfung fehlschlägt, kann die Funktion form_set_error benutzen werden, um das Speichern der Formulardaten zu verhindern. Die gleiche Syntax benutzen wie bei einer _submit-Funktion in der <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Formular API</a>." + +#: webform.module:858 +msgid "Additional Processing" +msgstr "Erweiterungen Verarbeitung" + +#: webform.module:859 +msgid "Enter PHP code to perform additional processing for this form (after the validation). Include the <?php ?> tags. $form and $form_state are available variables, use the same syntax as a _submit function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Hier den PHP-Code eingeben, um eine zusätzliche Verarbeitung des Formulars zu bewirken (nach der Überprüfung). Die <?php ?>-Tags mit einfügen. $form_id und $form_values sind verfügbare Variablen. Die gleiche Syntax benutzen wie bei einer _submit-Funktion in der <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Formular API</a>." + +#: webform.module:888 +msgid "To" +msgstr "Zu" + +#: webform.module:903 +msgid "No components yet in this webform." +msgstr "Dieses Webformular enthält noch keine Komponenten." + +#: webform.module:918 +msgid "Custom" +msgstr "Benutzerdefiniert" + +#: webform.module:918 +msgid "Component" +msgstr "Komponente" + +#: webform.module:929 +msgid "Default" +msgstr "Standardwert" + +#: webform.module:950 +msgid "Limit to !count submission(s) !timespan" +msgstr "!timespan auf !count Eingaben begrenzen" + +#: webform.module:963;970 +msgid "The entered email address %address is not a valid address." +msgstr "Die eingegebene E-Mail-Adresse %address ist keine gültige Adresse." + +#: webform.module:1044 +msgid "The new webform %title has been created. Add new fields to your webform with the form below." +msgstr "Das neue Webformular %title wurde erstellt. Neue Felder können mit dem nachfolgenden Formular hinzugefügt werden." + +#: webform.module:1047 +msgid "This webform is currently unpublished. After finishing your changes to the webform, use the <em>Publish</em> button below." +msgstr "Diese Formular ist zurzeit unveröffentlicht. Wenn alle Änderungen an diesem Formular durchgeführt sind, unten auf die Schaltfläche <em>Veröffentlichen</em> klicken." + +#: webform.module:1184 +msgid "Submissions for this form are closed." +msgstr "Dieses Formular ist für Eingaben gesperrt." + +#: webform.module:1188 +msgid "You must <a href=\"!login\">login</a> or <a href=\"!register\">register</a> to view this form." +msgstr "<a href=\"!login\">Einloggen</a> oder <a href=\"!register\">registrieren</a>, um dieses Formular anzusehen." + +#: webform.module:1192 +msgid "You do not have permission to view this form." +msgstr "Fehlende Berechtigung dieses Formular anzusehen." + +#: webform.module:1199 +msgid "You have submitted this form the maximum number of times (@count)." +msgstr "Dieses Formular darf nur @count mal übermittelt werden." + +#: webform.module:1202;1213 +msgid "You have already submitted this form." +msgstr "Dieses Formular wurde schon gespeichert." + +#: webform.module:1205 +msgid "You may not submit another entry at this time." +msgstr "Derzeit kann kein weiter Eintrag gespeichert werden." + +#: webform.module:1213;1216 +msgid "<a href=\"!url\">View your previous submissions</a>." +msgstr "<a href=\"!url\">Vorhergehende Übermittlungen ansehen</a>." + +#: webform.module:1242 +msgid "Available components" +msgstr "Verfügbare Komponenten" + +#: webform.module:1245 +msgid "These are the available field types for your installation of Webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms." +msgstr "Dies sind die verfügbaren Feldtypen für diese Webformular-Installation. Jede dieser Komponenten kann über das entsprechende Kontrollkästchen deaktiviert werden. Nur aktivierte Komponenten können in bestehenden oder neuen Formularen verwendet werden." + +#: webform.module:1262 +msgid "Default e-mail values" +msgstr "Standardmäßige E-Mail-Werte" + +#: webform.module:1269 +msgid "From address" +msgstr "Absenderadresse" + +#: webform.module:1271 +msgid "The default sender address for emailed webform results; often the e-mail address of the maintainer of your forms." +msgstr "Die standardmäßige Absenderadresse für verschickte Webformular-Ergebnisse. Dies ist oft die E-Mail-Adresse des Formularverwalters." + +#: webform.module:1276 +msgid "From name" +msgstr "Absendername" + +#: webform.module:1278 +msgid "The default sender name which is used along with the default from address." +msgstr "Der standardmäßige Absendername, welcher zusammen mit der standardmäßigen Absender-E-Mail-Adresse verwendet wird." + +#: webform.module:1283 +msgid "Default subject" +msgstr "Standardmäßiger Betreff" + +#: webform.module:1284;2244 +msgid "Form submission from: %title" +msgstr "Formulareingabe von: %title" + +#: webform.module:1285 +msgid "The default subject line of any e-mailed results." +msgstr "Die standardmäßige Betreffzeile von allen E-Mail-Ergebnissen." + +#: webform.module:1290 +msgid "Advanced options" +msgstr "Erweiterte Einstellungen" + +# not literally, english sounds illogical +#: webform.module:1298 +msgid "Allow cookies for tracking submissions" +msgstr "Cookies für die Nachverfolgung von Eingaben verwenden" + +#: webform.module:1300 +msgid "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, Webform also uses IP addresses and site usernames to prevent repeated submissions." +msgstr "<a href=\"http://de.wikipedia.org/wiki/HTTP-Cookie\">Cookies</a> können verwendet werden, um einen Benutzer daran zu hindern, das gleiche Formular wiederholt abzuschicken. Diese Funktion wird nicht benötigt, um „Eingaben pro Benutzer“ zu begrenzen, obwohl es in manchen Fällen die Genauigkeit erhöhen kann. Neben Cookies wird auch die IP-Adresse und der Benutzername verwendet, um wiederholte Eingaben zu unterbinden." + +#: webform.module:1305 +msgid "Default export format" +msgstr "Standardmäßiges Export-Format" + +#: webform.module:1312 +msgid "Default export delimiter" +msgstr "Standardmäßiges Export-Trennzeichen" + +#: webform.module:1328 +msgid "Submission access control" +msgstr "Eingabezugriffskontrolle" + +#: webform.module:1330 +msgid "Select the user roles that may submit each individual webform" +msgstr "Benutzerrollen auswählen, die jedes individuelle Webformular speichern können" + +#: webform.module:1331 +msgid "Disable Webform submission access control" +msgstr "Zugriffsschutz für das Speichern von Webformularen deaktivieren" + +#: webform.module:1334 +msgid "By default, the configuration form for each webform allows the administrator to choose which roles may submit the form. You may want to allow users to always submit the form if you are using a separate node access module to control access to webform nodes themselves." +msgstr "Standardmäßig erlaubt die Konfiguration jedes Formulars dem Administrator zu bestimmen, welche Rollen ein Formular übermitteln dürfen. Wenn ein separates Node-Zugriffsmodul eingesetzt wird, um den Zugriff zu beschränken, kann hier allen Benutzern der Zugriff erlaubt werden." + +#: webform.module:1339 +msgid "Webforms debug" +msgstr "Webformular-Fehlersuche" + +#: webform.module:1341 +msgid "Off" +msgstr "Deaktiviert" + +#: webform.module:1341 +msgid "Log submissions" +msgstr "Eingaben protokollieren" + +#: webform.module:1341 +msgid "Full debug" +msgstr "Vollständige Fehlersuche" + +#: webform.module:1342 +msgid "Set to \"Log submissions\" to log all submissions in the watchdog. Set to \"Full debug\" to print debug info on submission." +msgstr "„Eingaben protokollieren“ auswählen, um alle Eingaben im Wächter zu protokollieren. Die „vollständige Fehlersuche“ auswählen, um Debug-Informationen bei der Formulareingabe auszugeben." + +#: webform.module:1362 +msgid "Enabled" +msgstr "Aktiviert" + +#: webform.module:1401 +msgid "Submission #@sid" +msgstr "Eingabe Nr. @sid" + +#: webform.module:1421;1421 +msgid "Previous submission" +msgstr "Vorherige Eingabe" + +#: webform.module:1424;1424 +msgid "Next submission" +msgstr "Nächste Eingabe" + +#: webform.module:1428 +msgid "Submission Information" +msgstr "Übermittlungsinformation" + +#: webform.module:1437 +msgid "Form: !form" +msgstr "Formular: !form" + +#: webform.module:1440 +msgid "Submitted by !name" +msgstr "Verfasst von !name" + +#: webform.module:1485 +msgid "Next Page >" +msgstr "Nächste Seite >" + +#: webform.module:1486 +msgid "< Previous Page" +msgstr "< Vorherige Seite" + +#: webform.module:1631 +msgid "The webform component @type is not able to be displayed" +msgstr "Die Webformular-Komponente @type kann nicht angezeigt werden" + +#: webform.module:1840 +msgid "Illegal information. Data not submitted." +msgstr "Ungültige Informationen. Die Daten wurden nicht gespeichert." + +#: webform.module:1878 +msgid "Submission posted to %title. <a href=\"!url\">Results</a>. !details" +msgstr "Übermittlung gespeichert unter %title. <a href=\"!url\">Ergebnisse</a>. !details" + +#: webform.module:1883 +msgid "Submission updated." +msgstr "Eingabe wurde aktualisiert." + +#: webform.module:1986 +msgid "Thank you, your submission has been received." +msgstr "Danke, die Übermittlung wurde empfangen." + +#: webform.module:2202;153;205 +msgid "Submissions" +msgstr "Eingaben" + +#: webform.module:2203;163 +msgid "Analysis" +msgstr "Analyse" + +#: webform.module:2204;173 +msgid "Table" +msgstr "Tabelle" + +#: webform.module:2256;2257;2258;2259;2260;2263 +msgid "key" +msgstr "Schlüssel" + +#: webform.module:2267 +msgid "You may use special tokens in this field that will be replaced with dynamic values." +msgstr "In diesem Feld können spezielle Token eingesetzt werden, die später durch aktuelle Werte ersetzt werden." + +#: webform.module:2269 +msgid "You can use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables, %session[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> variables and %get[key] to create prefilled forms from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. %cookie, %request and %post also work with their respective PHP variables. For example %server[HTTP_USER_AGENT], %session[id], or %get[q]." +msgstr "%server[key] einsetzen, um spezielle PHP-<a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a>-Variablenzu verwenden, %session[key] für einige der speziellen PHP-<a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a>-Variablenund %get[key] um Formulare mit Voreinstellungen aus dem <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a> zufüllen. %cookie, %request und %post funktionieren mit denentsprechenden PHP-Variablen (z. B. %server[HTTP_USER_AGENT], %session[id], oder %get[q])." + +#: webform.module:2271 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "Bei Verwendung des Profilmoduls haben Sie Zugriff auf alle Profildaten mittels %profile[form_name]. Wenn Sie zum Beispiel ein Profilwert mit dem Namen profil_stadt haben, verwenden Sie die Variable %profile[profil_stadt]." + +#: webform.module:2275 +msgid "Token values" +msgstr "Token-Werte" + +#: webform.module:323 +msgid "create webforms" +msgstr "Webformulare erstellen" + +#: webform.module:323 +msgid "edit own webforms" +msgstr "Eigene Webformulare bearbeiten" + +#: webform.module:323 +msgid "edit webforms" +msgstr "Webformulare bearbeiten" + +#: webform.module:323 +msgid "access webform results" +msgstr "Zugriff auf Webformular-Ergebnisse" + +#: webform.module:323 +msgid "clear webform results" +msgstr "Webformular-Ergebnisse löschen" + +#: webform.module:323 +msgid "access own webform submissions" +msgstr "Zugriff auf eigene Webformular-Eingaben" + +#: webform.module:323 +msgid "edit own webform submissions" +msgstr "Eigene Webformular-Eingaben bearbeiten" + +#: webform.module:323 +msgid "edit webform submissions" +msgstr "Webformular-Eingaben bearbeiten" + +#: webform.module:323 +msgid "use PHP for additional processing" +msgstr "Verwende PHP für zusätzliche Verarbeitung" + +#: webform.module:70 +msgid "Webforms" +msgstr "Webformulare" + +#: webform.module:74 +msgid "View and edit all the available webforms on your site." +msgstr "Anzeigen und bearbeiten aller verfügbaren Webformulare dieser Website." + +#: webform.module:85 +msgid "Global configuration of webform functionality." +msgstr "Globale Konfiguration der Webformular-Funktionalität" + +#: webform.module:91 +msgid "Webform confirmation" +msgstr "Webformular-Bestätigung" + +#: webform.module:100 +msgid "Configuration" +msgstr "Konfiguration" + +#: webform.module:108 +msgid "Form components" +msgstr "Formularkomponenten" + +#: webform.module:143 +msgid "Results" +msgstr "Ergebnisse" + +#: webform.module:214 +msgid "Webform submission" +msgstr "Webformulareingabe" + +#: webform.module:0 +msgid "webform" +msgstr "Webformular" + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "Ermöglicht die Erstellung von Formularen und Fragebögen." + +#: components/date.inc:44 +#: components/email.inc:43 +#: components/hidden.inc:38 +#: components/select.inc:55 +#: components/textarea.inc:45 +#: components/textfield.inc:46 +#: components/time.inc:41 +msgid "Default value" +msgstr "Standardwert" + +#: components/date.inc:46 +#: components/email.inc:45 +#: components/hidden.inc:40 +#: components/textarea.inc:47 +#: components/textfield.inc:48 +#: components/time.inc:43 +msgid "The default value of the field." +msgstr "Der Standardwert des Feldes." + +#: components/date.inc:46 +msgid "Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid." +msgstr "Es werden alle eingegebenen Termine im <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Datums-Eingabeformat</a> akzeptiert. Folgende Zeichenketten sind gültig: 'today', '+2 months' und 'Dec 9 2004'." + +#: components/date.inc:53 +#: components/time.inc:51 +msgid "Timezone" +msgstr "Zeitzone" + +#: components/date.inc:55 +msgid "Adjust the date according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "Das Datum auf eine bestimmte Zeitzone bezogen einstellen. Die Website-Zeitzone wird in den <a href=\"%settings\">Website-Einstellungen</a> festgelegt und ist die Voreinstellung." + +#: components/date.inc:56 +msgid "Website timezone" +msgstr "Zeitzone der Website" + +#: components/date.inc:56 +msgid "User timezone" +msgstr "Zeitzone des Benutzers" + +#: components/date.inc:56 +msgid "GMT" +msgstr "GMT" + +#: components/date.inc:61 +#: components/time.inc:59 +msgid "Observe Daylight Savings" +msgstr "Sommerzeit beachten" + +#: components/date.inc:64 +#: components/time.inc:62 +msgid "Automatically adjust the time during daylight savings." +msgstr "Die Zeit während der Sommerzeit automatisch anpassen." + +#: components/date.inc:70 +msgid "Start year" +msgstr "Startjahr" + +#: components/date.inc:72 +msgid "The first year that is allowed to be entered." +msgstr "Das erste Jahr, dass für die Eingabe zulässig ist." + +#: components/date.inc:79 +msgid "End year" +msgstr "Endjahr" + +#: components/date.inc:81 +msgid "The last year that is allowed to be entered." +msgstr "Das letzte Jahr, dass für die Eingabe zulässig ist." + +#: components/date.inc:88 +msgid "Use a textfield for year" +msgstr "Ein Textfeld für das Jahr verwenden" + +#: components/date.inc:90 +msgid "If checked, the generated date field will use a textfield for the year. Otherwise it will use a select list." +msgstr "Wenn ausgewählt, wird das erzeugte Datumsfeld ein Textfeld für das Jahr benutzen. Andernfalls benutzt es eine Selektionsliste." + +#: components/date.inc:184 +msgid "Month" +msgstr "Monat" + +#: components/date.inc:187 +msgid "Day" +msgstr "Tag" + +#: components/date.inc:190;206 +msgid "Year" +msgstr "Jahr" + +#: components/date.inc:223 +msgid "!name field is required." +msgstr "Das Feld !name ist erforderlich." + +# BUG: English is not context sensitive +#: components/date.inc:230 +msgid "Entered !name is not a valid date." +msgstr "Der eingegebene Wert !name ist kein gültiges Datum." + +#: components/date.inc:237 +msgid "The entered date needs to be between the years @start and @end." +msgstr "Das eingegebene Datum muss zwischen den Jahren @start und @end liegen." + +#: components/date.inc:312 +msgid "Presents month, day, and year fields." +msgstr "Zeigt Monats-, Tages- und Jahresfelder an." + +#: components/date.inc:383 +#: components/email.inc:211 +#: components/file.inc:511 +#: components/textarea.inc:179 +#: components/textfield.inc:228 +#: components/time.inc:318 +msgid "Left Blank" +msgstr "Leer gelassen" + +#: components/date.inc:384 +#: components/email.inc:212 +#: components/textarea.inc:180 +#: components/textfield.inc:229 +#: components/time.inc:319 +msgid "User entered value" +msgstr "Benutzer hat einen Wert eingetragen" + +#: components/email.inc:54 +msgid "User email as default" +msgstr "Benutzer E-Mail als Standardwert verwenden" + +#: components/email.inc:56 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "Setze den Standardwert dieses Feldes auf die E-Mail-Adresse des Benutzers, wenn er/sie angemeldet ist." + +#: components/email.inc:63 +#: components/file.inc:127 +#: components/textarea.inc:54 +#: components/textfield.inc:55 +msgid "Width" +msgstr "Breite" + +#: components/email.inc:65 +#: components/textarea.inc:56 +#: components/textfield.inc:57 +msgid "Width of the textfield." +msgstr "Breite des Textfeldes." + +#: components/email.inc:65 +#: components/file.inc:129 +#: components/textarea.inc:56;64 +#: components/textfield.inc:57 +msgid "Leaving blank will use the default size." +msgstr "Leerlassen, um die standardmäßige Größe zu verwenden." + +# not literally +#: components/email.inc:71 +#: components/hidden.inc:51 +#: components/select.inc:78 +msgid "E-mail a submission copy" +msgstr "Kopie der Eingabe per E-Mail verschicken" + +#: components/email.inc:74 +#: components/hidden.inc:54 +#: components/select.inc:81 +msgid "Check this option if this component contains an e-mail address that should get a copy of the submission. Emails are sent individually so other emails will not be shown to the recipient." +msgstr "Diese Option auswählen, wenn diese Komponente eine E-Mail-Adresse einthält, die eine Kopie der Übermittlung erhalten soll. E-Mails werden einzeln versndt, sodass andere E-Mail-Adressen für andere Empfänger nicht sichtbar sind." + +#: components/email.inc:78 +#: components/textarea.inc:77 +#: components/textfield.inc:91 +msgid "Disabled" +msgstr "Deaktiviert" + +#: components/email.inc:80 +#: components/textarea.inc:79 +#: components/textfield.inc:93 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "Dieses Textfeld für die Bearbeitung sperren. Eine nützliche Einstellung, wenn der Standardwert nicht verändert werden soll." + +#: components/email.inc:145 +msgid "%value is not a valid email address." +msgstr "%value ist keine gültige E-Mail-Adresse." + +#: components/email.inc:178 +msgid "A textfield that automatically fills in a logged-in user's e-mail." +msgstr "Ein Textfeld, welches automatisch die E-Mail-Adresse eines angemeldeten Benutzers einfügt." + +#: components/email.inc:213 +#: components/hidden.inc:148 +#: components/textarea.inc:181 +#: components/textfield.inc:230 +msgid "Average submission length in words (ex blanks)" +msgstr "Durchschnittliche Textlänge in Wörtern (ohne Leerzeichen)" + +#: components/fieldset.inc:39 +msgid "Collapsible" +msgstr "Zusammenklappbar" + +#: components/fieldset.inc:41 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "Sollte die Feldgruppe zusammenklappbar sein, kann der Benutzer die Feldgruppe öffnen oder schließen." + +#: components/fieldset.inc:46 +msgid "Collapsed by Default" +msgstr "Standardmäßig zusammengeklappt" + +#: components/fieldset.inc:48 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "Feldgruppen sind standardmäßig „geöffnet“. Diese Option zeigt die Feldgruppe im Ausgangszustand „geschlossen“ an." + +#: components/fieldset.inc:100 +msgid "Fieldsets allow you to organize multiple fields into groups." +msgstr "Feldgruppen ermöglichen die Gliederung mehrere Felder in Gruppen." + +#: components/file.inc:49 +msgid "Upload Filtering" +msgstr "Filtern des Hochladens" + +#: components/file.inc:50 +msgid "Select the types of uploads you would like to allow." +msgstr "Auswahl der zugelassenen Dateitypen, welche hochgeladen werden können sollen." + +#: components/file.inc:60 +msgid "Web Images" +msgstr "Webbilder" + +#: components/file.inc:68 +msgid "Desktop Images" +msgstr "Desktopbilder" + +#: components/file.inc:76 +msgid "Documents" +msgstr "Dokumente" + +#: components/file.inc:84 +msgid "Media" +msgstr "Medien" + +#: components/file.inc:92 +msgid "Archives" +msgstr "Archive" + +#: components/file.inc:99 +msgid "Additional Extensions" +msgstr "Zusätzliche Erweiterungen" + +#: components/file.inc:101 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "Eine Liste von zusätzlichen Dateiendungen für dieses Hochladefeld eingeben, jeweils durch ein Kommata getrennt.<br /> Eingegebene Dateiendungen, werden an die oben aktivierten Einträge angehängt." + +#: components/file.inc:109 +msgid "Max Upload Size" +msgstr "Maximale Dateigröße zum Hochladen" + +#: components/file.inc:111 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "Eingabe der maximalen Dateigröße (in KB), welche vom Benutzer hochgeladen werden können." + +#: components/file.inc:118 +msgid "Upload Directory" +msgstr "Verzeichnis zum Hochladen" + +#: components/file.inc:120 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "Das Webformular-Modul speichert alle hochgeladenen Dateien im files-Verzeichnis der Website. Optional kann ein Unterverzeichnis angegeben werden." + +#: components/file.inc:129 +msgid "Width of the file field." +msgstr "Breite des Dateifeldes." + +# not literally +#: components/file.inc:144 +msgid "The save directory %directory could not be created. Check that the webform files directory is writtable." +msgstr "Das %directory-Verzeichnis zum Speichern von Dateien konnte nicht erstellt werden. Überprüfen Sie, ob das Webformular-Dateiverzeichnis beschreibbar ist." + +#: components/file.inc:248 +msgid "Category" +msgstr "Kategorie" + +#: components/file.inc:248 +msgid "Types" +msgstr "Typen" + +#: components/file.inc:308 +#: components/time.inc:171 +msgid "%field field is required." +msgstr "Das Feld %field ist erforderlich." + +#: components/file.inc:340 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "Dateien mit der Dateiendung ‚%ext‘ sind nicht zugelassen. Bitte nur Dateien mit %exts Dateiendungen hochladen." + +#: components/file.inc:345 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "Die Datei ‚%filename‘ ist zu groß (%filesize KB). Bitte nur Dateien mit einer Größe von %maxsize KB oder kleiner hochladen." + +#: components/file.inc:366 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "Die hochgeladene Datei %filename konnte nicht gespeichert werden. Das Zielverzeichnis ist nicht beschreibbar." + +#: components/file.inc:377 +msgid "The uploaded file was unable to be saved. The destination directory does not exist." +msgstr "Die hochgeladene Datei konnte nicht gespeichert werden. Das Zielverzeichnis ist nicht vorhanden." + +#: components/file.inc:428 +msgid "Uploading a new file will replace the current file." +msgstr "Das Hochladen einer neuen Datei wird die aktuelle Datei ersetzen." + +#: components/file.inc:463 +msgid "Allow users to submit files of the configured types." +msgstr "Ermöglicht Benutzen die Speicherung von konfigurierten Dateitypen." + +#: components/file.inc:512 +msgid "User uploaded file" +msgstr "Vom Benutzer hochgeladene Datei" + +#: components/file.inc:513 +msgid "Average uploaded file size" +msgstr "Durchschnittliche Größe der Dateien, die hochgeladen wurden" + +#: components/file.inc:556 +msgid "Filesize (KB)" +msgstr "Dateigröße (KB)" + +#: components/grid.inc:42 +#: components/select.inc:44 +msgid "Options" +msgstr "Optionen" + +#: components/grid.inc:44 +msgid "Options to select across the top. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "Oben ist eine Liste auswählbarer Optionen. Eine Option pro Zeile. Schlüssel-Wert-Paare können getrennt durch das Pipe-Zeichen eingegeben werden. z. B. safe_key|Eine lesbare Option" + +#: components/grid.inc:52 +msgid "Questions" +msgstr "Fragen" + +#: components/grid.inc:54 +msgid "Questions list down the left side. One question per line." +msgstr "Fragen an der linken Seite auflisten. Eine Frage pro Zeile." + +#: components/grid.inc:62 +msgid "Randomize Options" +msgstr "Zufällige Optionen" + +#: components/grid.inc:64 +msgid "Randomizes the order of options on the top when they are displayed in the form." +msgstr "Erstellt ein zufällige Anordnung der Optionen, wenn sie im Formular angezeigt werden." + +#: components/grid.inc:68 +msgid "Randomize Questions" +msgstr "Zufällige Fragen" + +#: components/grid.inc:70 +msgid "Randomize the order of the questions on the side when they are displayed in the form." +msgstr "Erstellt eine zufällige Abfolge der Fragen, wenn sie im Formular angezeigt werden." + +#: components/grid.inc:227 +msgid "Allows creation of grid questions, denoted by radio buttons." +msgstr "Erlaubt das erstellen von Rasterfragen mit Auswahlknöpfen." + +#: components/hidden.inc:99 +msgid "@name (hidden)" +msgstr "@name (versteckt)" + +#: components/hidden.inc:113 +msgid "A field which is not visible to the user, but is recorded with the submission." +msgstr "Ein für den Benutzer unsichtbares Feld, das bei der Eingabe mitgespeichert wird." + +#: components/hidden.inc:146 +msgid "Empty" +msgstr "Leer" + +#: components/hidden.inc:147 +msgid "Non-empty" +msgstr "Nicht-Leer" + +#: components/markup.inc:41 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "Markup erlaubt es, eine benutzerdefinierte HTML- oder PHP-Logik in das Formular einzufügen." + +#: components/markup.inc:63 +msgid "Preview" +msgstr "Vorschau" + +#: components/markup.inc:103 +msgid "Displays text as HTML in the form; does not render a field." +msgstr "Zeigt Text im Formular als HTML an, rendert aber kein Feld." + +#: components/pagebreak.inc:32 +msgid "Use caution when combining the pagebreak and file components. File components will not be submitted unless they are after the last pagebreak in the form." +msgstr "Vorsicht beim Kombinieren von Seitenumbruch und Dateikomponenten. Dateikomponenten werden nur übermittelt, wenn sie nach dem letzten Seitenumbruch im Formular stehen." + +# not literally +#: components/pagebreak.inc:59 +msgid "Break up a multi-page form." +msgstr "Aufspalten in ein mehrseitiges Formular." + +#: components/select.inc:46 +msgid "A list of selectable options. One option per line. Key-value pairs may be entered seperated by pipes, such as \"safe_key|Some readable option\". Option groups for lists and menus may be specified with <Group Name>. <> can be used to insert items at the root of the menu after specifying a group." +msgstr "Eine Liste mit wählbaren Optionen. Eine Option pro Zeile. Schlüssel-Wert-Paare können getrennt durch das Pipe-Zeichen eingegeben werden, wie „safe_key|Eine lesbare Option“. Optionengruppen für Listen und Menüs können mit <Gruppenname> angegeben werden. <> kann verwendet werden, um einen Eintrag in der Hauptebene des Menüs einzufügen, nachdem eine Gruppe angegeben wurde." + +#: components/select.inc:57 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "Der Standardwert des Feldes. Bei Mehrfachauswahlen müssen die einzelnen Werte durch ein Komma getrennt werden." + +#: components/select.inc:64 +msgid "Multiple" +msgstr "Mehrfach" + +#: components/select.inc:67 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "Diese Option aktivieren, wenn der Benutzer die Möglichkeit haben soll mehrere Werte auszuwählen." + +#: components/select.inc:71 +msgid "Listbox" +msgstr "Auswahlliste" + +#: components/select.inc:74 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "Diese Option aktivieren, wenn die Auswahlkomponente eine Auswahlliste sein soll, anstatt Optionsfeldern oder Kontrollkästchen." + +#: components/select.inc:82 +msgid "To use the option with a select component, you must use key-value pairs seperated by pipes. i.e. user@example.com|Sample user." +msgstr "Um die Option mit einer ausgewählten Komponente zu benutzen, Schlüssel-Wert-Paare getrennt von einem Pipe-Zeichen verwenden, z. B. user@example.com|Beispielbenutzer." + +#: components/select.inc:124 +msgid "Options within the select list must be unique. The following keys have been used multiple times:" +msgstr "Optionen innerhalb der Auswahlliste müssen einzigartig sein. Die folgenden Schlüssel wurden mehrfach verwendet:" + +#: components/select.inc:325 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "Erlaubt die Erstellung von Kontrollkästchen, Optionsfeldern und auswählbaren Menüs." + +#: components/textarea.inc:62 +msgid "Height" +msgstr "Höhe" + +#: components/textarea.inc:64 +msgid "Height of the textfield." +msgstr "Höhe des Textfeldes." + +# not literally +#: components/textarea.inc:70 +msgid "Resizable" +msgstr "In der Größe anpassbar" + +# not literally +#: components/textarea.inc:71 +msgid "Make this field resizable by the user." +msgstr "Ermöglicht dem Benutzer das Feld in der Größe anzupassen." + +#: components/textarea.inc:146 +msgid "A large text area that allows for multiple lines of input." +msgstr "Ein großer Textbereich, um einen Text über mehrere Zeilen einzugeben." + +#: components/textfield.inc:64 +msgid "Maxlength" +msgstr "Maximallänge" + +#: components/textfield.inc:66 +msgid "Maxlength of the textfield." +msgstr "Maximallänge des Textfeldes." + +#: components/textfield.inc:73 +msgid "Label placed to the left of the textfield" +msgstr "Beschriftung, die links vom Textfeld plaziert wird" + +#: components/textfield.inc:75 +msgid "Examples: $, #, -." +msgstr "Beispiele: $, #, -." + +#: components/textfield.inc:82 +msgid "Label placed to the right of the textfield" +msgstr "Beschriftung, die rechts vom Textfeld plaziert wird" + +#: components/textfield.inc:84 +msgid "Examples: lb, kg, %." +msgstr "Beispiele: lb, kg, %." + +#: components/textfield.inc:195 +msgid "Basic textfield type." +msgstr "Basis Textfeldtyp." + +#: components/time.inc:43 +msgid "Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are all valid." +msgstr "Es wird jedes Datum im <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Datums-Eingabeformat</a> akzeptiert. Folgende Zeichenketten sind z. B. gültig: '+2 hours' und 10:30pm'." + +#: components/time.inc:53 +msgid "Adjust the time according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "Stellen Sie das Datum auf eine bestimmte Zeitzone ein. Die Website-Zeitzone wird unter <a href=\"%settings\">Website-Einstellungen</a> eingestellt und entspricht dem Standardwert." + +#: components/time.inc:67 +msgid "Time Format" +msgstr "Zeitformat" + +#: components/time.inc:69 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Die Anzeige der Zeit in 12 oder 24 Stunden formatieren." + +#: components/time.inc:123 +msgid "hour" +msgstr "Stunde" + +#: components/time.inc:124 +msgid "minute" +msgstr "Minute" + +#: components/time.inc:127 +msgid "am" +msgstr "am" + +#: components/time.inc:127 +msgid "pm" +msgstr "pm" + +# BUG: English is not context sensitive +#: components/time.inc:179 +msgid "Entered %name is not a valid time." +msgstr "Der eingegebene Wert %name ist keine gültige Zeitangabe." + +#: components/time.inc:250 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "Zeigt dem Benutzer Felder mit Stunde und Minute an. Optional auch Vormittags/Nachmittags-Felder." + diff --git a/sites/all/modules/webform/translations/el.po b/sites/all/modules/webform/translations/el.po new file mode 100644 index 0000000000000000000000000000000000000000..35a86b8076ba88b91c4a18f4f3f39a1cfcfba0f3 --- /dev/null +++ b/sites/all/modules/webform/translations/el.po @@ -0,0 +1,1491 @@ +# translation of el.po to Greek +# Vasileios Lourdas <lourdas_v@yahoo.gr>, 2007. +# Vasileios Lourdas <vasilis@lourdas.name>, 2008. +# Vasileios Lourdas <drupal@lourdas.name>, 2008. +# Greek translation of webform.module (Drupal) to Ελληνικά +# $Id: el.po,v 1.4 2011/01/05 04:39:01 quicksketch Exp $ +# LANGUAGE translation of Drupal (general) +msgid "" +msgstr "" +"Project-Id-Version: el\n" +"POT-Creation-Date: 2008-11-29 14:21+0200\n" +"PO-Revision-Date: 2008-11-29 14:26+0200\n" +"Last-Translator: Vasileios Lourdas <drupal@lourdas.name>\n" +"Language-Team: Greek <el@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: KBabel 1.11.4\n" + +#: webform-confirmation.tpl.php:23 webform_report.inc:93 +msgid "Go back to the form" +msgstr "Μετάβαση πίσω στη φόρμα" + +#: webform-mail.tpl.php:26 +msgid "Submitted on @date" +msgstr "Υποβλήθηκε την @date" + +#: webform-mail.tpl.php:29 +msgid "Submitted by user: @username [@ip_address]" +msgstr "Υποβλήθηκε από το χρήστη: @username [@ip_address]" + +#: webform-mail.tpl.php:31 +msgid "Submitted by anonymous user: [@ip_address]" +msgstr "Υποβλήθηκε από τον ανώνυμο χρήστη: [@ip_address]" + +#: webform-mail.tpl.php:35 +msgid "Submitted values are" +msgstr "Οι υποβληθέντες τιμές είναι" + +#: webform-mail.tpl.php:48 +msgid "The results of this submission may be viewed at:" +msgstr "Τα αποτελέσματα αυτής της υποβολής μπορούν να εμφανιστούν στη:" + +#: webform_components.inc:39;130;359 +msgid "Weight" +msgstr "Βάρος" + +#: webform_components.inc:44;130;324 +msgid "Mandatory" +msgstr "Υποχρεωτικό" + +#: webform_components.inc:50;130 +msgid "E-mail" +msgstr "E-mail" + +#: webform_components.inc:92;230;256 +msgid "Add" +msgstr "Προσθήκη" + +#: webform_components.inc:98;392 webform.module:1476;1493;1611 +msgid "Submit" +msgstr "Υποβολή" + +#: webform_components.inc:104;250 +msgid "Publish" +msgstr "Δημοσίευση" + +#: webform_components.inc:130 webform.module:865;1320 components/file.inc:550 +msgid "Name" +msgstr "Όνομα" + +#: webform_components.inc:130 webform.module:866 +msgid "Type" +msgstr "Τύπος" + +#: webform_components.inc:130 components/markup.inc:34 +msgid "Value" +msgstr "Τιμή" + +#: webform_components.inc:130 webform_report.inc:47 webform.module:2106 +msgid "Operations" +msgstr "Λειτουργίες" + +#: webform_components.inc:135 +msgid "New component name" +msgstr "Όνομα νέου συστατικού" + +#: webform_components.inc:191 webform_report.inc:78 webform.module:2117;235 +msgid "Edit" +msgstr "Επεξεργασία" + +#: webform_components.inc:192 +msgid "Clone" +msgstr "Αντιγραφή" + +#: webform_components.inc:193;482 webform_report.inc:79 +#: webform_submissions.inc:105 webform.module:245 +msgid "Delete" +msgstr "Διαγραφή" + +#: webform_components.inc:215 +msgid "No Components, add a component below." +msgstr "Δεν υπάρχουν συστατικά, προσθέστε ένα παρακάτω." + +#: webform_components.inc:231 +msgid "When adding a new component, the name field is required." +msgstr "Κατά την προσθήκη νέου συστατικού, το όνομα του πεδίου είναι απαραίτητο." + +#: webform_components.inc:253 +msgid "Your webform has been published." +msgstr "Το webform έχει δημοσιευθεί." + +#: webform_components.inc:261 +msgid "The component positions and mandatory values have been updated." +msgstr "Οι θέσεις των συστατικών και οι υποχρεωτικές τιμές αποθηκεύτηκαν." + +#: webform_components.inc:266 +msgid "Edit component: @name (@type)" +msgstr "Επεξεργασία συστατικού: @name (@type)" + +#: webform_components.inc:292 +msgid "Label" +msgstr "Ετικέτα" + +#: webform_components.inc:293 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "Θα χρησιμοποιηθεί ως μια περιγραφική ετικέτα και ως κλειδί κατά την αποθήκευση των δεδομένων στη βάση." + +#: webform_components.inc:301 webform.module:641;1320 +msgid "Description" +msgstr "Περιγραφή" + +#: webform_components.inc:302 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "Μια μικρή περιγραφή του πεδίου που θα χρησιμοποιηθεί ως βοήθεια για το χρήστη όταν χρησιμοποιήσει τη φόρμα." + +#: webform_components.inc:308 +msgid "Advanced settings" +msgstr "Ρυθμίσεις για προχωρημένους" + +#: webform_components.inc:317 +msgid "Field Key" +msgstr "Κλειδί πεδίου" + +#: webform_components.inc:318 +msgid "Enter a machine readable key for this form element. May contain only lowercase alphanumeric characters and underscores. This key will be used as the name attribute of the form element. This value has no effect on the way data is saved, but may be helpful if using Additional Processing or Validation code." +msgstr "Εισάγετε ένα κλειδί σε αναγνώσιμη από τη μηχανή μορφή για αυτό το στοιχείο της φόρμας. Μπορεί να περιέχει μόνο πεζούς αλφαριθμητικούς χαρακτήρες και το χαρακτήρα _ (underscore). Το κλειδί αυτό θα χρησιμοποιηθεί ως η ιδιότητα όνομα του στοιχείου της φόρμας. Η τιμή αυτή δεν επηρεάζει τον τρόπο αποθήκευσης των δεδομένων, αλλά μπορεί να φανεί χρήσιμη αν χρησιμοποιείται Πρόσθετη Επεξεργασία ή κώδικας για Επαλήθευση." + +#: webform_components.inc:326 +msgid "Check this option if the user must enter a value." +msgstr "Επιλέξτε την επιλογή αν ο χρήστης πρέπει να εισάγει τιμή." + +#: webform_components.inc:332 +msgid "Include in e-mails" +msgstr "Συμπερίληψη στα e-mail" + +#: webform_components.inc:334 +msgid "If checked, submitted values from this component will be included in e-mails." +msgstr "Αν είναι ενεργοποιημένο, θα συμπεριλαμβάνονται στα e-mail οι υποβληθείσες τιμές για το συστατικό αυτό." + +#: webform_components.inc:340 +msgid "Root" +msgstr "Ρίζα" + +#: webform_components.inc:348 +msgid "Parent Fieldset" +msgstr "Γονικό σύνολο πεδίων" + +#: webform_components.inc:350 +msgid "Optional. You may organize your form by placing this component inside another fieldset." +msgstr "Προαιρετικό. Μπορείτε να οργανώσετε τη φόρμα σας τοποθετώντας το συστατικό αυτό μέσα σε ένα άλλο σύνολο πεδίων." + +#: webform_components.inc:361 +msgid "Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top." +msgstr "Προαιρετικό. Στο μενού, τα βαρύτερα θα βουλιάζουν και τα ελαφρύτερα θα τοποθετούνται πιο κοντά στην κορυφή." + +#: webform_components.inc:373 +msgid "The webform component of type @type does not have an edit function defined." +msgstr "Το συστατικό webform του τύπου @type δεν έχει ορισμένη μέθοδο τροποποίησης." + +#: webform_components.inc:406 +msgid "The field key %field_key is invalid. Please include only lowercase alphanumeric characters and underscores." +msgstr "Το κλειδί του πεδίου %field_key είναι μη έγκυρο. Εισάγετε μόνο πεζούς αλφαριθμητικούς χαρακτήρες και το χαρακτήρα _ (underscore)." + +#: webform_components.inc:411 +msgid "The field key %field_key is already in use by the field labeled %existing_field. Please use a unique key." +msgstr "Το κλειδί του πεδίου %field_key χρησιμοποιείται ήδη από το πεδίο με ετικέτα %existing_field. Χρησιμοποιήστε ένα μοναδικό κλειδί." + +#: webform_components.inc:445 +msgid "Component %name cloned." +msgstr "Το συστατικό %name αντιγράφηκε." + +#: webform_components.inc:449 +msgid "Component %name updated." +msgstr "Το συστατικό %name ενημερώθηκε." + +#: webform_components.inc:453 +msgid "New component %name added." +msgstr "Το νέο συστατικό %name προστέθηκε." + +#: webform_components.inc:474 +msgid "Delete the %name fieldset?" +msgstr "Διαγραφή της ομάδας πεδίων %name;" + +#: webform_components.inc:475 +msgid "This will immediately delete the %name fieldset and all children elements within %name from the %webform webform. This cannot be undone." +msgstr "Θα γίνει άμεση διαγραφή της ομάδας πεδίων %name και όλων των θυγατρικών στοιχείων μέσα στο %name από το webform %webform. Η ενέργεια είναι μη αναστρέψιμη." + +#: webform_components.inc:478 +msgid "Delete the %name component?" +msgstr "Διαγραφή του συστατικού %name;" + +#: webform_components.inc:479 +msgid "This will immediately delete the %name component from the %webform webform. This cannot be undone." +msgstr "Θα γίνει άμεση διαγραφή του συστατικού %name από το webform %webform. Η ενέργεια είναι μη αναστρέψιμη." + +#: webform_components.inc:486 +msgid "Component %name deleted." +msgstr "Το συστατικό %name διαγράφηκε." + +#: webform_export.inc:21 +msgid "Delimited text" +msgstr "Οριοθετημένο κείμενο" + +#: webform_export.inc:22 +msgid "A plain text file delimited by commas, tabs, or other characters." +msgstr "Ένα απλό αρχείο κειμένου οριοθετημένο με κόμματα, στηλοθέτες ή άλλους χαρακτήρες." + +#: webform_export.inc:26 +msgid "Microsoft Excel" +msgstr "Microsoft Excel" + +#: webform_export.inc:27 +msgid "A file readable by Microsoft Excel." +msgstr "Ένα αρχείο αναγνώσιμο από το Microsoft Excel." + +#: webform_report.inc:23 +msgid "Submissions for %user" +msgstr "Υποβολές του χρήστη %user" + +#: webform_report.inc:40;114 +msgid "#" +msgstr "#" + +#: webform_report.inc:41;115 +msgid "Submitted" +msgstr "Υποβλήθηκε" + +#: webform_report.inc:44;116 +msgid "User" +msgstr "Χρήστης" + +#: webform_report.inc:45;117;314 +msgid "IP Address" +msgstr "Διεύθυνση IP" + +#: webform_report.inc:76 webform.module:2105;225 +msgid "View" +msgstr "Εμφάνιση" + +#: webform_report.inc:88;168;406 +msgid "There are no submissions for this form. <a href=\"!url\">View this form</a>." +msgstr "Δεν υπήρξαν υποβολές για αυτή τη φόρμα. <a href=\"!url\">Δείτε τη φόρμα</a>." + +#: webform_report.inc:195 +msgid "Clear Form Submissions" +msgstr "Διαγραφή όλων των υποβολών της φόρμας" + +#: webform_report.inc:199 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "Θέλετε σίγουρα να διαγράψετε όλες τις υποβολές για αυτή τη φόρμα;" + +#: webform_report.inc:201 webform.module:2118;195 +msgid "Clear" +msgstr "Διαγραφή" + +#: webform_report.inc:201 webform_submissions.inc:105 +msgid "Cancel" +msgstr "Άκυρο" + +#: webform_report.inc:209 +msgid "Webform %title entries cleared." +msgstr "Οι εγγραφές του webform %title διαγράφηκαν." + +#: webform_report.inc:230 +msgid "Export format" +msgstr "Μορφοποίηση εξαγωγής" + +#: webform_report.inc:237 +msgid "Delimited text format" +msgstr "Μορφοποίηση οριοθετημένου κειμένου" + +#: webform_report.inc:238 webform.module:1282 +msgid "This is the delimiter used in the CSV/TSV file when downloading Webform results. Using tabs in the export is the most reliable method for preserving non-latin characters. You may want to change this to another character depending on the program with which you anticipate importing results." +msgstr "Αυτός είναι ο διαχωριστής που χρησιμοποιείται στα αρχεία CSV/TSV όταν κατεβάζετε τα αποτελέσματα του Webform. Η χρησιμοποίηση των καρτελών στην εξαγωγή είναι η πιο αξιόπιστη μέθοδος για τη διατήρηση των μη λατινικών χαρακτήρων. Μπορείτε να αλλάξετε το διαχωριστή σε άλλο χαρακτήρα ανάλογα με την εφαρμογή που αναμένεται να εισάγετε τα αποτελέσματα." + +#: webform_report.inc:241 webform.module:1285 +msgid "Comma (,)" +msgstr "Κόμμα (,)" + +#: webform_report.inc:242 webform.module:1286 +msgid "Tab (\\t)" +msgstr "Στηλοθέτης (\\t)" + +#: webform_report.inc:243 webform.module:1287 +msgid "Semicolon (;)" +msgstr "Ελληνικό ερωτηματικό (;)" + +#: webform_report.inc:244 webform.module:1288 +msgid "Colon (:)" +msgstr "Άνω-κάτω τελεία (:)" + +#: webform_report.inc:245 webform.module:1289 +msgid "Pipe (|)" +msgstr "Αγωγός (|)" + +#: webform_report.inc:246 webform.module:1290 +msgid "Period (.)" +msgstr "Τελεία (.)" + +#: webform_report.inc:247 webform.module:1291 +msgid "Space ( )" +msgstr "Κενό ( )" + +#: webform_report.inc:253 webform.module:2116;185 +msgid "Download" +msgstr "Λήψη" + +#: webform_report.inc:313 +msgid "Submission Details" +msgstr "Λεπτομέρειες υποβολής" + +#: webform_report.inc:314 +msgid "Serial" +msgstr "Σειριακός αριθμός" + +#: webform_report.inc:314 +msgid "SID" +msgstr "SID" + +#: webform_report.inc:314 +msgid "Time" +msgstr "Ώρα" + +#: webform_report.inc:314 +msgid "UID" +msgstr "UID" + +#: webform_report.inc:314 +msgid "Username" +msgstr "Όνομα χρήστη" + +#: webform_report.inc:385 +msgid "Q" +msgstr "Q" + +#: webform_report.inc:386 +msgid "responses" +msgstr "αποκρίσεις" + +#: webform_submissions.inc:98 +msgid "Delete Form Submission" +msgstr "Διαγραφή υποβολής φόρμας" + +#: webform_submissions.inc:103 +msgid "Are you sure you want to delete this submission?" +msgstr "Θέλετε σίγουρα να διαγράψετε την υποβολή για αυτή τη φόρμα;" + +#: webform_submissions.inc:110 +msgid "Submission deleted." +msgstr "Η υποβολή διαγράφηκε." + +#: webform.module:22 +msgid "Webforms are forms and questionnaires. To add one, select <a href=\"!url\">Create content -> Webform</a>." +msgstr "Τα webform είναι φόρμες και ερωτηματολόγια. Για να προσθέσετε ένα, πατήστε στο <a href=\"!url\">Δημιουργία περιεχομένου -> webform</a>." + +#: webform.module:25 +msgid "" +"<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will be sent. If no email address is specified, no e-mail will be sent when submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will be used to populate the return e-mail address on any sent e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that will be used to populate the subject e-mail field on any sent e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown after you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database table <i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" +"<p>Η μονάδα αυτή επιτρέπει τη δημιουργία φορμών ή ερωτηματολογίων και τον καθορισμό του περιεχομένου τους. Οι υποβολές από αυτές τις φόρμες αποθηκεύονται στη βάση δεδομένων και προαιρετικά αποστέλλονται με e-mail σε μια προκαθορισμένη διεύθυνση.</p>\n" +" <p>Παρακάτω πως μπορείτε να φτιάξετε μία:</p>\n" +" <ul>\n" +" <li>Μεταβείτε στο Δημιουργία Περιεχομένου και προσθέστε ένα webform.</li>\n" +" <li>Προσθέστε μια περιγραφή που θα εμφανίζεται ως περίληψη και πάνω από την κανονική φόρμα.</li>\n" +" <li>Προσθέστε ένα μήνυμα επιβεβαίωσης ή ένα κόμβο στον οποίο θα γίνει ανακατεύθυνση μετά την επιτυχή υποβολή.</li>\n" +" <li>Προσθήκη ενός ή περισσοτέρων συστατικών στη φόρμα σας.</li>\n" +" <li>Προαιρετικά, προσθήκη μιας διεύθυνσης e-mail στην οποία θα αποστέλλονται τα υποβληθέντα στοιχεία. Αν δεν καθοριστεί διεύθυνση e-mail, δε θα αποστέλλεται e-mail όταν γίνονται υποβολές μέσω της φόρμας αυτής.</li>\n" +" <li>Προαιρετικά, επιλογή ενός συστατικού e-mail (ή κρυμμένου συστατικού) που θα χρησιμοποιείται για να καθορίσει τη διεύθυνση e-mail επιστροφής σε κάθε e-mail που θα αποστέλλεται.</li>\n" +" <li>Προαιρετικά, επιλογή ενός συστατικού πεδίου κειμένου (ή κρυμμένου συστατικού) που θα χρησιμοποιείται για τη συμπλήρωση του πεδίου του θέματος σε κάθε e-mail που θα αποστέλλεται.</li>\n" +" </ul>\n" +" <p>Βοήθεια σχετικά με την προσθήκη και την ρύθμιση των συστατικών θα εμφανίζεται μετά την προσθήκη του πρώτου συστατικού.</p>\n" +" <p>Το περιεχόμενο της υποβολών της φόρμας θα αποθηκεύεται στον πίνακα <i>webform_submitted_data</i> της βάσης δεδομένων ως ζεύγη κλειδιού-τιμής.</p>\n" +" " + +#: webform.module:41 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "Ένα webform μπορεί να είναι ένα ερωτηματολόγιο, ή μια φόρμα επικοινωνίας ή αίτησης. Μπορεί να χρησιμοποιηθεί από τους επισκέπτες για να έρθουν σε επικοινωνία, να δηλώσουν συμμετοχή σε ένα γεγονός ή για την ενεργοποίηση μιας περίπλοκης έρευνας." + +#: webform.module:44 +msgid "This page displays all the components currently configured for this webform node. You may add any number of components to the form, even multiple of the same type. To add a new component, fill in a name and select a type from the fields at the bottom of the table. Submit the form to create the new component or update any changed form values." +msgstr "Η σελίδα εμφανίζει όλα τα συστατικά που έχουν διευθετηθεί για αυτό τον κόμβο webform. Μπορείτε να προσθέσετε ένα οποιονδήποτε αριθμό από συστατικά στη φόρμα, ακόμη και πολλά του ίδιου τύπου. Για να προσθέσετε ένα νέο συστατικό, εισάγετε το όνομα και επιλέξτε τον τύπο από τα πεδία στο κάτω μέρος του πίνακα. Υποβάλλετε τη φόρμα για να δημιουργήσετε το νέο συστατικό ή να ενημερώσετε οποιεσδήποτε αλλαγές στις τιμές της φόρμας." + +#: webform.module:45 +msgid "Click on any existing component's name to edit its settings." +msgstr "Κάντε κλικ σε οποιοδήποτε όνομα υπάρχοντος συστατικού για να επεξεργαστείτε τις ρυθμίσεις του." + +#: webform.module:76 +msgid "View and edit all the available webforms on your site." +msgstr "Εμφάνιση και τροποποίηση όλων των διαθέσιμων webform στον ιστοτόπο σας." + +#: webform.module:87 +msgid "Global configuration of webform functionality." +msgstr "Καθολική ρύθμιση της λειτουργικότητας των webform." + +#: webform.module:408;82 webform.info:0 +msgid "Webform" +msgstr "Webform" + +#: webform.module:410 +msgid "Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users." +msgstr "Δημιουργία μιας νέας φόρμας ή ερωτηματολογίου προσπελάσιμη από τους χρήστες. Τα αποτελέσματα των υποβολών και τα στατιστικά καταγράφονται και είναι προσπελάσιμα από τους προνομιούχους χρήστες." + +#: webform.module:587 +msgid "Go to form" +msgstr "Μετάβαση στη φόρμα" + +#: webform.module:589 +msgid "View this form." +msgstr "Εμφάνιση αυτής της φόρμας." + +#: webform.module:623 +msgid "Webform Settings" +msgstr "Ρυθμίσεις webform" + +#: webform.module:632;2104 +msgid "Title" +msgstr "Τίτλος" + +#: webform.module:642 +msgid "Text to be shown as teaser and before the form." +msgstr "Κείμενο που θα εμφανίζεται πριν τη φόρμα και ως περίληψη." + +#: webform.module:651 +msgid "Confirmation message or redirect URL" +msgstr "Μήνυμα επιβεβαίωσης ή διεύθυνση URL για ανακατεύθυνση" + +#: webform.module:652 +msgid "Message to be shown upon successful submission or a path to a redirect page. Redirect pages must start with <em>http://</em> for external sites or <em>internal:</em> for an internal path. i.e. <em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "Μήνυμα που θα εμφανίζεται μετά την επιτυχή υποβολή ή μια διαδρομή προς μια σελίδα ανακατεύθυνσης. Οι σελίδες ανακατεύθυνσης πρέπει να αρχίζουν με το <em>http://</em> για εξωτερικούς ιστοτόπους ή με το <em>internal:</em> για μια εσωτερική διαδρομή, πχ. <em>http://www.example.com</em> ή <em>internal:node/10</em>" + +#: webform.module:664 +msgid "Webform access control" +msgstr "Έλεγχος πρόσβασης Webform" + +#: webform.module:669 +msgid "These permissions affect which roles can submit this webform. It does not prevent access to the webform page. If needing to prevent access to the webform page entirely, use a content access module such as <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> or <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." +msgstr "Οι παρακάτω άδειες επηρεάζουν το ποιοι ρόλοι θα μπορούν να υποβάλλουν αυτό το webform. Δεν αποτρέπουν την πρόσβαση στη σελίδα του webform. Αν η αποτροπή πρόσβασης στη σελίδα του webform είναι απαραίτητη, χρησιμοποιήστε μια μονάδα πρόσβασης περιεχομένου, όπως το <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> ή το <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." + +#: webform.module:676 +msgid "Roles that can submit this webform" +msgstr "Ρόλοι που θα μπορούν να υποβάλλουν αυτό το webform" + +#: webform.module:677 +msgid "Uncheck all roles to prevent new submissions. The %authenticated role applies to any user signed into the site, regardless of other assigned roles." +msgstr "Μην επιλέξετε κανένα ρόλο για την αποτροπή νέων υποβολών. Ο ρόλος %authenticated αφορά όλους τους χρήστες που έχουν κάνει εγγραφή στον ιστοτόπο, ασχέτως άλλων ρόλων που τους έχουν ανατεθεί." + +#: webform.module:684 +msgid "Webform mail settings" +msgstr "Ρυθμίσεις e-mail webform" + +#: webform.module:694 +msgid "E-mail to address" +msgstr "Διεύθυνση του παραλήπτη του e-mail" + +#: webform.module:696 +msgid "Form submissions will be e-mailed to this address. Leave blank for none. Multiple e-mail addresses may be separated by commas." +msgstr "Οι υποβολές των φορμών θα αποστέλλονται με e-mail σε αυτή τη διεύθυνση. Αφήστε την κενή για να μη γίνει αποστολή. Πολλαπλές διευθύνσεις e-mail χωρίζονται με το κόμμα." + +#: webform.module:704 +msgid "Conditional e-mail recipients" +msgstr "Υπό συνθήκη παραλήπτες e-mail" + +#: webform.module:705 +msgid "The settings below allow you to send e-mails to multiple recipients based off the value of a component." +msgstr "Οι παρακάτω ρυθμίσεις επιτρέπουν την αποστολή e-mail σε πολλαπλούς παραλήπτες βάσει μιας τιμής ενός συστατικού." + +#: webform.module:729 +msgid "E-mail from name" +msgstr "Το όνομα του αποστολέα του e-mail" + +#: webform.module:730 +msgid "After adding components to this form any email, select, or hidden form element may be selected as the sender's name for e-mails." +msgstr "Μετά την προσθήκη συστατικών στη φόρμα, οποιοδήποτε πεδίο e-mail, αναδυόμενης λίστας ή κρυφό στοιχείο της φόρμας μπορεί να επιλεγεί ως το όνομα του αποστολέα για τα e-mail." + +#: webform.module:734 +msgid "E-mail from address" +msgstr "Διεύθυνση αποστολέα του e-mail" + +#: webform.module:735 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the sender's e-mail address." +msgstr "Μετά την προσθήκη συστατικών στη φόρμα, οποιοδήποτε πεδίο κειμένου, αναδυόμενης λίστας ή κρυφό στοιχείο της φόρμας μπορεί να επιλεγεί ως η διεύθυνση e-mail του αποστολέα." + +#: webform.module:739 +msgid "E-mail subject" +msgstr "Θέμα του e-mail" + +#: webform.module:740 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the subject for e-mails." +msgstr "Μετά την προσθήκη συστατικών στη φόρμα, οποιοδήποτε πεδίο κειμένου, αναδυόμενης λίστας ή κρυφό στοιχείο της φόρμας μπορεί να επιλεγεί ως το θέμα για τα e-mail." + +#: webform.module:775 +msgid "Webform advanced settings" +msgstr "Προχωρημένες ρυθμίσεις webform" + +#: webform.module:783 +msgid "Show complete form in teaser" +msgstr "Εμφάνιση ολόκληρης φόρμας στη σύνοψη" + +#: webform.module:785 +msgid "Display the entire form in the teaser display of this node." +msgstr "Εμφάνιση ολόκληρης της φόρμας κατά την εμφάνιση της σύνοψης του κόμβου." + +#: webform.module:789 +msgid "Limit the number of submissions a user may send within a specified time period" +msgstr "Περιορισμός του αριθμού των υποβολών ενός χρήστη μέσα σε συγκεκριμένο χρονικό διάστημα" + +#: webform.module:794 +msgid "Unlimited" +msgstr "Απεριόριστες" + +#: webform.module:808 +msgid "ever" +msgstr "για πάντα" + +#: webform.module:809 +msgid "every hour" +msgstr "κάθε ώρα" + +#: webform.module:810 +msgid "every day" +msgstr "κάθε ημέρα" + +#: webform.module:811 +msgid "every week" +msgstr "κάθε εβδομάδα" + +#: webform.module:818 +msgid "Submit button text" +msgstr "Κείμενο πλήκτρου υποβολής" + +#: webform.module:820 +msgid "By default the submit button on this form will have the label <em>Submit</em>. Enter a new title here to override the default." +msgstr "Εξ' ορισμού, το πλήκτρο υποβολής της φόρμας θα έχει ετικέτα <em>Submit</em>. Εισάγετε εδώ ένα νέο τίτλο για να παρακάμψετε τον προεπιλεγμένο." + +#: webform.module:825 +msgid "Additional Validation" +msgstr "Πρόσθετη Επαλήθευση" + +#: webform.module:826 +msgid "Enter PHP code to perform additional validation for this form. Include the <?php ?> tags. $form and $form_state are available variables. If validation fails, use the form_set_error function to prevent the form from being submitted. Use the same syntax as a _validate function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Εισάγετε κώδικα PHP για την πρόσθετη επαλήθευση της φόρμας. Συμπεριλάβετε τις σημάνσεις <?php ?>. Τα $form_id και $form_state είναι διαθέσιμες μεταβλητές. Αν η επαλήθευση αποτύχει, χρησιμοποιήστε τη συνάρτηση form_set_error για να αποτρέψετε την υποβολή της φόρμας. Χρησιμοποιήστε την ίδια σύνταξη που χρησιμοποιούν και συναρτήσεις τύπου _validate του <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." + +#: webform.module:834 +msgid "Additional Processing" +msgstr "Πρόσθετη Επεξεργασία" + +#: webform.module:835 +msgid "Enter PHP code to perform additional processing for this form (after the validation). Include the <?php ?> tags. $form and $form_state are available variables, use the same syntax as a _submit function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Εισάγετε κώδικα PHP για πρόσθετη προεπεξεργασία της φόρμας (μετά την επαλήθευση). Συμπεριλάβετε τις σημάνσεις <?php ?>. Τα $form_id και $form_state είναι διαθέσιμες μεταβλητές, χρησιμοποιήστε την ίδια σύνταξη που χρησιμοποιούν και συναρτήσεις τύπου _submit του <a href=\"http://api.drupal.org/api/4.7/file/developer/topics/forms_api.html\">Forms API</a>." + +#: webform.module:864 +msgid "To" +msgstr "Προς" + +#: webform.module:879 +msgid "No components yet in this webform." +msgstr "Δεν υπάρχουν ακόμη συστατικά σε αυτό το webform." + +#: webform.module:894 +msgid "Custom" +msgstr "Προσαρμοσμένο" + +#: webform.module:894 +msgid "Component" +msgstr "Συστατικό" + +#: webform.module:905 +msgid "Default" +msgstr "Προεπιλεγμένο" + +#: webform.module:926 +msgid "Limit to !count submission(s) !timespan" +msgstr "Περιορισμός σε !count υποβολές στο !timespan" + +#: webform.module:939;946 +msgid "The entered email address %address is not a valid address." +msgstr "Η διεύθυνση e-mail %address που εισαγάγατε δεν είναι έγκυρη διεύθυνση." + +#: webform.module:1020 +msgid "The new webform %title has been created. Add new fields to your webform with the form below." +msgstr "Το νέο webform με τίτλο %title δημιουργήθηκε. Προσθέστε νέα πεδία στο webform χρησιμοποιώντας τη φόρμα παρακάτω." + +#: webform.module:1023 +msgid "This webform is currently unpublished. After finishing your changes to the webform, use the <em>Publish</em> button below." +msgstr "Το webform αυτή τη στιγμή δεν είναι δημοσιευμένο. Αφού ολοκληρώσετε τις αλλαγές σας, χρησιμοποιήστε το πλήκτρο <em>Δημοσίευση</em> παρακάτω." + +#: webform.module:1153 +msgid "Submissions for this form are closed." +msgstr "Οι υποβολές για αυτή τη φόρμα είναι κλειστές." + +#: webform.module:1157 +msgid "You must <a href=\"!login\">login</a> or <a href=\"!register\">register</a> to view this form." +msgstr "Πρέπει να <a href=\"!login\">συνδεθείτε</a> ή να <a href=\"!register\">εγγραφείτε</a> για να δείτε αυτή τη φόρμα." + +#: webform.module:1161 +msgid "You do not have permission to view this form." +msgstr "Δεν έχετε την άδεια να δείτε αυτή τη φόρμα." + +#: webform.module:1168 +msgid "You have submitted this form the maximum number of times (@count)." +msgstr "Έχετε ήδη υποβάλλει αυτή τη φόρμα το μέγιστο επιτρεπόμενο αριθμό των @count φορών." + +#: webform.module:1171;1182 +msgid "You have already submitted this form." +msgstr "Έχετε ήδη υποβάλλει αυτή τη φόρμα." + +#: webform.module:1174 +msgid "You may not submit another entry at this time." +msgstr "Δεν μπορείτε να υποβάλλετε άλλη εγγραφή αυτή τη στιγμή." + +#: webform.module:1182;1185 +msgid "<a href=\"!url\">View your previous submissions</a>." +msgstr "<a href=\"!url\">Δείτε τις προηγούμενες υποβολές σας</a>." + +#: webform.module:1211 +msgid "Available components" +msgstr "Διαθέσιμα συστατικά" + +#: webform.module:1214 +msgid "These are the available field types for your installation of Webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms." +msgstr "Παρακάτω είναι μια λίστα διαθέσιμων τύπων πεδίων για την εγκατάσταση του webform. Είναι δυνατή η απενεργοποίηση οποιουδήποτε από τα συστατικά αυτά με καθαρισμό του αντίστοιχου πεδίου επιλογής. Μόνο επιλεγμένα πεδία θα είναι διαθέσιμα σε υπάρχοντα ή νέα webform." + +#: webform.module:1231 +msgid "Default e-mail values" +msgstr "Προεπιλεγμένες τιμές e-mail" + +#: webform.module:1238 +msgid "From address" +msgstr "Διεύθυνση του αποστολέα" + +#: webform.module:1240 +msgid "The default sender address for emailed webform results; often the e-mail address of the maintainer of your forms." +msgstr "Η προεπιλεγμένη διεύθυνση αποστολέα για τα αποτελέσματα του webform μέσω e-mail· συχνά η διεύθυνση e-mail του υπεύθυνου που συντηρεί τις φόρμες." + +#: webform.module:1245 +msgid "From name" +msgstr "Όνομα αποστολέα" + +#: webform.module:1247 +msgid "The default sender name which is used along with the default from address." +msgstr "Το προεπιλεγμένο όνομα αποστολέα που θα χρησιμοποιείται μαζί με την προεπιλεγμένη διεύθυνση αποστολέα." + +#: webform.module:1252 +msgid "Default subject" +msgstr "Προεπιλεγμένο θέμα" + +#: webform.module:1253;2155 +msgid "Form submission from: %title" +msgstr "Υποβολή φόρμας από: %title" + +#: webform.module:1254 +msgid "The default subject line of any e-mailed results." +msgstr "Η προεπιλεγμένη γραμμή θέματος για τα αποτελέσματα μέσω e-mail." + +#: webform.module:1259 +msgid "Advanced options" +msgstr "Επιλογές για προχωρημένους" + +#: webform.module:1267 +msgid "Allow cookies for tracking submissions" +msgstr "Να επιτρέπονται τα cookies για την παρακολούθηση των υποβολών" + +#: webform.module:1269 +msgid "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, Webform also uses IP addresses and site usernames to prevent repeated submissions." +msgstr "Τα <a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> μπορούν να χρησιμοποιηθούν για να βοηθούν στο να αποτρέπουν τον ίδιο χρήστη να υποβάλλει συνέχεια το webform. Το χαρακτηριστικό αυτό δεν είναι απαραίτητο για τον περιορισμό των υποβολών ανά χρήστη, παρόλο που μπορεί να αυξήσει την ακρίβεια σε ορισμένες περιπτώσεις. Εκτός από τα cookies, τα webform χρησιμοποιούν και τις διευθύνσεις IP και τα ονόματα χρηστών του ιστοτόπου για την αποτροπή επαναλαμβανόμενων υποβολών." + +#: webform.module:1274 +msgid "Default export format" +msgstr "Εξ' ορισμού μορφοποίηση εξαγωγής" + +#: webform.module:1281 +msgid "Default export delimiter" +msgstr "Εξ' ορισμού οριοθέτης εξαγωγής" + +#: webform.module:1297 +msgid "Webforms debug" +msgstr "Αποσφαλμάτωση των webform" + +#: webform.module:1299 +msgid "Off" +msgstr "Κλειστό" + +#: webform.module:1299 +msgid "Log submissions" +msgstr "Καταγραφή όλων των υποβολών" + +#: webform.module:1299 +msgid "Full debug" +msgstr "Πλήρης αποσφαλμάτωση" + +#: webform.module:1300 +msgid "Set to \"Log submissions\" to log all submissions in the watchdog. Set to \"Full debug\" to print debug info on submission." +msgstr "Επιλέξτε την επιλογή \"Καταγραφή όλων των υποβολών\" για την καταγραφή όλων των υποβολών στο watchdog. Επιλέξτε το \"Πλήρης αποσφαλμάτωση\" για την εκτύπωση πληροφοριών αποσφαλμάτωσης κατά την υποβολή." + +#: webform.module:1320 +msgid "Enabled" +msgstr "Ενεργοποιημένο" + +#: webform.module:1359 +msgid "Submission #@sid" +msgstr "Υποβολή #@sid" + +#: webform.module:1379;1379 +msgid "Previous submission" +msgstr "Προηγούμενη υποβολή" + +#: webform.module:1382;1382 +msgid "Next submission" +msgstr "Επόμενη υποβολή" + +#: webform.module:1386 +msgid "Submission Information" +msgstr "Πληροφορίες υποβολής" + +#: webform.module:1395 +msgid "Form: !form" +msgstr "Φόρμα: !form" + +#: webform.module:1398 +msgid "Submitted by !name" +msgstr "Υποβλήθηκε από τον !name" + +#: webform.module:1440 +msgid "Next Page >" +msgstr "Επόμενη σελίδα >" + +#: webform.module:1441 +msgid "< Previous Page" +msgstr "< Προηγούμενη σελίδα" + +#: webform.module:1573 +msgid "The webform component @type is not able to be displayed" +msgstr "Το συστατικό webform @type δεν μπορεί να εμφανιστεί" + +#: webform.module:1767 +msgid "Illegal information. Data not submitted." +msgstr "Μη έγκυρες πληροφορίες. Τα δεδομένα δεν υποβλήθηκαν." + +#: webform.module:1810 +msgid "Submission updated." +msgstr "Η υποβολή ενημερώθηκε." + +#: webform.module:1897 +msgid "Thank you, your submission has been received." +msgstr "Σας ευχαριστούμε, έγινε λήψη της υποβολής σας." + +#: webform.module:2113;155;207 +msgid "Submissions" +msgstr "Υποβολές" + +#: webform.module:2114;165 +msgid "Analysis" +msgstr "Ανάλυση" + +#: webform.module:2115;175 +msgid "Table" +msgstr "Πίνακας" + +#: webform.module:2167;2168;2169;2170;2171;2174 +msgid "key" +msgstr "κλειδί" + +#: webform.module:2178 +msgid "You may use special tokens in this field that will be replaced with dynamic values." +msgstr "Μπορείτε να χρησιμοποιήσετε ειδικά σύμβολα σε αυτό το πεδίο που θα αντικατασταθούν με δυναμικές τιμές." + +#: webform.module:2180 +msgid "You can use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables, %session[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> variables and %get[key] to create prefilled forms from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. %cookie, %request and %post also work with their respective PHP variables. For example %server[HTTP_USER_AGENT], %session[id], or %get[q]." +msgstr "Μπορείτε να χρησιμοποιήσετε το %server[κλειδί] για την προσθήκη μιας από τις ειδικές <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> μεταβλητές της PHP, το %session[κλειδί] για την προσθήκη μιας από τις ειδικές <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> μεταβλητές και το %get[κλειδί] για τη δημιουργία συμπληρωμένων από πριν φορμών από τη διεύθυνση <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. Τα %cookie, %request και %post επίσης δουλεύουν με τις αντίστοιχες μεταβλητές της PHP. Για παράδειγμα, %server[HTTP_USER_AGENT], %session[id] ή %get[q]." + +#: webform.module:2182 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "Αν χρησιμοποιείτε τη μονάδα των προφίλ, μπορείτε επίσης να προσπελάσετε όλα τα δεδομένα ενός προφίλ χρησιμοποιώντας τη σύνταξη %profile[όνομα φόρμας]. Αν για παράδειγμα έχετε μια τιμή στο προφίλ με όνομα profile_city, προσθέστε τη μεταβλητή %profile[profile_city]." + +#: webform.module:2186 +msgid "Token values" +msgstr "Τιμές συμβόλων" + +#: webform.module:1805;0 +msgid "webform" +msgstr "webform" + +#: webform.module:1805 +msgid "Submission posted to %title. <a href=\"!url\">Results</a>. !details" +msgstr "Έγινε υποβολή στο %title. <a href=\"!url\">Αποτελέσματα</a>. !details" + +#: webform.module:318 +msgid "create webforms" +msgstr "δημιουργία webform" + +#: webform.module:318 +msgid "edit own webforms" +msgstr "τροποποίηση των δικών τους webform" + +#: webform.module:318 +msgid "edit webforms" +msgstr "τροποποίηση των webform" + +#: webform.module:318 +msgid "access webform results" +msgstr "προσπέλαση των αποτελεσμάτων των webform" + +#: webform.module:318 +msgid "clear webform results" +msgstr "διαγραφή των αποτελεσμάτων των webform" + +#: webform.module:318 +msgid "access own webform submissions" +msgstr "προσπέλαση των δικών τους υποβολών webform" + +#: webform.module:318 +msgid "edit own webform submissions" +msgstr "τροποποίηση των δικών τους υποβολών webform" + +#: webform.module:318 +msgid "edit webform submissions" +msgstr "τροποποίηση των υποβολών webform" + +#: webform.module:318 +msgid "use PHP for additional processing" +msgstr "χρησιμοποίηση της PHP για πρόσθετη επεξεργασία" + +#: webform.module:72 +msgid "Webforms" +msgstr "Webform" + +#: webform.module:93 +msgid "Webform confirmation" +msgstr "Επιβεβαίωση Webform" + +#: webform.module:102 +msgid "Configuration" +msgstr "Παραμετροποίηση" + +#: webform.module:110 +msgid "Form components" +msgstr "Συστατικά φόρμας" + +#: webform.module:145 +msgid "Results" +msgstr "Αποτελέσματα" + +#: webform.module:216 +msgid "Webform submission" +msgstr "Υποβολές Webform" + +#: webform.install:11 +msgid "Table for storing additional properties for webform nodes." +msgstr "Πίνακας για την αποθήκευση πρόσθετων ιδιοτήτων για τους κόμβους webform." + +#: webform.install:14;92;198;233 +msgid "The node identifier of a webform" +msgstr "Το αναγνωριστικό του κόμβου ενός webform" + +#: webform.install:20 +msgid "The confirmation message or URL displayed to the user after submitting a form." +msgstr "Το μήνυμα επιβεβαίωσης ή διεύθυνση URL που εμφανίζεται στο χρήστη μετά την υποβολή μιας φόρμας." + +#: webform.install:25 +msgid "Boolean value for whether the entire form should be displayed on the teaser." +msgstr "Τιμή τύπου boolean που δείχνει αν ολόκληρη η φόρμα πρέπει να εμφανίζεται στη σύνοψη." + +#: webform.install:32 +msgid "The title of the submit button on the form." +msgstr "Ο τίτλος του κουμπιού υποβολής της φόρμας." + +#: webform.install:38 +msgid "The number of submissions a single user is allowed to submit within an interval. -1 is unlimited." +msgstr "Ο αριθμός των υποβολών που επιτρέπεται να κάνει ένας χρήστης μέσα σε ένα διάστημα. -1 για απεριόριστο." + +#: webform.install:45 +msgid "The amount of time in seconds that must pass before a user can submit another submission within the set limit." +msgstr "Ο χρόνος σε δευτερόλεπτα που πρέπει να περάσει προτού ο χρήστης να μπορεί να κάνει άλλη υποβολή μέσα στο όριο που έχει οριστεί." + +#: webform.install:51 +msgid "The primary e-mail address for receiving submission results." +msgstr "Η βασική διεύθυνση e-mail για τη λήψη των υποβληθέντων αποτελεσμάτων." + +#: webform.install:57 +msgid "The name of the sender in sent submission e-mails." +msgstr "Το όνομα του αποστολέα στα αποσταλθέντα e-mail υποβολών." + +#: webform.install:63 +msgid "The address of the sender in sent submission e-mails." +msgstr "Η διεύθυνση του αποστολέα στα αποσταλθέντα e-mail υποβολών." + +#: webform.install:69 +msgid "The subject of sent submission e-mails" +msgstr "Το θέμα στα αποσταλθέντα e-mail υποβολών." + +#: webform.install:75 +msgid "PHP code for additional functionality when validating a form." +msgstr "Κώδικας PHP για πρόσθετη λειτουργικότητα κατά τη διαδικασία ελέγχου της φόρμας." + +#: webform.install:80 +msgid "PHP code for additional functionality when submitting a form." +msgstr "Κώδικας PHP για πρόσθετη λειτουργικότητα κατά τη διαδικασία υποβολής της φόρμας." + +#: webform.install:89 +msgid "Stores information about components for webform nodes." +msgstr "Αποθηκεύει πληροφορίες σχετικά με τα συστατικά των κόμβων webform." + +#: webform.install:99;247 +msgid "The identifier for this component within this node, starts at 0 for each node." +msgstr "Το αναγνωριστικό του συστατικού για αυτό τον κόμβο, ξεκινά από το 0 για κάθε κόμβο." + +#: webform.install:107 +msgid "If this component has a parent fieldset, the cid of that component." +msgstr "Αν αυτό το συστατικό έχει γονέα ομάδα πεδίων, το cid του συστατικού εκείνου." + +#: webform.install:115 +msgid "When the form is displayed and processed, this key can be used to reference the results." +msgstr "Όταν η φόρμα εμφανίζεται και επεξεργάζεται, το κλειδί αυτό μπορεί να χρησιμοποιηθεί ως αναφορά για τα αποτελέσματα." + +#: webform.install:121 +msgid "The label for this component." +msgstr "Η ετικέτα για αυτό το συστατικό." + +#: webform.install:127 +msgid "The field type of this component (textfield, select, hidden, etc.)." +msgstr "Ο τύπος πεδίου του συστατικού (πεδίο κειμένου, επιλογής, κρυφό, κτλ.)." + +#: webform.install:133 +msgid "The default value of the component when displayed to the end-user." +msgstr "Η εξ' ορισμού τιμή του συστατικού όταν εμφανίζεται στον τελικό χρήστη." + +#: webform.install:138 +msgid "Additional information unique to the display or processing of this component." +msgstr "Μοναδικές πρόσθετες πληροφορίες για την εμφάνιση ή επεξεργασία του συστατικού." + +#: webform.install:143 +msgid "Boolean flag for if this component is required." +msgstr "Σήμανση τύπου boolean για το αν το συστατικό είναι απαραίτητο." + +#: webform.install:150 +msgid "Boolean flag for if submitted values for this component will be included in sent e-mails." +msgstr "Σήμανση τύπου boolean για το αν οι υποβληθείσες τιμές για το συστατικό αυτό θα συμπεριλαμβάνονται στα αποσταλθέντα e-mail." + +#: webform.install:157 +msgid "Determines the position of this component in the form." +msgstr "Καθορίζει τη θέση του συστατικού στη φόρμα." + +#: webform.install:168;865 +msgid "Holds access information regarding which roles are allowed to submit which webform nodes. Does not prevent access to the webform node entirely, use the {node_access} table for that purpose." +msgstr "Κρατά πληροφορίες πρόσβασης σχετικά με το ποιοι ρόλοι θα τους επιτρέπεται να υποβάλλουν νέους κόμβους webform. Δεν αποτρέπει την πλήρη πρόσβαση στον κόμβο του webform, χρησιμοποιήστε τον πίνακα {node_access} για αυτό το σκοπό." + +#: webform.install:171;868 +msgid "The node identifier of a webform." +msgstr "Το αναγνωριστικό του κόμβου ενός webform." + +#: webform.install:178;875 +msgid "The role identifier." +msgstr "Το αναγνωριστικό του ρόλου." + +#: webform.install:189 +msgid "Holds general information about submissions outside of field values." +msgstr "Αποθηκεύει γενικές πληροφορίες σχετικά με υποβολές εκτός των τιμών των πεδίων." + +#: webform.install:192;240 +msgid "The unique identifier for this submission." +msgstr "Το μοναδικό αναγνωριστικό της υποβολής." + +#: webform.install:205 +msgid "The id of the user that completed this submission." +msgstr "Το αναγνωριστικό του χρήστη που ολοκλήρωσε την υποβολή." + +#: webform.install:212 +msgid "Timestamp of when the form was submitted." +msgstr "Χρονική ετικέτα του πότε υποβλήθηκε η φόρμα." + +#: webform.install:218 +msgid "The IP address of the user that submitted the form." +msgstr "Η διεύθυνση IP του χρήστη που υπέβαλλε τη φόρμα." + +#: webform.install:230 +msgid "Stores all submitted field data for webform submissions." +msgstr "Αποθηκεύει όλα τα δεδομένα των υποβληθέντων πεδίων για τις υποβολές webform." + +#: webform.install:255 +msgid "Usually this value is 0, but if a field has multiple values (such as a time or date), it may require multiple rows in the database." +msgstr "Συνήθως η τιμή είναι 0, αλλά αν το πεδίο έχει πολλαπλές τιμές (όπως ώρα ή ημερομηνία), μπορεί να απαιτεί πολλαπλές εγγραφές στη βάση δεδομένων." + +#: webform.install:263 +msgid "The submitted value of this field, may be serialized for some components." +msgstr "Η υποβληθείσα τιμή για αυτό το πεδίο, μπορεί να γίνει σειριοποιήσιμη για ορισμένα συστατικά." + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "Παρέχει τη δημιουργία των φορμών και των ερωτηματολογίων." + +#: components/date.inc:37 components/email.inc:38 components/hidden.inc:33 +#: components/select.inc:49 components/textarea.inc:39 +#: components/textfield.inc:41 components/time.inc:36 +msgid "Default value" +msgstr "Προεπιλεγμένη τιμή" + +#: components/date.inc:39 components/email.inc:40 components/hidden.inc:35 +#: components/textarea.inc:41 components/textfield.inc:43 +#: components/time.inc:38 +msgid "The default value of the field." +msgstr "Η προεπιλεγμένη τιμή του πεδίου." + +#: components/date.inc:39 +msgid "Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid." +msgstr "Δέχεται την ημερομηνία σε οποιαδήποτε <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">Μορφή Εισόδου Ημερομηνίας GNU</a>. Φράσεις όπως σήμερα, +2 μήνες και Δεκ 9 2004 είναι όλες αποδεκτές." + +#: components/date.inc:46 components/time.inc:46 +msgid "Timezone" +msgstr "Ώρα Ζώνης" + +#: components/date.inc:48 +msgid "Adjust the date according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "Ρύθμιση της ημερομηνίας ανάλογα με συγκεκριμένη ώρα ζώνης. Η ώρα ζώνης του ιστοτόπου καθορίζεται στις <a href=\"!settings\">Ρυθμίσεις του Ιστοτόπου</a> και είναι η προεπιλεγμένη." + +#: components/date.inc:49 +msgid "Website timezone" +msgstr "Ώρα ζώνης ιστοτόπου" + +#: components/date.inc:49 +msgid "User timezone" +msgstr "Ώρα Ζώνης χρήστη" + +#: components/date.inc:49 +msgid "GMT" +msgstr "GMT" + +#: components/date.inc:54 components/time.inc:54 +msgid "Observe Daylight Savings" +msgstr "Παρακολούθηση της Θερινής Ώρας" + +#: components/date.inc:57 components/time.inc:57 +msgid "Automatically adjust the time during daylight savings." +msgstr "Αυτόματη αλλαγή της ώρας κατά τη θερινή ώρα." + +#: components/date.inc:63 +msgid "Start year" +msgstr "Έτος έναρξης" + +#: components/date.inc:65 +msgid "The first year that is allowed to be entered." +msgstr "Το πρώτο έτος από το οποίο επιτρέπεται η εισαγωγή." + +#: components/date.inc:72 +msgid "End year" +msgstr "Έτος τέλους" + +#: components/date.inc:74 +msgid "The last year that is allowed to be entered." +msgstr "Το τελευταίο έτος μέχρι το οποίο επιτρέπεται η εισαγωγή." + +#: components/date.inc:81 +msgid "Use a textfield for year" +msgstr "Χρησιμοποίηση πεδίου κειμένου για το έτος" + +#: components/date.inc:83 +msgid "If checked, the generated date field will use a textfield for the year. Otherwise it will use a select list." +msgstr "Αν είναι επιλεγμένο, το πεδίο που θα δημιουργηθεί για την ημερομηνία θα χρησιμοποιεί πεδίο κειμένου για το έτος. Διαφορετικά θα χρησιμοποιεί μια αναδυόμενη λίστα." + +#: components/date.inc:188 +msgid "Year" +msgstr "Έτος" + +#: components/date.inc:205 +msgid "!name field is required." +msgstr "Το πεδίο !name είναι απαραίτητο." + +#: components/date.inc:212 +msgid "Entered !name is not a valid date." +msgstr "Το !name δεν είναι έγκυρη ημερομηνία." + +#: components/date.inc:219 +msgid "The entered date needs to be between the years @start and @end." +msgstr "Η ημερομηνία που εισήχθηκε πρέπει να είναι μεταξύ των ετών @start και @end." + +#: components/date.inc:294 +msgid "Presents month, day, and year fields." +msgstr "Παρουσιάζει τα πεδία του μήνα, της ημέρας και του έτους." + +#: components/date.inc:365 components/email.inc:203 components/file.inc:503 +#: components/textarea.inc:162 components/textfield.inc:219 +#: components/time.inc:313 +msgid "Left Blank" +msgstr "Έμεινε κενό" + +#: components/date.inc:366 components/email.inc:204 +#: components/textarea.inc:163 components/textfield.inc:220 +#: components/time.inc:314 +msgid "User entered value" +msgstr "Ο χρήστης εισήγαγε την τιμή" + +#: components/email.inc:49 +msgid "User email as default" +msgstr "Η διεύθυνση e-mail του χρήστη ως προεπιλογή" + +#: components/email.inc:51 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "Ορισμός της προεπιλεγμένης τιμής του πεδίου αυτού στη διεύθυνση e-mail του χρήστη, στην περίπτωση που έχει κάνει είσοδο στο σύστημα." + +#: components/email.inc:58 components/file.inc:122 components/textarea.inc:48 +#: components/textfield.inc:50 +msgid "Width" +msgstr "Πλάτος" + +#: components/email.inc:60 components/textarea.inc:50 +#: components/textfield.inc:52 +msgid "Width of the textfield." +msgstr "Πλάτος του πεδίου κειμένου." + +#: components/email.inc:60 components/file.inc:124 +#: components/textarea.inc:50;58 components/textfield.inc:52 +msgid "Leaving blank will use the default size." +msgstr "Αν μείνει κενό, θα χρησιμοποιηθεί το προεπιλεγμένο μέγεθος." + +#: components/email.inc:66 components/hidden.inc:46 components/select.inc:72 +msgid "E-mail a submission copy" +msgstr "Αποστολή αντιγράφου της υποβολής με e-mail" + +#: components/email.inc:69 components/hidden.inc:49 components/select.inc:75 +msgid "Check this option if this component contains an e-mail address that should get a copy of the submission. Emails are sent individually so other emails will not be shown to the recipient." +msgstr "Επιλέξτε αυτή την επιλογή αν το συστατικό περιέχει μια διεύθυνση e-mail που θα πρέπει να λαμβάνει αντίγραφο της υποβολής. Τα e-mail αποστέλλονται ξεχωριστά, ώστε άλλες διευθύνσεις e-mail να μην φαίνονται στον παραλήπτη." + +#: components/email.inc:73 components/textarea.inc:64 +#: components/textfield.inc:86 +msgid "Disabled" +msgstr "Απενεργοποιημένο" + +#: components/email.inc:75 components/textarea.inc:66 +#: components/textfield.inc:88 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "Δημιουργία του πεδίο ως μη-τροποποιήσιμο. Χρήσιμο όταν θέλει κάποιος να θέσει τιμές που δεν μπορούν να αλλάξουν." + +#: components/email.inc:137 +msgid "%value is not a valid email address." +msgstr "Το '%value' δεν είναι έγκυρη διεύθυνση e-mail." + +#: components/email.inc:170 +msgid "A textfield that automatically fills in a logged-in user's e-mail." +msgstr "Ένα πεδίο κειμένου που αυτόματα συμπληρώνει τη διεύθυνση e-mail του χρήστη που έχει συνδεθεί στο σύστημα." + +#: components/email.inc:205 components/hidden.inc:143 +#: components/textarea.inc:164 components/textfield.inc:221 +msgid "Average submission length in words (ex blanks)" +msgstr "Μέσο μήκος υποβληθέντων στοιχείων σε λέξεις (πχ. κενά)" + +#: components/fieldset.inc:34 +msgid "Collapsible" +msgstr "Συμπτυσσώμενο" + +#: components/fieldset.inc:36 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "Αν αυτό το σύνολο πεδίων είναι συμπτυσσώμενο· ο χρήστης μπορεί να το ανοίξει ή να το κλείσει." + +#: components/fieldset.inc:41 +msgid "Collapsed by Default" +msgstr "Συμπτυγμένο εξ' ορισμού" + +#: components/fieldset.inc:43 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "Τα συμπτυσσώμενα σύνολα πεδίων είναι \"ανοικτά\" εξ' ορισμού. Επιλέξτε την επιλογή αυτή ώστε το σύνολο πεδίων να είναι \"κλειστό\"." + +#: components/fieldset.inc:95 +msgid "Fieldsets allow you to organize multiple fields into groups." +msgstr "Οι ομάδες πεδίων επιτρέπουν την οργάνωση πολλαπλών πεδίων σε ομάδες." + +#: components/file.inc:44 +msgid "Upload Filtering" +msgstr "Φιλτράρισμα αρχείων που υποβάλλονται" + +#: components/file.inc:45 +msgid "Select the types of uploads you would like to allow." +msgstr "Επιλέξτε τον τύπο των αρχείων υποβολής που επιθυμείτε να επιτρέψετε." + +#: components/file.inc:55 +msgid "Web Images" +msgstr "Εικόνες ιστού" + +#: components/file.inc:63 +msgid "Desktop Images" +msgstr "Εικόνες επιφάνειας εργασίας" + +#: components/file.inc:71 +msgid "Documents" +msgstr "Έγγραφα" + +#: components/file.inc:79 +msgid "Media" +msgstr "Μέσα" + +#: components/file.inc:87 +msgid "Archives" +msgstr "Αρχεία" + +#: components/file.inc:94 +msgid "Additional Extensions" +msgstr "Πρόσθετες επεκτάσεις" + +#: components/file.inc:96 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "Εισάγετε μια λίστα πρόσθετων επεκτάσεων αρχείων για το πεδίο αυτό υποβολής αρχείων, χωρισμένες με κόμμα.<br /> Οι επεκτάσεις που θα εισάγετε θα προστεθούν στα παραπάνω επιλεγμένα στοιχεία." + +#: components/file.inc:104 +msgid "Max Upload Size" +msgstr "Μέγιστο μέγεθος αρχείου υποβολής" + +#: components/file.inc:106 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "Εισάγετε το μέγιστο μέγεθος αρχείου που μπορεί να υποβάλλει ένας χρήστης (σε KB)." + +#: components/file.inc:113 +msgid "Upload Directory" +msgstr "Κατάλογος υποβολής αρχείων" + +#: components/file.inc:115 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "Οι υποβολές αρχείων από τα webform αποθηκεύονται πάντα στον κατάλογο files του ιστοτόπου. Μπορείτε προαιρετικά να ορίσετε υποκατάλογο για την αποθήκευση των αρχείων σας." + +#: components/file.inc:124 +msgid "Width of the file field." +msgstr "Πλάτος του πεδίου για το αρχείο." + +#: components/file.inc:139 +msgid "The save directory %directory could not be created. Check that the webform files directory is writtable." +msgstr "Δεν ήταν δυνατή η δημιουργία του κατάλογου αποθήκευσης %directory. Ελέγξτε αν ο κατάλογος αρχείων του webform είναι εγγράψιμος." + +#: components/file.inc:242 +msgid "Category" +msgstr "Κατηγορία" + +#: components/file.inc:242 +msgid "Types" +msgstr "Τύποι" + +#: components/file.inc:301 components/time.inc:166 +msgid "%field field is required." +msgstr "Το πεδίο %field είναι απαραίτητο." + +#: components/file.inc:332 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "Αρχεία με την κατάληξη %ext δεν επιτρέπονται, ανεβάστε ένα αρχείο με μία από τις καταλήξεις %exts." + +#: components/file.inc:337 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "Το αρχείο %filename είναι πολύ μεγάλο (%filesize KB). Υποβάλλετε ένα αρχείο μεγέθους %maxsize KB ή μικρότερο." + +#: components/file.inc:358 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "Δεν ήταν δυνατή η αποθήκευση του υποβληθέντος αρχείου %filename. Ο κατάλογος προορισμού ενδέχεται να μην είναι εγγράψιμος." + +#: components/file.inc:369 +msgid "The uploaded file was unable to be saved. The destination directory does not exist." +msgstr "Δεν ήταν δυνατή η αποθήκευση του υποβληθέντος αρχείου. Ο κατάλογος προορισμού δεν υπάρχει." + +#: components/file.inc:420 +msgid "Uploading a new file will replace the current file." +msgstr "Η υποβολή νέου αρχείου θα προκαλέσει την αντικατάσταση του υπάρχοντος." + +#: components/file.inc:455 +msgid "Allow users to submit files of the configured types." +msgstr "Να επιτρέπεται στους χρήστες να υποβάλλουν αρχεία των τύπων που έχουν οριστεί." + +#: components/file.inc:504 +msgid "User uploaded file" +msgstr "Υποβληθέν από το χρήστη αρχείο" + +#: components/file.inc:505 +msgid "Average uploaded file size" +msgstr "Μέσος όρος μεγέθους υποβληθέντων αρχείων" + +#: components/file.inc:550 +msgid "Filesize (KB)" +msgstr "Μέγεθος αρχείου (KB)" + +#: components/grid.inc:37 components/select.inc:39 +msgid "Options" +msgstr "Επιλογές" + +#: components/grid.inc:39 +msgid "Options to select across the top. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "Μια λίστα επιλέξιμων επιλογών. Μια επιλογή ανά γραμμή. Μπορούν να εισαχθούν ζευγάρια κλειδιού-τιμής χωρισμένα με το χαρακτήρα |, πχ. ασφαλές_κλειδί|Επιλογή σε αναγνώσιμη μορφή" + +#: components/grid.inc:47 +msgid "Questions" +msgstr "Ερωτήσεις" + +#: components/grid.inc:49 +msgid "Questions list down the left side. One question per line." +msgstr "Οι ερωτήσεις εμφανίζονται σε λίστα στα αριστερά. Μια ερώτηση ανά γραμμή." + +#: components/grid.inc:57 +msgid "Randomize Options" +msgstr "Εμφάνιση των επιλογών με τυχαίο τρόπο" + +#: components/grid.inc:59 +msgid "Randomizes the order of options on the top when they are displayed in the form." +msgstr "Εμφάνιση της σειράς των επιλογών στην κορυφή με τυχαίο τρόπο κατά την εμφάνισή τους στη φόρμα." + +#: components/grid.inc:63 +msgid "Randomize Questions" +msgstr "Εμφάνιση των ερωτήσεων με τυχαίο τρόποΕ" + +#: components/grid.inc:65 +msgid "Randomize the order of the questions on the side when they are displayed in the form." +msgstr "Εμφάνιση της σειράς των επιλογών στην πλευρά με τυχαίο τρόπο κατά την εμφάνισή τους στη φόρμα." + +#: components/grid.inc:210 +msgid "Allows creation of grid questions, denoted by radio buttons." +msgstr "Επιτρέπει τη δημιουργία πλέγματος ερωτήσεων, με χρησιμοποίηση ραδιοπλήκτρων." + +#: components/hidden.inc:94 +msgid "@name (hidden)" +msgstr "@name (κρυφό)" + +#: components/hidden.inc:108 +msgid "A field which is not visible to the user, but is recorded with the submission." +msgstr "Ένα πεδίο που δεν είναι ορατό στο χρήστη, αλλά καταγράφεται κατά την υποβολή." + +#: components/hidden.inc:141 +msgid "Empty" +msgstr "Κενό" + +#: components/hidden.inc:142 +msgid "Non-empty" +msgstr "Μη-κενό" + +#: components/markup.inc:36 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "Οι σημάνσεις επιτρέπουν την εισαγωγή προσαρμοσμένου κώδικα HTML ή PHP στη φόρμα σας." + +#: components/markup.inc:58 +msgid "Preview" +msgstr "Δοκιμή εμφάνισης" + +#: components/markup.inc:98 +msgid "Displays text as HTML in the form; does not render a field." +msgstr "Εμφάνιση του κειμένου ως HTML στη φόρμα· δεν αποδίδει κάποιο πεδίο." + +#: components/pagebreak.inc:27 +msgid "Use caution when combining the pagebreak and file components. File components will not be submitted unless they are after the last pagebreak in the form." +msgstr "Προσοχή όταν συνδυάζετε την αλλαγή σελίδας και τα συστατικά αρχείων. Τα συστατικά αρχείων δεν θα υποβληθούν εκτός αν είναι μετά την τελευταία αλλαγή σελίδας στη φόρμα." + +#: components/pagebreak.inc:54 +msgid "Break up a multi-page form." +msgstr "Διαχωρισμός σε φόρμα πολλαπλών-σελίδων." + +#: components/select.inc:41 +msgid "A list of selectable options. One option per line. Key-value pairs may be entered seperated by pipes, such as \"safe_key|Some readable option\". Option groups for lists and menus may be specified with <Group Name>. <> can be used to insert items at the root of the menu after specifying a group." +msgstr "Μια λίστα από επιλογές που μπορεί να επιλέξει ο χρήστης. Μία επιλογή ανά γραμμή. Τα ζεύγη κλειδιού-τιμής εισάγονται διαχωρισμένα με το χαρακτήρα '|', όπως για παράδειγμα \"ασφαλές_κλειδί|Κάποια αναγνώσιμη επιλογή\". Μπορούν να καθοριστούν ομάδες επιλογών για τις λίστες και τα μενού με το <Όνομα Ομάδας>.Τα <> μπορούν να χρησιμοποιηθούν για την εισαγωγή αντικειμένων στη ρίζα του μενού μετά τον ορισμό μιας ομάδας." + +#: components/select.inc:51 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "Η προεπιλεγμένη τιμή του πεδίου. Για πολλαπλές επιλογές χρησιμοποιήστε κόμματα για να διαχωρίσετε πολλαπλές προεπιλεγμένες τιμές." + +#: components/select.inc:58 +msgid "Multiple" +msgstr "Πολλαπλές" + +#: components/select.inc:61 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "Επιλέξτε την επιλογή αυτή για να επιτρέπεται στο χρήστη να μπορεί να επιλέγει πολλαπλές τιμές." + +#: components/select.inc:65 +msgid "Listbox" +msgstr "Πλαίσιο λίστας" + +#: components/select.inc:68 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "Επιλέξτε αυτή την επιλογή αν επιθυμείτε το συστατικό επιλογής να είναι του τύπου πλαισίου λίστας αντί για ραδιοπλήκτρα ή κουτιά επιλογών." + +#: components/select.inc:76 +msgid "To use the option with a select component, you must use key-value pairs seperated by pipes. i.e. user@example.com|Sample user." +msgstr "Για τη χρησιμοποίηση των επιλογών με ένα συστατικό τύπου επιλογής, πρέπει να χρησιμοποιήσετε ζεύγη κλειδιών-τιμών χωρισμένα με το |. Για παράδειγμα, user@example.com|Δοκιμαστικός χρήστης." + +#: components/select.inc:277 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "Επιτρέπει τη δημιουργία πεδίων επιλογής, ραδιοπλήκτρων ή μενού επιλογών." + +#: components/textarea.inc:56 +msgid "Height" +msgstr "Ύψος" + +#: components/textarea.inc:58 +msgid "Height of the textfield." +msgstr "Ύψος του πεδίου κειμένου." + +#: components/textarea.inc:129 +msgid "A large text area that allows for multiple lines of input." +msgstr "Μια μεγάλη περιοχή κειμένου που επιτρέπει πολλαπλές γραμμές εισόδου." + +#: components/textfield.inc:59 +msgid "Maxlength" +msgstr "Μέγιστο μήκος" + +#: components/textfield.inc:61 +msgid "Maxlength of the textfield." +msgstr "Μέγιστο μήκος του πεδίου κειμένου." + +#: components/textfield.inc:68 +msgid "Label placed to the left of the textfield" +msgstr "Ετικέτα που τοποθετείται αριστερά του πεδίου κειμένου" + +#: components/textfield.inc:70 +msgid "Examples: $, #, -." +msgstr "Παραδείγματα: $, #, -." + +#: components/textfield.inc:77 +msgid "Label placed to the right of the textfield" +msgstr "Ετικέτα που τοποθετείται δεξιά του πεδίου κειμένου" + +#: components/textfield.inc:79 +msgid "Examples: lb, kg, %." +msgstr "Παραδείγματα: lb, kg, %." + +#: components/textfield.inc:186 +msgid "Basic textfield type." +msgstr "Τύπος βασικού πεδίου κειμένου." + +#: components/time.inc:38 +msgid "Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are all valid." +msgstr "Δέχεται την ώρα σε οποιαδήποτε <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">Μορφή Εισόδου Ημερομηνίας GNU</a>. Φράσεις όπως τώρα, +2 ώρες και 10:30πμ είναι όλες αποδεκτές." + +#: components/time.inc:48 +msgid "Adjust the time according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "Ρύθμιση της ώρας ανάλογα με συγκεκριμένη ώρα ζώνης. Η ώρα ζώνης του ιστοτόπου καθορίζεται στις <a href=\"!settings\">Ρυθμίσεις του Ιστοτόπου</a> και είναι η προεπιλεγμένη." + +#: components/time.inc:62 +msgid "Time Format" +msgstr "Μορφοποίηση ώρας" + +#: components/time.inc:64 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Μορφοποίηση της εμφάνισης της ώρας σε 12-ωρη ή 24-ωρη μορφή." + +#: components/time.inc:118 +msgid "hour" +msgstr "ώρα" + +#: components/time.inc:119 +msgid "minute" +msgstr "λεπτό" + +#: components/time.inc:122 +msgid "am" +msgstr "πμ" + +#: components/time.inc:122 +msgid "pm" +msgstr "μμ" + +#: components/time.inc:174 +msgid "Entered %name is not a valid time." +msgstr "Το %name δεν είναι έγκυρη ώρα." + +#: components/time.inc:245 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "Παρουσιάζει στο χρήστη πεδία για την ώρα και τα λεπτά. Προαιρετικά πεδίο για πμ/μμ." + diff --git a/sites/all/modules/webform/translations/es.po b/sites/all/modules/webform/translations/es.po new file mode 100644 index 0000000000000000000000000000000000000000..f8895724c267f85a72da2dcf63ca5b2884637db2 --- /dev/null +++ b/sites/all/modules/webform/translations/es.po @@ -0,0 +1,1015 @@ +# $Id: es.po,v 1.4 2011/01/05 04:39:01 quicksketch Exp $ +# +# Spanish translation of Drupal (general) +# Copyright YEAR NAME <EMAIL@ADDRESS> +# Generated from files: +# webform.inc,v 1.48.2.15 2007/10/20 05:39:23 quicksketch +# webform.module,v 1.113.2.51 2007/10/21 06:46:18 quicksketch +# webform_report.inc,v 1.15.2.4 2007/10/20 05:39:23 quicksketch +# webform.install,v 1.14.2.11 2007/10/20 05:39:23 quicksketch +# n/a +# markup.inc,v 1.3.2.3 2007/10/20 05:39:23 quicksketch +# captcha.inc,v 1.11.2.3 2007/10/20 05:39:23 quicksketch +# date.inc,v 1.13.2.9 2007/10/20 05:39:23 quicksketch +# hidden.inc,v 1.11.2.2 2007/10/20 05:39:23 quicksketch +# select.inc,v 1.18.2.12 2007/10/20 05:39:23 quicksketch +# textarea.inc,v 1.11.2.3 2007/10/20 05:39:23 quicksketch +# textfield.inc,v 1.11.2.5 2007/10/20 05:39:23 quicksketch +# time.inc,v 1.14.2.4 2007/10/20 05:39:23 quicksketch +# email.inc,v 1.16.2.5 2007/10/20 05:39:23 quicksketch +# file.inc,v 1.2.2.14 2007/10/20 05:39:23 quicksketch +# fieldset.inc,v 1.3.4.3 2007/10/20 05:39:23 quicksketch +# pagebreak.inc,v 1.1.2.2 2007/10/20 05:39:23 quicksketch +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"POT-Creation-Date: 2008-03-12 14:11-0400\n" +"PO-Revision-Date: 2008-03-12 14:11-0400\n" +"Last-Translator: NAME <EMAIL@ADDRESS>\n" +"Language-Team: Spanish <EMAIL@ADDRESS>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\\n\n" + +#: webform.inc:17 webform.module:499 +msgid "Title" +msgstr "Título" + +#: webform.inc:18 webform_report.inc:56 +msgid "View" +msgstr "Vista" + +#: webform.inc:19 webform_report.inc:32 +msgid "Operations" +msgstr "Operaciones" + +#: webform.inc:27 webform.module:304 +msgid "Submissions" +msgstr "Envíos" + +#: webform.inc:28 webform.module:309 +msgid "Analysis" +msgstr "Análisis" + +#: webform.inc:29 webform.module:314 +msgid "Table" +msgstr "Tabla" + +#: webform.inc:30 webform.module:319 +msgid "Download" +msgstr "Descargar" + +#: webform.inc:35 +msgid "Edit" +msgstr "Editar" + +#: webform.inc:36;57 webform.module:324 +msgid "Clear" +msgstr "Borrar" + +#: webform.inc:51 +msgid "Clear Form Submissions" +msgstr "Borrar envíos" + +#: webform.inc:55 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "¿Seguro que quiere borrar todos los envíos para este formulario?" + +#: webform.inc:57;88 +msgid "Cancel" +msgstr "Cancelar" + +#: webform.inc:67 +msgid "Webform %title entries cleared." +msgstr "Se han borrado las respuestas al webform %title." + +#: webform.inc:81 +msgid "Delete Form Submission" +msgstr "Borrar respuesta" + +#: webform.inc:86 +msgid "Are you sure you want to delete this submission?" +msgstr "¿Seguro que quiere borrar esta respuesta?" + +#: webform.inc:88 webform_report.inc:60 +msgid "Delete" +msgstr "Borrar" + +#: webform.inc:98 +msgid "Submission deleted." +msgstr "Respuesta borrada." + +#: webform.inc:175 +msgid "Submitted on" +msgstr "Enviado el" + +#: webform.inc:179 +msgid "Submitted by user" +msgstr "Enviado por un usuario" + +#: webform.inc:182 +msgid "Submitted by anonymous user" +msgstr "Enviado por un usuario anónimo" + +#: webform.inc:186 +msgid "Submitted values are" +msgstr "La respuesta enviada es" + +#: webform.inc:190 +msgid "The results of this submission may be viewed at:\n" +msgstr "Los resultados de este envío se pueden ver en:\n" + +#: webform.inc:69 webform.module:296;142;1071;1263;1272;1409;1427 webform.install:476 +msgid "webform" +msgstr "formulario web" + +#: webform_report.inc:28;94 +msgid "#" +msgstr "nº" + +#: webform_report.inc:29;95 +msgid "Submitted" +msgstr "Enviado" + +#: webform_report.inc:30;96 +msgid "User" +msgstr "Usuario" + +#: webform_report.inc:31;97 +msgid "IP Address" +msgstr "Dirección IP" + +#: webform_report.inc:252 +msgid "Q" +msgstr "Q" + +#: webform_report.inc:253 +msgid "responses" +msgstr "respuestas" + +#: webform.module:22 +msgid "Webforms are forms and questionnaires. To add one select <strong>create content -> webform</strong>. Below you can set different security and debug options." +msgstr "Webforms son formularios y cuestionarios. Para añadir uno seleccione <strong>crear contenido -> webform</strong>. Debajo puede seleccionar ciertas opciones de seguridad y depuración." + +#: webform.module:25 +msgid "<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p>\r\n <p>Here is how to create one:</p>\r\n <ul>\r\n <li>Go to Create Content and add a webform</li>\r\n <li>Add a description to be displayed as a teaser and above the actual form.</li>\r\n <li>Add a confirmation message or redirect node that is to be displayed after successful submission.</li>\r\n <li>Add one or more components to your form.</li>\r\n <li>Optionally add an e-mail address to which submissions will be sent. If no email address is specified, no e-mail will be sent when submissions are made through the form.</li>\r\n <li>Optionally select an e-mail (or hidden) component that will be used to populate the return e-mail address on any sent e-mail.</li>\r\n <li>Optionally select a textfield (or hidden) component that will be used to populate the subject e-mail field on any sent e-mail.</li>\r\n </ul>\r\n <p>Help on adding and configuring the components will be shown after you add your first component.</p>\r\n <p>The content of submitted forms is stored in the database table <i>webform_submitted_data</i> as key-value pairs.</p>\r\n " +msgstr "<p>este módulo le permite crear formularios o cuestionarios y definir su contenido. Las respuestas a estos formularios quedan almacenadas en la base de datos, y opcionalmente, enviadas por e-mail a una dirección que los administradores pueden indicar.</p>\r\n <p>Para crear uno:</p>\r\n <ul>\r\n <li>Pulse en Crear contenido y añada un webform</li>\r\n <li>Añada una descripción que se mostrará como resumen y encima del cuestionario.</li>\r\n <li>Añada un mensaje de confirmación o nodo de redirección que se mostrará después de recibir la respuesta del usuario.</li>\r\n <li>(Opcional) E-mail a los que se enviarán las respuestas. Si no se especifica e-mail, estas respuestas se almacenarán en la base de datos, pero no se enviarán a nadie, ni siquiera al administrador.</li>\r\n <li>(Opcional) Seleccione una dirección de e-mail, o un campo oculto, que se usará como remitente para los e-mails con las respuestas.</li>\r\n <li>(Opcional) Un campo de texto, u oculto, para el asunto del e-amil con las respuestas.</li>\r\n </ul>\r\n <p>Podrá ver mensajes de ayuda para añadir o configurar componentes después de añadir el primero.</p>\r\n <p>Las respuestas son almacenadas en la tabla <i>webform_submitted_data</i> como valores clave-valor.</p>\r\n" + +#: webform.module:41 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "Un formulario web puede ser un cuestionario, contacto o formulario de peticiones. Se puede emplear para permitir a los visitantes realizar un contacto, registrarse para un evento o activar una encuesta compleja." + +#: webform.module:44 +msgid "Available variables are: %username, %useremail, %site, %date." +msgstr "Las variables disponibles son: %username, %useremail, %site, %date." + +#: webform.module:45 +msgid "You can also use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables and %get[key] to create prefilled forms from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a> (e.g. %server[HTTP_USER_AGENT] or %get[id])." +msgstr "También puede usar %server[key] para añadir alguna variable especial PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> y %get[key] para crear formularios prerellenados desde la <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a> (ejemplo: %server[HTTP_USER_AGENT] o %get[id])." + +#: webform.module:47 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "Si está utilizando el módulo de perfiles, puede acceder a todos los datos del perfil haciendo uso de la sintaxis %profile[nombre_formulario]. Si tiene, por ejemplo, un valor en el perfil denominado perfil_ciudad, añada la variable %profile[perfil_ciudad]." + +#: webform.module:74;282;329 webform.install:507 webform.info:0;0 +msgid "Webform" +msgstr "Webform" + +#: webform.module:76 +msgid "Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users." +msgstr "Crear un nuevo formulario accesible a los usuarios. Las respuestas y estadísticas son accesibles para con permiso especial" + +#: webform.module:168 +msgid "Available Components" +msgstr "Componentes disponibles" + +#: webform.module:171 +msgid "Below is a list of supported field types available for webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms." +msgstr "La siguiente es una lista de tipos de campo disponibles para webform. Puedes desabilitar cualqueira de estos componentes desmarcando el cuadro correspondiente. Sólo los componentes marcados estarán disponibles en los webforms, tanto existentes como nuevos." + +#: webform.module:188 +msgid "Default E-mail Values" +msgstr "Valores por defecto para e-mail" + +#: webform.module:195 +msgid "From e-mail address" +msgstr "Desde e-mail" + +#: webform.module:197 +msgid "Default sender address. This may be the E-mail address of the maintainer of your forms. This is also used for Reply-To, Return-Path and Errors-To." +msgstr "Dirección del remitente por defecto. Esta puede ser la dirección del encargado de mantener los webforms. También se usa para Reply-To, Return-Path and Errors-To." + +#: webform.module:202 +msgid "From Name" +msgstr "Desde nombre" + +#: webform.module:204 +msgid "Default sender name which is displayed together with the E-mail address." +msgstr "Nombre del remitente por defecto. Se muestra junto a su dirección." + +#: webform.module:209 +msgid "Default Subject" +msgstr "Asunto por defecto" + +#: webform.module:210;605;1360 +msgid "Form submission from: " +msgstr "" + +#: webform.module:211 +msgid "Asunto por defecto. Si no se indica otra cosa en la configuración del webform, esto se añade al título del webform. Por ejemplo, si tiene definido \"Su \" (nótese el espacio) como asunto por defecto y un webform titulado \"pregunta\" el asunto del e-mail será \"Su pregunta\"." +msgstr "" + +#: webform.module:216 +msgid "Advanced Options" +msgstr "Opciones avanzadas" + +#: webform.module:224 +msgid "Allow Cookies for Tracking Submissions" +msgstr "Permitir cookies para rastrear los envíos" + +#: webform.module:226 +msgid "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, webform also uses IP addresses and site usernames to prevent repeated submissions." +msgstr"Las <a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">cookies</a> se pueden usar para impedir que el mismo usuario conteste varias veces. No es necesario para limitar las respuestas por cada usuario, pero aumenta la precisión en ciertas situaciones. Además de las cookies, webforms usa la dirección IP y el nombre de usuario para controlar esto." + +#: webform.module:231 +msgid "Webforms Debug" +msgstr "Depurado de los formularios web" + +#: webform.module:233 +msgid "OFF" +msgstr "Apagado" + +#: webform.module:233 +msgid "Log submissions" +msgstr "Registro (log) de envíos" + +#: webform.module:233 +msgid "Full debug" +msgstr "Debug completo" + +#: webform.module:234 +msgid "Set this option to \"Log submissions\" to log all submissions in the watchdog. Set it to \"Full debug\" to print debug info on submission. You probably want to leave this option on \"OFF\"." +msgstr "Seleccione \"Registro (log) de envíos\" para anotar todos los envíos en el watchdog. Seleccione \"Debug completo\" para mostrar información de debug en cada envío." + +#: webform.module:250;814 +msgid "Name" +msgstr "Nombre" + +#: webform.module:250;507;911 +msgid "Description" +msgstr "Descripción" + +#: webform.module:250 +msgid "Enabled" +msgstr "Activo" + +#: webform.module:272 +msgid "Webforms" +msgstr "Webforms" + +#: webform.module:275 +msgid "View and edit all the available webforms on your site." +msgstr "Ver y editar todos los webforms del sitio." + +#: webform.module:286 +msgid "Global configuration of webform functionality." +msgstr "Configuración global de Webform." + +#: webform.module:300;1427 +msgid "Results" +msgstr "Resultados" + +#: webform.module:347 +msgid "Go to form" +msgstr "Ir al formulario" + +#: webform.module:349 +msgid "View this form." +msgstr "Ver este formulario." + +#: webform.module:369;459;559 +msgid "Delete Selected" +msgstr "Borrar seleccionado" + +#: webform.module:388;969 +msgid "Done" +msgstr "Hecho" + +#: webform.module:405;451;564;832 +msgid "Edit Selected" +msgstr "Editar seleccionado" + +#: webform.module:412 +msgid "The form component has been changed. Remember to press Submit on the bottom of this form to save your changes." +msgstr "El componente del formulario se ha cambiado. Recuerde pulsar sobre \"Enviar\", en la parte inferior de este formulario, para guardar sus cambios." + +#: webform.module:414;472;1059;1099 components/markup.inc:41 +msgid "Preview" +msgstr "Previsualizar" + +#: webform.module:442;581 +msgid "Add" +msgstr "Añadir" + +#: webform.module:464 +msgid "Field deleted, form must be submitted to save changes" +msgstr "Campo borrado, debe enviar el formulario para que se guarden los cambios" + +#: webform.module:467 +msgid "A component must be selected to delete" +msgstr "debe seleccionar un componente para borrar" + +#: webform.module:471;1150;1169;1186;1295 +msgid "Submit" +msgstr "Enviar" + +#: webform.module:476 +msgid "Submission limit must be a number" +msgstr "" + +#: webform.module:491 +msgid "Webform Settings" +msgstr "Configuración de Webform" + +#: webform.module:508 +msgid "Text to be shown as teaser and before the form." +msgstr "Texto que se mostrará antes del formulario." + +#: webform.module:517 +msgid "Confirmation message or redirect URL" +msgstr "Mensaje de confirmación o redirección URL" + +#: webform.module:518 +msgid "Message to be shown upon successful submission or a path to a redirect page. Redirect pages must start with <em>http://</em> for external sites or <em>internal:</em> for an internal path. i.e. <em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "Mensaje para ser mostrado al recibir una respuesta, o ruta a una página. Las rutas de páginas deben empezar con <em>http://</em> para sitios externos o <em>internal:</em> para una ruta interna. Ejemplo <em>http://www.ejemplo.com</em> o <em>internal:node/10</em>" + +#: webform.module:531 +msgid "Components" +msgstr "Componentes" + +#: webform.module:573 +msgid "Add a new component" +msgstr "Añadir un componente nuevo" + +#: webform.module:576 +msgid "Each component adds a new field to the form. Any number components (even of the same type) may be added to the form. Select a component type to add above." +msgstr "Cada componente añade un campo al formulario. Se puede añadir cualquier número de componentes, incluso del mismo tipo. Seleccione un tipo de componente para añadirlo." + +#: webform.module:589 +msgid "Mail Settings" +msgstr "Configuración de e-mail" + +#: webform.module:597 +msgid "E-mail to address" +msgstr "E-mail de destino" + +#: webform.module:599 +msgid "Form submissions will be e-mailed to this address. Leave blank for none." +msgstr "Las respuestas se enviarán a esta dirección. Deje en blanco para no enviar." + +#: webform.module:603;604;605 +msgid "Default" +msgstr "Por defecto" + +#: webform.module:603;604;605 +msgid "None" +msgstr "Ningun" + +#: webform.module:605 +msgid "$title" +msgstr "$title" + +#: webform.module:622 +msgid "E-mail from name" +msgstr "Nombre del remitente" + +#: webform.module:625 +msgid "After adding components to this form, any textfield or hidden form element may be selected as the sender's name for e-mails." +msgstr "Después de añadir componentes a este formulario, cualquier textfield o campo oculto se puede seleccionar como nombre del remitente para los e-mails." + +#: webform.module:631 +msgid "E-mail from address" +msgstr "E-mail remitente" + +#: webform.module:634 +msgid "After adding components to this form, any e-mail or hidden form element may be selected as the sender's address for e-mails." +msgstr "Después de añadir componentes a este formulario, cualquier textfield o campo oculto se puede seleccionar como e-mail de origen para los e-mails." + +#: webform.module:640 +msgid "E-mail subject" +msgstr "Asunto del e-mail" + +#: webform.module:643 +msgid "After adding components to this form, any textfield or hidden form element may be selected as the subject line for e-mails." +msgstr "Después de añadir componentes a este formulario, cualquier textfield o campo oculto se puede seleccionar como asunto para los e-mails." + +#: webform.module:652 +msgid "Advanced Settings" +msgstr "Configuración avanzada" + +#: webform.module:659 +msgid "Limit the number of submission a user may send within a specified time period." +msgstr "Limitar el número de envíos que un usuario puede hacer en un periodo de tiempo especificado." + +#: webform.module:667 +msgid "Unlimited" +msgstr "Ilimitado" + +#: webform.module:676 +msgid "Limit to " +msgstr "Limitar a " + +#: webform.module:684 +msgid "submission(s)" +msgstr "envío(s)" + +#: webform.module:695 +msgid "ever" +msgstr "nunca" + +#: webform.module:696 +msgid "every hour" +msgstr "cada hora" + +#: webform.module:697 +msgid "every day" +msgstr "cada día" + +#: webform.module:698 +msgid "every week" +msgstr "cada semana" + +#: webform.module:711 +msgid "Enter PHP code to perform additional validation for this form. Include the <?php ?> tags. $form_id and $form_values are available variables. If validation fails, use the form_set_error function to prevent the form from being submitted. Use the same syntax as a _validate function used in the <a href=\"http://api.drupal.org/api/4.7/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Introduzca código PHP code para realizar validaciones adicionales. Debe incluir las etiquetas <?php ?>. $form_id y $form_values están disponibles. Si la validación falla, use la función form_set_error para impedir que se acepte el formulario. Use la misma sintaxis que en una función _validate tal como se muestra en la <a href=\"http://api.drupal.org/api/4.7/file/developer/topics/forms_api.html\">Forms API</a>." + +#: webform.module:720 +msgid "Enter PHP code to perform additional processing for this form (after the validation). Include the <?php ?> tags. $form_id and $form_values are available variables, use the same syntax as a _submit function used in the <a href=\"http://api.drupal.org/api/4.7/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Introduzca código PHP code para realizar procesamiento adicional después de la validación. Debe incluir las etiquetas <?php ?>. $form_id y $form_values están disponibles. Use la misma sintaxis que en una función _submit tal como se muestra en la <a href=\"http://api.drupal.org/api/4.7/file/developer/topics/forms_api.html\">Forms API</a>." + +#: webform.module:739 +msgid "Redirect POST Values" +msgstr "Redirigir valores POST" + +#: webform.module:740 +msgid "Forward the contents of the POST array to the redirect URL. Use this option for custom processing of the form information. No processing will be done by webform. The confirmation option above MUST be a full redirect URL for this option to have an effect." +msgstr "Envía los contenidos de la matriz POST a la redirección URL. Use esta opción para proceso adicional de la información del formulario. El módulo no realizará ningún procesamiento por su parte. La opción de confirmación DEBE ser una URL completa para que esta opción tenga efecto." + +#: webform.module:810 +msgid "No Components, add a component below." +msgstr "No hay componentes, puede añadir componentes debajo." + +#: webform.module:815 +msgid "Type" +msgstr "Tipo" + +#: webform.module:816 components/markup.inc:17 +msgid "Value" +msgstr "Valor" + +#: webform.module:817;918 components/captcha.inc:25 +msgid "Mandatory" +msgstr "Obligatorio" + +#: webform.module:818;944 +msgid "Weight" +msgstr "Peso" + +#: webform.module:837 +msgid "Component not found" +msgstr "Componente no encontrado" + +#: webform.module:859 +msgid "Unknown component type %component" +msgstr "Tipo de componente desconocido: %component" + +#: webform.module:869 +msgid "Add new %type component" +msgstr "Añadir nuevo componente %type" + +#: webform.module:878 +msgid "Field Details" +msgstr "Detalles del campo" + +#: webform.module:895 +msgid "Field Key" +msgstr "Clave (key) del campo" + +#: webform.module:896 +msgid "Enter a machine readable key for this form element. May contain only lowercase alphanumeric characters and underscores. This key will be used as the name attribute of the form element." +msgstr "Introduzca un nombre para este elemento. Sólo debe tener caracteres en minúsculas sin acentos, eñes y _ en lugar de espacios. Esto se usará en el atributo \"name\" del elemento." + +#: webform.module:903 +msgid "Label" +msgstr "Etiqueta" + +#: webform.module:904 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "Se usa como etiqueta descriptiva al mostrar este elemento." + +#: webform.module:913 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "Una breve descripción del campo, utilizada como ayuda para el usuario cuando este/a utiliza el formulario." + +#: webform.module:920 +msgid "Check this option if the user must enter a value." +msgstr "Marque esta opción si el usuario debe rellenar obligatoriamente este campo" + +#: webform.module:925 +msgid "Root" +msgstr "Raíz" + +#: webform.module:933 +msgid "Parent Fieldset" +msgstr "Fieldset padre" + +#: webform.module:935 +msgid "Optional. You may organize your form by placing this component inside another fieldset." +msgstr "Opcional. Puede organizar su formulario emplazando este componente dentro de un fieldset" + +#: webform.module:946 +msgid "Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top." +msgstr "Opcional. En el menú, los elementos pesados se hunden y los ligeros flotan hacia la zona superior." + +#: webform.module:958 +msgid "The webform component of type @type does not have an edit function defined." +msgstr "El tipo de componente @type no tiene función de edición definida." + +#: webform.module:1002 +msgid "The field key %field_key is invalid. Please include only lowercase alphanumeric charaters and underscores." +msgstr "La clave (key) %field_key no es válida. Sólo debe tener caracteres alfanuméricos en minúsculas y _ en lugar de espacios" + +#: webform.module:1007 +msgid "The field key %field_key is already in use by the field labeled %existing_field. Please use a unique key." +msgstr "La clave (key) %field_key ya está siendo usada por el campo %existing_field. Por favor, indique otra." + +#: webform.module:1071 +msgid "Unauthorized webform access attempt by %name." +msgstr "Intento no autorizado de acceso a webform por %name." + +#: webform.module:1134 +msgid "Next Page >" +msgstr "Página siguiente >" + +#: webform.module:1135 +msgid "< Previous Page" +msgstr "< Página anterior" + +#: webform.module:1238 +msgid "The webform component @type is not able to be displayed" +msgstr "El componente @type no se puede mostrar" + +#: webform.module:1263 +msgid "The authenticated user <a href=\"%user_url\">%username</a> attempted to submit more entries than allowed on the <a href=\"%webform_url\">%webform_title</a> webform" +msgstr "El usuario identificado <a href=\"%user_url\">%username</a> intentó enviar más respuestas de las permitidas en el webform <a href=\"%webform_url\">%webform_title</a>" + +#: webform.module:1272 +msgid "An anonymous user with IP address %ip attempted to submit more entries than allowed on the <a href=\"%webform_url\">%webform_title</a> webform" +msgstr "Un usuario anónimo con IP %ip intentó enviar más respuestas de las permitidas en el webform <a href=\"%webform_url\">%webform_title</a>" + +#: webform.module:1280 +msgid "You have submitted the maximum number of entries. Check submission guidelines." +msgstr "No puede contestar este cuestionario más veces." + +#: webform.module:1409 +msgid "Possible spam attempt from " +msgstr "Posible intento de SPAM desde " + +#: webform.module:1410 +msgid "Illegal information. Data not submitted." +msgstr "Información ilegal. No se ha enviado la información" + +#: webform.module:1427 +msgid "Submission posted to %title" +msgstr "Respuesta enviada a %title" + +#: webform.module:1483 +msgid "No node with the id '%nid' could be found" +msgstr "No se encontró ningún nodo con la nid '%nid'" + +#: webform.module:1495 +msgid "Go back to the form" +msgstr "Volver atrás al formulario" + +#: webform.install:125 +msgid "Webform module installed module tables successfully." +msgstr "El módulo Webform creó las tablas correctamente." + +#: webform.install:128 +msgid "The installation of webform module was unsuccessful." +msgstr "La instalación de webform ha fallado." + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "Activar la creación de formularios y cuestionarios." + +#: components/captcha.inc:14 +msgid "Using captcha components in webform requires the <a href='http://drupal.org/project/captcha'>Captcha</a> and <a href='http://drupal.org/node/52349'>Textimage</a> modules." +msgstr "Usar componentes CAPTCHA en webform requiere los módulos <a href='http://drupal.org/project/captcha'>Captcha</a> y <a href='http://drupal.org/node/52349'>Textimage</a>." + +#: components/captcha.inc:28 +msgid "Captchas are always mandatory" +msgstr "CAPTCHAs son siempre obligatorios" + +#: components/captcha.inc:85 +msgid "Unable to render captcha field because the captcha module is not available." +msgstr "No se puede generar CAPTCHA porque el módulo no está disponible." + +#: components/captcha.inc:135 +msgid "Require a question to prove the user is human. Requires <a href='http://drupal.org/project/captcha'>Captcha</a> module." +msgstr "Hace una pregunta para saber que el usuario es humano. Requiere el módulo <a href='http://drupal.org/project/captcha'>Captcha</a>" + +#: components/date.inc:16 components/hidden.inc:16 components/select.inc:26 components/textarea.inc:16 components/textfield.inc:16 components/time.inc:14 +msgid "Default value" +msgstr "Valor por defecto" + +#: components/date.inc:18 components/hidden.inc:18 components/textarea.inc:18 components/textfield.inc:18 components/time.inc:16 +msgid "The default value of the field." +msgstr "El valor por defecto del campo." + +#: components/date.inc:18 +msgid "Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid." +msgstr "Acepta cualquier fecha en cualquier formato <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date</a>. Cadenas como today, +2 months, y Dec 9 2004 son válidasd." + +#: components/date.inc:25 components/time.inc:24 +msgid "Timezone" +msgstr "Zona horaria" + +#: components/date.inc:27 +msgid "Adjust the date according to a specific timezone. Website timezone is defined in the <a href=\"%settings\">Site Settings</a> and is the default." +msgstr "Ajustar la fecha a la zona horaria. La zona horaria del sitio está definida en <a href=\"%settings\">Día y hora</a>." + +#: components/date.inc:33 components/time.inc:32 +msgid "Observe Daylight Savings" +msgstr "Tener en cuenta el horario de verano" + +#: components/date.inc:36 components/time.inc:35 +msgid "Automatically adjust the time during daylight savings." +msgstr "Ajustar automáticamente la hora de acuerdo al horario de verano." + +#: components/date.inc:79 +msgid "month" +msgstr "mes" + +#: components/date.inc:79 +msgid "January" +msgstr "Enero" + +#: components/date.inc:79 +msgid "February" +msgstr "Febrero" + +#: components/date.inc:79 +msgid "March" +msgstr "Marzo" + +#: components/date.inc:79 +msgid "April" +msgstr "Abril" + +#: components/date.inc:79 +msgid "May" +msgstr "Mayo" + +#: components/date.inc:79 +msgid "June" +msgstr "Junio" + +#: components/date.inc:79 +msgid "July" +msgstr "Julio" + +#: components/date.inc:79 +msgid "August" +msgstr "Agosto" + +#: components/date.inc:79 +msgid "September" +msgstr "Septiembre" + +#: components/date.inc:79 +msgid "October" +msgstr "Octubre" + +#: components/date.inc:79 +msgid "November" +msgstr "Noviembre" + +#: components/date.inc:79 +msgid "December" +msgstr "Diciembre" + +#: components/date.inc:80 +msgid "day" +msgstr "día" + +#: components/date.inc:92 components/time.inc:105 +msgid "This field is required." +msgstr "Este campo es obligatorio." + +#: components/date.inc:135 +msgid "@type %name field required" +msgstr "Campo obligatorio @type %name" + +#: components/date.inc:148 +msgid "Entered %name is not a valid date." +msgstr "\"%name\" no es una fecha válida." + +#: components/date.inc:206 +msgid "Presents month, day, and year fields." +msgstr "Muestra campos de mes, día y año." + +#: components/date.inc:265 components/email.inc:158 components/file.inc:366 components/textarea.inc:142 components/textfield.inc:143 components/time.inc:260 +msgid "Left Blank" +msgstr "En blanco" + +#: components/date.inc:266 components/email.inc:159 components/textarea.inc:143 components/textfield.inc:144 components/time.inc:261 +msgid "User entered value" +msgstr "" + +#: components/email.inc:16 components/textarea.inc:25 components/textfield.inc:25 +msgid "Width" +msgstr "Anchura" + +#: components/email.inc:18 components/textarea.inc:27 components/textfield.inc:27 +msgid "Width of the textfield." +msgstr "Anchura del textfield." + +#: components/email.inc:24 +msgid "User email as default" +msgstr "Email del usuario como valor por defecto" + +#: components/email.inc:27 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "Usar e-mail del usuario como valor por defecto, si es que está identificado." + +#: components/email.inc:31 +msgid "CC submission to this email" +msgstr "Envío de CC a este e-mail" + +#: components/email.inc:34 +msgid "Check this option if the email specified in this component should get a CC submission." +msgstr "Marque esta opción si el e-mail especificado debería recibir una copia CC." + +#: components/email.inc:35 +msgid "Note that this opens the risk that the form can be used to send emails to any address and might be missused as a spam gateway." +msgstr "Advertencia: esto permite que el formulario se use para enviar emails a cualqueir dirección, y puede usarse para enviar SPAM." + +#: components/email.inc:39 components/textarea.inc:41 components/textfield.inc:43 +msgid "Disabled" +msgstr "Desactivado" + +#: components/email.inc:41 components/textarea.inc:43 components/textfield.inc:45 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "Bloquear este campo. Útil para fijar un valor por defecto que no se pueda cambiar." + +#: components/email.inc:94 +msgid "'%value' is not a valid email address" +msgstr "'%value' no es un email válido" + +#: components/email.inc:123 +msgid "A textfield that automatically fills in logged-in users e-mail." +msgstr "Un textfield que automáticamente se rellena con el e-mail del usuario, si está identificado" + +#: components/email.inc:160 components/hidden.inc:113 components/textarea.inc:144 components/textfield.inc:145 +msgid "Average submission length in words (ex blanks)" +msgstr "Longitud promedio de los envíos, en palabras" + +#: components/fieldset.inc:16 +msgid "Collapsible" +msgstr "Colapsable" + +#: components/fieldset.inc:18 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "Si este campo es colapsable, el usuario puede abrirlo o cerrarlo." + +#: components/fieldset.inc:23 +msgid "Collapsed by Default" +msgstr "Colapsado por defecto" + +#: components/fieldset.inc:25 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "Los campos colapsables están por defecto abiertos. Seleccione esta opción para mostrarlos cerrados." + +#: components/fieldset.inc:81 +msgid "Fieldsets allow you to organize complex webforms into groups of fields." +msgstr "los fieldset permiten agrupar los campos de un formulario, útil para formularios complejos." + +#: components/file.inc:18 +msgid "Upload Filtering" +msgstr "Filtro para subida de archivos" + +#: components/file.inc:19 +msgid "Select the types of uploads you would like to allow." +msgstr "Seleccione los tipos de archivo que desea permitir" + +#: components/file.inc:23 +msgid "Web Images" +msgstr "Imágenes web" + +#: components/file.inc:29 +msgid "Desktop Images" +msgstr "Imágenes de esritorio" + +#: components/file.inc:35 +msgid "Documents" +msgstr "Documentos" + +#: components/file.inc:41 +msgid "Media" +msgstr "Medios" + +#: components/file.inc:47 +msgid "Archives" +msgstr "Archivos" + +#: components/file.inc:53 +msgid "Additional Extensions" +msgstr "Extensiones adicionales" + +#: components/file.inc:55 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "Lista de extensiones adicionales, separadas por comas.<br/>Las extensiones introducidas se añadirán a las demás opciones marcadas." + +#: components/file.inc:62 +msgid "Max Upload Size" +msgstr "Tamaño máximo" + +#: components/file.inc:64 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "Tamaño máximo del archivo (en KB)." + +#: components/file.inc:71 +msgid "Upload Directory" +msgstr "Directorio para las subidas" + +#: components/file.inc:73 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "Los archivos se guardan en el directorio 'files' del sitio. Usted puede especificar un subdirectorio." + +#: components/file.inc:158 +msgid "Category" +msgstr "Categoría" + +#: components/file.inc:158 +msgid "Types" +msgstr "Tipos" + +#: components/file.inc:204 +msgid "%fieldname field is required." +msgstr "El campo %fieldname es obligatorio." + +#: components/file.inc:238 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "No se permite la extensión '%ext'. puede subir archivos con estas extensiones: %exts" + +#: components/file.inc:243 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "El archivo '%filename' es demasiado grande (%filesize KB). Puede subir un archivo de %maxsize KB como máximo" + +#: components/file.inc:264 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "El fichero %filename no se pudo guardar. Es posible que el directorio de destino esté protegido contra escritura." + +#: components/file.inc:272 +msgid "The uploaded file %filename was unable to be saved. The destination directory does not exist." +msgstr "El fichero %filename no se pudo guardar. El directorio de destino no existe." + +#: components/file.inc:330 +msgid "Allow users to submit files of the configured types." +msgstr "Permite subir ficheros de los tipos configurados." + +#: components/file.inc:367 +msgid "User uploaded file" +msgstr "Fichero subido por usuario" + +#: components/file.inc:368 +msgid "Average uploaded file size" +msgstr "Tamaño medio de los ficheros" + +#: components/hidden.inc:76 +msgid "Create a field which is not visible to the user, but is recorded with the submission." +msgstr "Crear un campo que el usuario no puede ver, pero cuyo contenido es alamacenado junto con su respuesta." + +#: components/hidden.inc:111 +msgid "Empty" +msgstr "Vacío" + +#: components/hidden.inc:112 +msgid "Non-empty" +msgstr "no vacío" + +#: components/markup.inc:19 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "Markup permite entroducir HTML o PHP en tu formulario." + +#: components/markup.inc:81 +msgid "Presents a markup area of text. Does not render a field." +msgstr "Presenta un área de texto markup. No muestra un campo." + +#: components/pagebreak.inc:38 +msgid "Break up a multi-page form." +msgstr "Separador para un formulario multi-página" + +#: components/select.inc:16 +msgid "Options" +msgstr "Opciones" + +#: components/select.inc:18 +msgid "A list of selectable options. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "Una lista de opciones seleccionables. Una opción por línea. Los valores y las etiquetas deben separarse así: valor|etiqueta" + +#: components/select.inc:28 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "El valor por defecto del campo. Para múltiples valores por defecto, sepárelos con comas" + +#: components/select.inc:35 +msgid "Multiple" +msgstr "Múltiple" + +#: components/select.inc:38 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "Seleccione esta opción si está permitido que el usuario elija entre múltiples valores." + +#: components/select.inc:42 +msgid "Listbox" +msgstr "Listbox" + +#: components/select.inc:45 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "Marque esta opción si quiere que el componente sea una listbox en vez de radiobuttons o checkboxes." + +#: components/select.inc:56 +msgid "The options for this select contain illegal characters (quotes or spaces). Specify your options as <em>safe_value_no_spaces</em>|<em>The Real Value</em>." +msgstr "Las opciones contienen caracteres no permitidos (comillas o espacios). Especifique los valores como <em>valor_seguro_sin_espacios</em>|<em>Valor legible para las personas</em>." + +#: components/select.inc:294 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "Permite crear checkboxes, radio buttons o menús de selección." + +#: components/textarea.inc:33 +msgid "Height" +msgstr "Altura" + +#: components/textarea.inc:35 +msgid "Height of the textfield." +msgstr "Altura del textfield." + +#: components/textarea.inc:107 +msgid "A large text area that allows for multiple lines of input." +msgstr "Un área de texto de varias líneas." + +#: components/textfield.inc:34 +msgid "Maxlength" +msgstr "Maxlength" + +#: components/textfield.inc:36 +msgid "Maxlength of the textfield." +msgstr "Longitud máxima del textfield" + +#: components/textfield.inc:108 +msgid "Basic textfield type." +msgstr "Tipo básico textfield." + +#: components/time.inc:16 +msgid "Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date</a>. Strings such as now, +2 hours, and 10:30pm are all valid." +msgstr "Acepta una hora en cualquier formato. Expresiones como 'ahora', +2 hours o 10:30pm son válidas." + +#: components/time.inc:26 +msgid "Adjust the time according to a specific timezone. Website timezone is defined in the <a href=\"%settings\">Site Settings</a> and is the default." +msgstr "Ajusta la hora de acuerdo con una zona horaria. La zona por defecto es la configurada en el sitio Drupal, en Configuración del sitio > Día y hora" + +#: components/time.inc:40 +msgid "Time Format" +msgstr "Formato de hora" + +#: components/time.inc:42 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Muestra la hora en formato 12 o 24 horas." + +#: components/time.inc:96 +msgid "hour" +msgstr "hora" + +#: components/time.inc:97 +msgid "minute" +msgstr "minuto" + +#: components/time.inc:100 +msgid "am" +msgstr "de la mañana" + +#: components/time.inc:100 +msgid "pm" +msgstr "de la tarde" + +#: components/time.inc:138 +msgid " field is required" +msgstr " es obligatorio" + +#: components/time.inc:204 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "Muestra al usuario campos para seleccionar la hora y el minuto" diff --git a/sites/all/modules/webform/translations/fi.po b/sites/all/modules/webform/translations/fi.po new file mode 100644 index 0000000000000000000000000000000000000000..ceb7dbd4707181332fa6024eae6a04349a18ed1d --- /dev/null +++ b/sites/all/modules/webform/translations/fi.po @@ -0,0 +1,1433 @@ +# $Id: fi.po,v 1.3 2011/01/05 04:39:01 quicksketch Exp $ +# +# LANGUAGE translation of Drupal (general) +# Copyright YEAR NAME <EMAIL@ADDRESS> +# Generated from files: +# webform_components.inc,v 1.1.2.36 2008/10/08 19:51:44 quicksketch +# webform.module,v 1.113.2.70.2.73 2008/10/14 21:51:45 quicksketch +# file.inc,v 1.2.2.19.2.22 2008/10/08 19:51:44 quicksketch +# markup.inc,v 1.3.2.4.2.9 2008/09/06 20:51:36 quicksketch +# webform_report.inc,v 1.15.2.11.2.13 2008/10/08 19:51:44 quicksketch +# webform_submissions.inc,v 1.1.2.23 2008/10/08 19:51:44 quicksketch +# webform_export.inc,v 1.1.2.1 2008/09/21 03:20:46 quicksketch +# webform.info: n/a +# webform.install,v 1.14.2.16.2.24 2008/10/06 05:55:37 quicksketch +# date.inc,v 1.13.2.15.2.13 2008/10/08 19:51:44 quicksketch +# email.inc,v 1.16.2.7.2.11 2008/10/06 05:45:41 quicksketch +# hidden.inc,v 1.11.2.3.2.12 2008/09/06 20:51:36 quicksketch +# select.inc,v 1.18.2.19.2.24 2008/10/22 19:38:59 quicksketch +# textarea.inc,v 1.11.2.4.2.7 2008/09/06 20:51:36 quicksketch +# textfield.inc,v 1.11.2.7.2.8 2008/10/14 18:20:02 quicksketch +# time.inc,v 1.14.2.6.2.8 2008/10/08 19:51:44 quicksketch +# fieldset.inc,v 1.3.4.4.2.5 2008/09/06 20:51:36 quicksketch +# grid.inc,v 1.1.2.3.2.13 2008/10/08 19:51:44 quicksketch +# pagebreak.inc,v 1.1.2.3.2.6 2008/09/06 20:51:36 quicksketch +# +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"POT-Creation-Date: 2008-12-10 14:38+0100\n" +"PO-Revision-Date: 2009-01-25 18:44+0200\n" +"Last-Translator: Petri Tonteri <scope.note a gmail.com>\n" +"Language-Team: finnish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: webform_components.inc:39;127;352 +msgid "Weight" +msgstr "Paino" + +#: webform_components.inc:44;127;317 +msgid "Mandatory" +msgstr "Pakollinen" + +#: webform_components.inc:50;127 +msgid "E-mail" +msgstr "Sähköposti" + +#: webform_components.inc:92 +msgid "Add" +msgstr "Lisää" + +#: webform_components.inc:98;385 +#: webform.module:1281;1300;1317;1420 +msgid "Submit" +msgstr "Lähetä" + +#: webform_components.inc:104;241 +msgid "Publish" +msgstr "Julkaise" + +#: webform_components.inc:127 +#: webform.module:710;1152 +#: components/file.inc:522 +msgid "Name" +msgstr "Nimi" + +#: webform_components.inc:127 +#: webform.module:711 +msgid "Type" +msgstr "Tyyppi" + +#: webform_components.inc:127 +#: components/markup.inc:34 +msgid "Value" +msgstr "Arvo" + +#: webform_components.inc:127 +#: webform_report.inc:44 +#: webform.module:1957 +msgid "Operations" +msgstr "Toiminnot" + +#: webform_components.inc:132 +msgid "New component name" +msgstr "Uusi komponentin nimi" + +#: webform_components.inc:188 +#: webform_report.inc:75 +#: webform.module:220;1968 +msgid "Edit" +msgstr "Muokkaa" + +#: webform_components.inc:189 +msgid "Clone" +msgstr "Kloonaa" + +#: webform_components.inc:190;475 +#: webform_report.inc:76 +#: webform_submissions.inc:117 +#: webform.module:229 +msgid "Delete" +msgstr "Poista" + +#: webform_components.inc:212 +msgid "No Components, add a component below." +msgstr "Ei komponentteja. Lisää komponentti alempana." + +#: webform_components.inc:244 +msgid "Your webform has been published." +msgstr "Verkkolomakkeesi on julkaistu." + +#: webform_components.inc:254 +msgid "The component positions and mandatory values have been updated." +msgstr "Osan sijainnit ja pakolliset arvot on päivitetty." + +#: webform_components.inc:259 +msgid "Edit component: @name (@type)" +msgstr "Muokkaa osaa: @name (@type)" + +#: webform_components.inc:285 +msgid "Label" +msgstr "Otsikko" + +#: webform_components.inc:286 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "Tätä käytetään kuvailevana otsikkona, kun näytetään tämä lomakekomponentti." + +#: webform_components.inc:294 +#: webform.module:486;1152 +msgid "Description" +msgstr "Kuvaus" + +#: webform_components.inc:295 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "Lyhyt kentän kuvaus, joka näytetään käyttäjälle, kun hän käyttää lomaketta." + +#: webform_components.inc:301 +msgid "Advanced settings" +msgstr "Edistyneet asetukset" + +#: webform_components.inc:310 +msgid "Field Key" +msgstr "Kentän avain" + +#: webform_components.inc:311 +msgid "Enter a machine readable key for this form element. May contain only lowercase alphanumeric characters and underscores. This key will be used as the name attribute of the form element. This value has no effect on the way data is saved, but may be helpful if using Additional Processing or Validation code." +msgstr "Anna koneluettava avain lomakkeen tälle komponentille. Avain saa sisältää vain numeroita, pieniä kirjaimia ja alaviivoja. Tätä avainta käytetään nimimääritteenä tälle komponentille. Arvolla ei ole vaikutusta tapaan, jolla data tallennetaan, mutta voi olla hyödyllistä käyttää Lisäprosessointia (Additional Processing) tai Tarkistuskoodia (Validation code)." + +#: webform_components.inc:319 +msgid "Check this option if the user must enter a value." +msgstr "Valitse tämä, jos haluat, että arvon antaminen on pakollista." + +#: webform_components.inc:325 +msgid "Include in e-mails" +msgstr "Liitä sähköposteihin" + +#: webform_components.inc:327 +msgid "If checked, submitted values from this component will be included in e-mails." +msgstr "Jos tämä on valittuna, tämän komponentin lähetetyt arvot sisällytetään sähköposteihin." + +#: webform_components.inc:333 +msgid "Root" +msgstr "Juurikansio" + +#: webform_components.inc:341 +msgid "Parent Fieldset" +msgstr "Emokenttäjoukko" + +#: webform_components.inc:343 +msgid "Optional. You may organize your form by placing this component inside another fieldset." +msgstr "Valinnainen. Voit järjestää lomakkeesi sijoittamalla tämän komponentin toiseen kenttäjoukkoon." + +#: webform_components.inc:354 +msgid "Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top." +msgstr "Valinnainen. Menussa raskaammat kohdat uppoavat ja kevyemmät kohdat sijoittuvat lähelle valikon yläpäätä." + +#: webform_components.inc:366 +msgid "The webform component of type @type does not have an edit function defined." +msgstr "Verkkolomakkeen komponenttityyppiin @type ei ole liitetty muokkaustoimintoa." + +#: webform_components.inc:399 +msgid "The field key %field_key is invalid. Please include only lowercase alphanumeric characters and underscores." +msgstr "Kenttäavain %field_key on virheellinen. Ole hyvä ja käytä vain numeroita, pieniä kirjaimia ja alaviivoja." + +#: webform_components.inc:404 +msgid "The field key %field_key is already in use by the field labeled %existing_field. Please use a unique key." +msgstr "Kenttäavainta %field_key käyttää jo kenttä %existing_field. Ole hyvä ja anna yksilöllinen avain." + +#: webform_components.inc:438 +msgid "Component %name cloned." +msgstr "Komponentti %name on kloonattu." + +#: webform_components.inc:442 +msgid "Component %name updated." +msgstr "Komponentti %name on päivitetty." + +#: webform_components.inc:446 +msgid "New component %name added." +msgstr "Uusi komponentti %name on lisätty." + +#: webform_components.inc:467 +msgid "Delete the %name fieldset?" +msgstr "Poistetaanko %name-kenttäjoukko?" + +#: webform_components.inc:468 +msgid "This will immediately delete the %name fieldset and all children elements within %name from the %webform webform. This cannot be undone." +msgstr "Toiminto poistaa välittömästi %name-kenttäjoukon ja kaikki sen alaiset komponentit %webform-verkkolomakkeen tästä kenttäjoukosta. Toimintoa ei voi perua." + +#: webform_components.inc:471 +msgid "Delete the %name component?" +msgstr "Poistetaanko %name-niminen komponentti?" + +#: webform_components.inc:472 +msgid "This will immediately delete the %name component from the %webform webform. This cannot be undone." +msgstr "Tämä toiminto poistaa välittömästi %name-nimisen komponentin %webform-verkkolomakkeesta. Toimintoa ei voi perua." + +#: webform_components.inc:479 +msgid "Component %name deleted." +msgstr "Komponentti %name on poistettu." + +#: webform_export.inc:21 +msgid "Delimited text" +msgstr "Eroteltu teksti" + +#: webform_export.inc:22 +msgid "A plain text file delimited by commas, tabs, or other characters." +msgstr "Perustekstitiedosto eroteltuna pilkuilla, tabulaattorilla tai muilla merkeillä." + +#: webform_export.inc:26 +msgid "Microsoft Excel" +msgstr "" + +#: webform_export.inc:27 +msgid "A file readable by Microsoft Excel." +msgstr "Microsoft Excelin luettavissa oleva tiedosto." + +#: webform_report.inc:20 +msgid "Submissions for %user" +msgstr "Käyttäjälle %user lähetetyt lomakkeet" + +#: webform_report.inc:37;111 +msgid "#" +msgstr "" + +#: webform_report.inc:38;112 +msgid "Submitted" +msgstr "Lähetetty" + +#: webform_report.inc:41;113 +msgid "User" +msgstr "Käyttäjä" + +#: webform_report.inc:42;114;311 +msgid "IP Address" +msgstr "IP-osoite" + +#: webform_report.inc:73 +#: webform.module:211;1956 +msgid "View" +msgstr "Katsele" + +#: webform_report.inc:85;165;403 +msgid "There are no submissions for this form. <a href=\"!url\">View this form</a>." +msgstr "Tämän lomakkeen lähetyksiä ei ole. <a href=\"!url\">Katso lomaketta</a>." + +#: webform_report.inc:90 +#: webform.module:1715 +msgid "Go back to the form" +msgstr "Palaa lomakkeeseen" + +#: webform_report.inc:192 +msgid "Clear Form Submissions" +msgstr "Poista lähetetyt lomakkeet" + +#: webform_report.inc:196 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "Oletko varma, että haluat poistaa kaikki tämän lomakkeen lähetykset?" + +#: webform_report.inc:198 +#: webform.module:181;1969 +msgid "Clear" +msgstr "Tyhjennä" + +#: webform_report.inc:198 +#: webform_submissions.inc:117 +msgid "Cancel" +msgstr "Peruuta" + +#: webform_report.inc:206 +msgid "Webform %title entries cleared." +msgstr "Lähetetyt %title-verkkolomakkeet on poistettu." + +#: webform_report.inc:227 +msgid "Export format" +msgstr "Vientimuoto" + +#: webform_report.inc:234 +msgid "Delimited text format" +msgstr "Eroteltu tekstimuoto" + +#: webform_report.inc:235 +#: webform.module:1118 +msgid "This is the delimiter used in the CSV/TSV file when downloading Webform results. Using tabs in the export is the most reliable method for preserving non-latin characters. You may want to change this to another character depending on the program with which you anticipate importing results." +msgstr "Tätä erotinta käytetään CSV/TSV-tiedostoissa ladattaessa palvelimelta verkkolomaketuloksia. Tuonnissa tabulaattori on luotettavin erottelutapa ei-latinalaisten merkkien säilyttämiseksi. Jos haluat, voit muuttaa tiedoston muulle merkistölle riippuen ohjelmasta, jolla käsittelet tuotuja tuloksia." + +#: webform_report.inc:238 +#: webform.module:1121 +msgid "Comma (,)" +msgstr "Pilkku (,)" + +#: webform_report.inc:239 +#: webform.module:1122 +msgid "Tab (\\t)" +msgstr "Tabulaattori (\\t)" + +#: webform_report.inc:240 +#: webform.module:1123 +msgid "Semicolon (;)" +msgstr "Puolipiste (;)" + +#: webform_report.inc:241 +#: webform.module:1124 +msgid "Colon (:)" +msgstr "Kaksoispiste (:)" + +#: webform_report.inc:242 +#: webform.module:1125 +msgid "Pipe (|)" +msgstr "" + +#: webform_report.inc:243 +#: webform.module:1126 +msgid "Period (.)" +msgstr "Piste (.)" + +#: webform_report.inc:244 +#: webform.module:1127 +msgid "Space ( )" +msgstr "Välilyönti ( )" + +#: webform_report.inc:250 +#: webform.module:172;1967 +msgid "Download" +msgstr "Lataa" + +#: webform_report.inc:310 +msgid "Submission Details" +msgstr "Lähetyksen tiedot" + +#: webform_report.inc:311 +msgid "Serial" +msgstr "" + +#: webform_report.inc:311 +msgid "SID" +msgstr "" + +#: webform_report.inc:311 +msgid "Time" +msgstr "Aika" + +#: webform_report.inc:311 +msgid "UID" +msgstr "" + +#: webform_report.inc:311 +msgid "Username" +msgstr "Käyttäjänimi" + +#: webform_report.inc:382 +msgid "Q" +msgstr "" + +#: webform_report.inc:383 +msgid "responses" +msgstr "vastaukset" + +#: webform_report.inc:208 +#: webform.module:1580;1619;0 +msgid "webform" +msgstr "verkkolomake" + +#: webform_submissions.inc:110 +msgid "Delete Form Submission" +msgstr "Poistetaan lähetetty lomake" + +#: webform_submissions.inc:115 +msgid "Are you sure you want to delete this submission?" +msgstr "Oletko varma, että haluat poistaa tämän lähetyksen?" + +#: webform_submissions.inc:122 +msgid "Submission deleted." +msgstr "Lähetys poistettu." + +#: webform.module:22 +msgid "Webforms are forms and questionnaires. To add one, select <a href=\"!url\">Create content -> Webform</a>." +msgstr "Verkkolomakkeet ovat lomakkeita ja kyselyitä. Lisätäksesi uuden, valitse <a href=\"!url\">Luo sisältöä -> Verkkolomake</a>." + +#: webform.module:25 +msgid "" +"<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will be sent. If no email address is specified, no e-mail will be sent when submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will be used to populate the return e-mail address on any sent e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that will be used to populate the subject e-mail field on any sent e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown after you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database table <i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" +"<p>Tämä moduuli sallii sinun luoda lomakkeita tai kyselyjä. Lähetetyt lomakkeet varastoidaan tietokantaan ja valinnaisesti lähetetään myös sähköpostilla etukäteen määriteltyyn osoitteeseen.</p>\n" +" <p>Näin luot uuden lomakkeen/kyselyn:</p>\n" +" <ul>\n" +" <li>Mene Luo sisältöä ja lisää verkkolomake</li>\n" +" <li>Lisää kuvaus, joka esitetään teaserina ja varsinaisen lomakkeen yläpuolella.</li>\n" +" <li>Lisää vahvistusviesti tai uudelleen ohjaus -solmu, joka näytetään onnistuneen lähetyksen jälkeen.</li>\n" +" <li>Lisää yksi tai useampi komponentti lomakkeeseesi.</li>\n" +" <li>Valinnaisesti lisää sähköpostiosoite, johon lähetetyt lomakkeet edelleen lähetetään. Jos sähköpostiosoitetta ei ole määritelty, sähköpostia ei lähetetä, kun käyttäjä on lähettänyt täytetyn lomakkeen.</li>\n" +" <li>Valitse joko sähköpostiosoite tai (piilotettu) komponentti, joka täytetään palautussähköpostiosoitekenttään lähetettävissä sähköposteissa.</li>\n" +" <li>Valitse tekstikenttä tai (piilotettu) komponentti, jolla täytetään sähköpostin Aihe-kenttä lähetetyissä sähköposteissa.</li>\n" +" </ul>\n" +" <p>Lisätietoa komponenttien lisäämisestä ja muokkaamisesta näytetään, kun olet lisännyt ensimmäisen komponentin.</p>\n" +" <p>Lähetetyn lomakkeen sisältö tallennetaan tietokannan tauluun <i>webform_submitted_data</i> avain-arvo-parina.</p>\n" + +#: webform.module:41 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "Verkkolomake voi olla esimerkiksi kysely- tai yhteydenottolomake. Lomakkeiden avulla voit tarjota sivuston käyttäjälle yhteydenotto- tai tapahtumiin rekisteröitymismahdollisuuden. Lomakkeilla voit tehdä myös verkkokyselyjä." + +#: webform.module:58 +msgid "This page displays all the components currently configured for this webform node. You may add any number of components to the form, even multiple of the same type. To add a new component, fill in a name and select a type from the fields at the bottom of the table. Submit the form to create the new component or update any changed form values." +msgstr "Tällä sivulla näet kaikki komponentit, jotka ovat tällä hetkellä määritellyt osaksi tätä verkkolomaketta. Voit lisätä lomakkeeseen uusia komponentteja kuinka paljon tahansa, jopa useita samaa tyyppiä olevia komponentteja. Lisätäksesi uuden komponentin, täytä nimikenttä ja valitse komponentin tyyppi taulukon alaosassa olevista kentistä. Lähetä lomake luodaksesi uuden komponentin tai päivittääksesi tehdyn muutoksen lomakkeen arvoihin." + +#: webform.module:59 +msgid "Click on any existing component's name to edit its settings." +msgstr "Klikkaa missä tahansa jo olemassa olevan komponentin nimessä editoidaksesi komponentin asetuksia." + +#: webform.module:76 +msgid "Webforms" +msgstr "Verkkolomakkeet" + +#: webform.module:79 +msgid "View and edit all the available webforms on your site." +msgstr "Tarkastele ja muokkaa kaikkia sivustollasi saatavilla olevia verkkolomakkeita." + +#: webform.module:86;256 +#: webform.info:0 +msgid "Webform" +msgstr "" + +#: webform.module:90 +msgid "Global configuration of webform functionality." +msgstr "Yleiset verkkolomakkeiden toiminnallisuutta määrittelevät asetukset." + +#: webform.module:112 +msgid "Webform confirmation" +msgstr "Verkkolomakkeen hyväksyminen" + +#: webform.module:119 +msgid "Configuration" +msgstr "Asetukset" + +#: webform.module:127 +msgid "Form components" +msgstr "Lomakekomponentit" + +#: webform.module:136;1619 +msgid "Results" +msgstr "Tulokset" + +#: webform.module:145;190;1964 +msgid "Submissions" +msgstr "Lähetetyt lomakkeet" + +#: webform.module:154;1965 +msgid "Analysis" +msgstr "Analyysi" + +#: webform.module:163;1966 +msgid "Table" +msgstr "Taulukko" + +#: webform.module:203 +msgid "Webform submission" +msgstr "Verkkolomakkeen lähetys" + +#: webform.module:258 +msgid "Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users." +msgstr "Luo uusi lomake tai kysely. Lähetettyjen lomakkeiden tulokset ja tilastot tallennetaan ja ovat siihen oikeutettujen käyttäjien nähtävillä." + +#: webform.module:432 +msgid "Go to form" +msgstr "Mene lomakkeeseen" + +#: webform.module:434 +msgid "View this form." +msgstr "Tarkastele tätä lomaketta." + +#: webform.module:468 +msgid "Webform Settings" +msgstr "Verkkolomakkeen asetukset" + +#: webform.module:477;1955 +msgid "Title" +msgstr "Otsikko" + +#: webform.module:487 +msgid "Text to be shown as teaser and before the form." +msgstr "Teksti, joka esitetään teaserina ja ennen lomaketta." + +#: webform.module:496 +msgid "Confirmation message or redirect URL" +msgstr "Vahvistusviesti tai URL-uudelleenohjaus" + +#: webform.module:497 +msgid "Message to be shown upon successful submission or a path to a redirect page. Redirect pages must start with <em>http://</em> for external sites or <em>internal:</em> for an internal path. i.e. <em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "Onnistuneen lähetyksen jälkeen näytettävä viesti tai sivun osoite, jolle käyttäjä uudelleenohjataan. Uudelleenohjaussivun osoitteen täytyy alkaa <em>http://</em>, jos uudelleenohjaus vie muulle sivustolle. Jos uudelleenohjaus vie sivuston sisällä toiselle sivulle, osoitteen täytyy alkaa <em>internal:</em>. Esimerkiksi <em>http://www.esimerkki.fi</em> tai <em>internal:node/10</em>." + +#: webform.module:509 +msgid "Webform access control" +msgstr "Verkkolomakkeen käyttöoikeusmääritykset" + +#: webform.module:514 +msgid "These permissions affect which roles can submit this webform. It does not prevent access to the webform page. If needing to prevent access to the webform page entirely, use a content access module such as <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> or <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." +msgstr "Nämä oikeudet vaikuttavat siihen, mitkä roolit voivat lähettää tämän verkkolomakkeen. Nämä oikeudet eivät estä pääsyä verkkolomakesivulle. Jos haluat estää täysin pääsyn verkkolomakesivulle, käytä erilaisia pääsyoikeusmoduuleja, kuten <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> tai <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." + +#: webform.module:521 +msgid "Roles that can submit this webform" +msgstr "Roolit, jotka voivat lähettää tämän verkkolomakkeen." + +#: webform.module:522 +msgid "Uncheck all roles to prevent new submissions. The %authenticated role applies to any user signed into the site, regardless of other assigned roles." +msgstr "Estääksesi uudet lähetykset poista kaikki oikeudet kaikilta rooleilta. %authenticated-rooli pätee keneen tahansa käyttäjään, joka on sisäänkirjautunut sivustolle, huolimatta muista käyttäjään liitetyistä rooleista." + +#: webform.module:529 +msgid "Webform mail settings" +msgstr "Verkkolomakkeen postitusasetukset" + +#: webform.module:539 +msgid "E-mail to address" +msgstr "Sähköposti, johon lähetetään" + +#: webform.module:541 +msgid "Form submissions will be e-mailed to this address. Leave blank for none. Multiple e-mail addresses may be separated by commas." +msgstr "Lomakelähetykset sähköpostitetaan tähän osoitteeseen. Jätä kenttä tyhjäksi, jos et halua sähköpostittaa lähetyksiä edelleen. Jos annat useita sähköpostiosoitteita, erottele ne pilkuin." + +#: webform.module:549 +msgid "Conditional e-mail recipients" +msgstr "Vaihtoehtoiset sähköpostin vastaanottajat" + +#: webform.module:550 +msgid "The settings below allow you to send e-mails to multiple recipients based off the value of a component." +msgstr "Alempana olevat asetukset sallivat sähköpostituksen useille vastaanottajille. Postitus perustuu tiettyjen komponenttien arvoihin." + +#: webform.module:574 +msgid "E-mail from name" +msgstr "Sähköpostin lähettäjä" + +#: webform.module:575 +msgid "After adding components to this form any email, select, or hidden form element may be selected as the sender's name for e-mails." +msgstr "Tähän lomakkeeseen tehtyjen komponenttien lisäämisten jälkeen mikä tahansa sähköposti, valittu tai piilotettu lomakekomponentti voidaan valita lähettäjän nimeksi sähköposteihin." + +#: webform.module:579 +msgid "E-mail from address" +msgstr "Sähköpostin lähetysosoite" + +#: webform.module:580 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the sender's e-mail address." +msgstr "Tähän lomakkeeseen tehtyjen komponenttien lisäämisten jälkeen mikä tahansa tekstikenttä, valittu tai piilotettu lomakekomponentti voidaan valita lähettäjän sähköpostiosoitteeksi." + +#: webform.module:584 +msgid "E-mail subject" +msgstr "Sähköpostin otsikko" + +#: webform.module:585 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the subject for e-mails." +msgstr "Tähän lomakkeeseen tehtyjen komponenttien lisäämisten jälkeen mikä tahansa tekstikenttä, valittu tai piilotettu lomakekomponentti voidaan valita sähköpostin otsikoksi." + +#: webform.module:620 +msgid "Webform advanced settings" +msgstr "Verkkolomakkeen lisäasetukset" + +#: webform.module:628 +msgid "Show complete form in teaser" +msgstr "Näytä koko lomake teaserissa" + +#: webform.module:630 +msgid "Display the entire form in the teaser display of this node." +msgstr "Näytä koko lomake tämän solmun teaser-näytössä." + +#: webform.module:634 +msgid "Limit the number of submissions a user may send within a specified time period" +msgstr "Rajoitus, kuinka monta kertaa käyttäjä voi lähettää lomakkeen määritellyn aikajakson sisällä" + +#: webform.module:639 +msgid "Unlimited" +msgstr "Rajoittamaton" + +#: webform.module:653 +msgid "ever" +msgstr "ei koskaan" + +#: webform.module:654 +msgid "every hour" +msgstr "tunnissa" + +#: webform.module:655 +msgid "every day" +msgstr "päivässä" + +#: webform.module:656 +msgid "every week" +msgstr "viikossa" + +#: webform.module:663 +msgid "Submit button text" +msgstr "Lähetyspainikkeen teksti" + +#: webform.module:665 +msgid "By default the submit button on this form will have the label <em>Submit</em>. Enter a new title here to override the default." +msgstr "Oletusarvoisesti tämän lomakkeen lähetyspainikkeen otsikkona on <em>Lähetä</em>. Anna uusi otsikko muuttaaksesi oletusarvon." + +#: webform.module:670 +msgid "Additional Validation" +msgstr "Lisätarkistus" + +#: webform.module:671 +msgid "Enter PHP code to perform additional validation for this form. Include the <?php ?> tags. $form_id and $form_values are available variables. If validation fails, use the form_set_error function to prevent the form from being submitted. Use the same syntax as a _validate function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Lisää PHP-koodi tämän lomakkeen lisätarkistuksen suorittamiseksi. Sisällytä <?php ?> -tagit. $form_id ja $form_values ovat käytettävissä olevia muuttujia. Jos tarkistus epäonnistuu, käytä form_set_error-funktiota lomakkeen lähettämisen estämiseen. Käytä samaa syntaksia kuin _validate-funktiossa, jota käytetään <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>:ssa." + +#: webform.module:679 +msgid "Additional Processing" +msgstr "Lisäprosessointi" + +#: webform.module:680 +msgid "Enter PHP code to perform additional processing for this form (after the validation). Include the <?php ?> tags. $form_id and $form_values are available variables, use the same syntax as a _submit function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Lisää PHP-koodi tämän lomakkeen lisäprosessoinnin suorittamiseksi (joka tehdään tarkistuksen jälkeen). Sisällytä <?php ?> -tagit. $form_id ja $form_values ovat käytettävissä olevia muuttujia. Käytä samaa syntaksia kuin _submit-funktiossa, jota käytetään <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>:ssa." + +#: webform.module:709 +msgid "To" +msgstr "Vastaanottaja" + +#: webform.module:724 +msgid "No components yet in this webform." +msgstr "Tällä verkkolomakkeella ei ole vielä yhtään komponenttia." + +#: webform.module:739 +msgid "Custom" +msgstr "Muokattu" + +#: webform.module:739 +msgid "Component" +msgstr "Komponentti" + +#: webform.module:750 +msgid "Default" +msgstr "Oletusarvo" + +#: webform.module:771 +msgid "Limit to !count submission(s) !timespan" +msgstr "Rajoita lähetysten määrä !count kertaan !timespan aikana" + +#: webform.module:784;791 +msgid "The entered email address %address is not a valid address." +msgstr "Annettu sähköpostiosoite %address ei ole kelvollinen osoite." + +#: webform.module:866 +msgid "The new webform %title has been created. Add new fields to your webform with the form below." +msgstr "Uusi verkkolomake %title on luotu. Lisää uusia kenttiä verkkolomakkeeseesi alempana." + +#: webform.module:869 +msgid "This webform is currently unpublished. After finishing your changes to the webform, use the <em>Publish</em> button below." +msgstr "Tämä verkkolomake on tällä hetkellä julkaisematon. Kun olet viimeistellyt muutoksesi lomakkeeseen, saat julkaistua lomakkeesi <em>Julkaise</em>-painikkeella." + +#: webform.module:892 +#: components/markup.inc:58 +msgid "Preview" +msgstr "Esikatselu" + +#: webform.module:998 +msgid "Submissions for this form are closed." +msgstr "Tämän lomakkeen lähetystoiminto on asetettu pois päältä." + +#: webform.module:1002 +msgid "You must <a href=\"!login\">login</a> or <a href=\"!register\">register</a> to view this form." +msgstr "Sinun täytyy <a href=\"!login\">kirjautua sisään</a> tai <a href=\"!register\">rekisteröityä</a> voidaksesi tarkastella tätä lomaketta." + +#: webform.module:1006 +msgid "You do not have permission to view this form." +msgstr "Sinulla ei ole oikeuksia tarkastella tätä lomaketta." + +#: webform.module:1013 +msgid "You have submitted this form the maximum number of times (@count)." +msgstr "Olet lähettänyt tätä lomaketta enimmäismäärän (@count)." + +#: webform.module:1016;1027 +msgid "You have already submitted this form." +msgstr "Olet jo lähettänyt tämän lomakkeen." + +#: webform.module:1019 +msgid "You may not submit another entry at this time." +msgstr "Et voi tällä hetkellä lähettää toista kertaa." + +#: webform.module:1027;1030 +msgid "<a href=\"!url\">View your previous submissions</a>." +msgstr "<a href=\"!url\">Tarkastele aikaisempia lähetyksiäsi</a>." + +#: webform.module:1047 +msgid "Available components" +msgstr "Käytettävissä olevat komponentit" + +#: webform.module:1050 +msgid "These are the available field types for your installation of Webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms." +msgstr "Nämä ovat Webform-moduulin asennuksesi käytettävissä olevat kenttätyypit. Voit poistaa käytöstä minkä tahansa näistä komponenteista poistamalla valinnan niiden kohdalla. Vain valitut komponentit ovat käytettävissä olemassa olevissa tai uusissa verkkolomakkeissa." + +#: webform.module:1067 +msgid "Default e-mail values" +msgstr "Oletuksena olevat sähköpostiasetukset" + +#: webform.module:1074 +msgid "From address" +msgstr "Lähettäjän osoite" + +#: webform.module:1076 +msgid "The default sender address for emailed webform results; often the e-mail address of the maintainer of your forms." +msgstr "Oletusarvoinen lähettäjän osoite sähköpostitetuissa verkkolomaketuloksissa. Useimmiten kyse on lomakkeidesi ylläpitäjän sähköpostiosoitteesta." + +#: webform.module:1081 +msgid "From name" +msgstr "Lähettäjän nimi" + +#: webform.module:1083 +msgid "The default sender name which is used along with the default from address." +msgstr "Oletusarvoinen lähettäjän nimi, jota käytetään oletusarvoisen lähettävän osoitteen yhteydessä." + +#: webform.module:1088 +msgid "Default subject" +msgstr "Aihe" + +#: webform.module:1089;2064 +msgid "Form submission from: %title" +msgstr "Lomakelähetys otsikolla: %title" + +#: webform.module:1090 +msgid "The default subject line of any e-mailed results." +msgstr "Minkä tahansa sähköpostitetun tuloksen oletusarvoinen otsikko." + +#: webform.module:1095 +msgid "Advanced options" +msgstr "Lisävalinnat" + +#: webform.module:1103 +msgid "Allow cookies for tracking submissions" +msgstr "Salli evästeet lähetysten seuraamiseen" + +#: webform.module:1105 +msgid "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, Webform also uses IP addresses and site usernames to prevent repeated submissions." +msgstr "<a href=\"http://fi.wikipedia.org/wiki/Eväste\">Evästeitä</a> voit käyttää apuna estämään samaa käyttäjää lähettämästä toistuvasti verkkolomaketta. Tämä ominaisuus ei ole tarpeen lähetysmäärän rajoittamisessa käyttäjäkohtaisesti, vaikka evästetoiminto voikin lisätä tietyissä tilanteissa rajoittamisen tarkkuutta. Evästeiden lisäksi Webform-moduuli käyttää myös IP-osoitteita ja sivuston käyttäjänimiä toistuvien lähetysten estämisessä." + +#: webform.module:1110 +msgid "Default export format" +msgstr "Oletusarvoinen vientimuoto" + +#: webform.module:1117 +msgid "Default export delimiter" +msgstr "Oletusarvoinen erotin viennissä" + +#: webform.module:1133 +msgid "Webforms debug" +msgstr "Verkkolomakkeiden virheiden jäljitys" + +#: webform.module:1135 +msgid "Off" +msgstr "Pois päältä" + +#: webform.module:1135 +msgid "Log submissions" +msgstr "Lähetysten loki" + +#: webform.module:1135 +msgid "Full debug" +msgstr "Täydellinen virheenjäljittäminen" + +#: webform.module:1136 +msgid "Set to \"Log submissions\" to log all submissions in the watchdog. Set to \"Full debug\" to print debug info on submission." +msgstr "Ota käyttöön \"Lähetysten loki\", jotta watchdogissa kirjoitetaan lokiin jokainen lähetys. Ota käyttöön \"Täydellinen virheenjäljittäminen\", jotta lähetyksestä tulostetaan virheenjäljitystiedot." + +#: webform.module:1152 +msgid "Enabled" +msgstr "Sallittu" + +#: webform.module:1186 +msgid "Submission #@sid" +msgstr "Lähetys #@sid" + +#: webform.module:1206;1206 +msgid "Previous submission" +msgstr "Edellinen lähetys" + +#: webform.module:1209;1209 +msgid "Next submission" +msgstr "Seuraava lähetys" + +#: webform.module:1213 +msgid "Submission Information" +msgstr "Lähetysinformaatio" + +#: webform.module:1222 +msgid "Form: !form" +msgstr "Lomake: !form" + +#: webform.module:1225 +msgid "Submitted by !name" +msgstr "Lähettäjä !name" + +#: webform.module:1265 +msgid "Next Page >" +msgstr "Seuraava sivu >" + +#: webform.module:1266 +msgid "< Previous Page" +msgstr "< Edellinen sivu" + +#: webform.module:1384 +msgid "The webform component @type is not able to be displayed" +msgstr "Verkkolomakkeen komponenttia @type ei voida näyttää" + +#: webform.module:1580 +msgid "Possible spam attempt from @remote_addr" +msgstr "Mahdollinen roskapostitusyritys osoitteesta @remote_addr" + +#: webform.module:1581 +msgid "Illegal information. Data not submitted." +msgstr "Laiton informaatio. Dataa ei lähetetty." + +#: webform.module:1619 +msgid "Submission posted to %title" +msgstr "Lähetys postitettu %title" + +#: webform.module:1624 +msgid "Submission updated." +msgstr "Lähetys päivitetty." + +#: webform.module:1708 +msgid "Thank you, your submission has been received." +msgstr "Kiitos. Olemme vastaanottaneet lähettämäsi lomakkeen." + +#: webform.module:1744 +msgid "Submitted on" +msgstr "Lähetetty" + +#: webform.module:1748 +msgid "Submitted by user" +msgstr "Käyttäjän lähettämä" + +#: webform.module:1751 +msgid "Submitted by anonymous user" +msgstr "Anonyymin käyttäjän lähettämä" + +#: webform.module:1755 +msgid "Submitted values are:" +msgstr "Lähetetyt arvot ovat:" + +#: webform.module:1759 +msgid "The results of this submission may be viewed at:" +msgstr "Tämän lähetyksen tuloksia voi tarkastella täällä:" + +#: webform.module:2076;2077;2078;2079;2080;2083 +msgid "key" +msgstr "avain" + +#: webform.module:2087 +msgid "You may use special tokens in this field that will be replaced with dynamic values." +msgstr "Voit käyttää tässä kentässä tiettyjä merkkejä, jotka korvautuvat dynaamisilla arvoilla." + +#: webform.module:2089 +msgid "You can use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables, %session[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> variables and %get[key] to create prefilled forms from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. %cookie, %request and %post also work with their respective PHP variables. For example %server[HTTP_USER_AGENT], %session[id], or %get[q]." +msgstr "" + +#: webform.module:2091 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "" + +#: webform.module:2095 +msgid "Token values" +msgstr "Merkkiarvot" + +#: webform.module:247 +msgid "create webforms" +msgstr "verkkolomakkeiden luominen" + +#: webform.module:247 +msgid "edit own webforms" +msgstr "omien verkkolomakkeiden muokkaaminen" + +#: webform.module:247 +msgid "edit webforms" +msgstr "verkkolomakkeiden muokkaaminen" + +#: webform.module:247 +msgid "access webform results" +msgstr "pääsy verkkolomaketuloksiin" + +#: webform.module:247 +msgid "clear webform results" +msgstr "verkkolomaketulosten tyhjentäminen" + +#: webform.module:247 +msgid "access own webform submissions" +msgstr "pääsy omiin verkkolomakelähetyksiin" + +#: webform.module:247 +msgid "edit own webform submissions" +msgstr "omien verkkolomakelähetysten muokkaaminen" + +#: webform.module:247 +msgid "edit webform submissions" +msgstr "verkkolomakelähetysten muokkaaminen" + +#: webform.module:247 +msgid "use PHP for additional processing" +msgstr "PHP:n käyttäminen lisäprosessointiin" + +#: webform.install:146 +msgid "Webform module installed module tables successfully." +msgstr "Webform-moduuli asensi moduulitaulut onnistuneesti." + +#: webform.install:149 +msgid "The installation of webform module was unsuccessful." +msgstr "Webform-moduulin asennus epäonnistui." + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "Sallii lomakkeiden ja kyselyjen luomisen." + +#: components/date.inc:37 +#: components/email.inc:38 +#: components/hidden.inc:33 +#: components/select.inc:49 +#: components/textarea.inc:39 +#: components/textfield.inc:41 +#: components/time.inc:36 +msgid "Default value" +msgstr "Oletusarvo" + +#: components/date.inc:39 +#: components/email.inc:40 +#: components/hidden.inc:35 +#: components/textarea.inc:41 +#: components/textfield.inc:43 +#: components/time.inc:38 +msgid "The default value of the field." +msgstr "Kentän oletusarvo." + +#: components/date.inc:39 +msgid "Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/html_node/tar_109.html\">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid." +msgstr "Mikä tahansa päivämäärä missä tahansa <a href=\"http://www.gnu.org/software/tar/manual/html_node/tar_109.html\">GNU Date Input Format</a> -muodossa on hyväksyttyä. Kelvollisia ovat merkkijonot kuten tänään, +2 kuukautta ja Dec 9 2004." + +#: components/date.inc:46 +#: components/time.inc:46 +msgid "Timezone" +msgstr "Aikavyöhyke" + +#: components/date.inc:48 +msgid "Adjust the date according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "Säädä päivämäärää tietyn aikavyöhykkeen mukaan. Sivuston aikavyöhyke on määritelty <a href=\"!settings\">Sivuston asetukset</a> -sivulla, ja tuo aikavyöhyke on oletusarvona." + +#: components/date.inc:49 +msgid "Website timezone" +msgstr "Sivuston aikavyöhyke" + +#: components/date.inc:49 +msgid "User timezone" +msgstr "Käyttäjän aikavyöhyke" + +#: components/date.inc:49 +msgid "GMT" +msgstr "Greenwichin aika (GMT)" + +#: components/date.inc:54 +#: components/time.inc:54 +msgid "Observe Daylight Savings" +msgstr "Huomioi kesäaika" + +#: components/date.inc:57 +#: components/time.inc:57 +msgid "Automatically adjust the time during daylight savings." +msgstr "Ajan säätäminen automaattisesti kesäajan mukaan." + +#: components/date.inc:63 +msgid "Start year" +msgstr "Aloittava vuosi" + +#: components/date.inc:65 +msgid "The first year that is allowed to be entered." +msgstr "Ensimmäinen vuosi, joka on sallittua antaa." + +#: components/date.inc:72 +msgid "End year" +msgstr "Lopettava vuosi" + +#: components/date.inc:74 +msgid "The last year that is allowed to be entered." +msgstr "Viimeinen vuosi, joka on sallittua antaa." + +#: components/date.inc:81 +msgid "Use a textfield for year" +msgstr "Käytä tekstikenttää vuosimerkinnälle" + +#: components/date.inc:83 +msgid "If checked, the generated date field will use a textfield for the year. Otherwise it will use a select list." +msgstr "Jos tämä on valittuna, luotava päivämääräkenttä käyttää tekstikenttää vuosimerkinnälle. Muuten käytössä on valintalista." + +#: components/date.inc:188 +msgid "Year" +msgstr "Vuosi" + +#: components/date.inc:205 +msgid "!name field is required." +msgstr "!name-kenttä on pakollinen." + +#: components/date.inc:212 +msgid "Entered !name is not a valid date." +msgstr "Annettu !name ei ole kelvollinen päivämäärä." + +#: components/date.inc:219 +msgid "The entered date needs to be between the years @start and @end." +msgstr "Annetun päivämäärän täytyy sijoittua vuosien @start ja @end välille." + +#: components/date.inc:292 +msgid "Presents month, day, and year fields." +msgstr "Esittää kuukausi-, päivä- ja vuosikentän." + +#: components/date.inc:349 +#: components/email.inc:196 +#: components/file.inc:476 +#: components/textarea.inc:158 +#: components/textfield.inc:203 +#: components/time.inc:297 +msgid "Left Blank" +msgstr "Jätetty vastaamatta" + +#: components/date.inc:350 +#: components/email.inc:197 +#: components/textarea.inc:159 +#: components/textfield.inc:204 +#: components/time.inc:298 +msgid "User entered value" +msgstr "Käyttäjän antama arvo" + +#: components/email.inc:49 +msgid "User email as default" +msgstr "Oletusarvona on käyttäjän sähköposti" + +#: components/email.inc:51 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "Jos tämä on valittuna, oletusarvona tässä kentässä on sisäänkirjautuneen käyttäjän sähköpostiosoite." + +#: components/email.inc:58 +#: components/file.inc:122 +#: components/textarea.inc:48 +#: components/textfield.inc:50 +msgid "Width" +msgstr "Leveys" + +#: components/email.inc:60 +#: components/textarea.inc:50 +#: components/textfield.inc:52 +msgid "Width of the textfield." +msgstr "Tekstikentän leveys" + +#: components/email.inc:60 +#: components/file.inc:124 +#: components/textarea.inc:50;58 +#: components/textfield.inc:52 +msgid "Leaving blank will use the default size." +msgstr "Jos kenttä on tyhjä, käytetään oletusarvoista kokoa." + +#: components/email.inc:66 +#: components/hidden.inc:46 +#: components/select.inc:72 +msgid "E-mail a submission copy" +msgstr "Sähköpostita kopio lähetyksestä" + +#: components/email.inc:69 +#: components/hidden.inc:49 +#: components/select.inc:75 +msgid "Check this option if this component contains an e-mail address that should get a copy of the submission. Emails are sent individually so other emails will not be shown to the recipient." +msgstr "Valitse tämä, jos komponentti sisältää sähköpostiosoitteen, johon pitää lähettää kopio lähetetystä lomakkeesta. Sähköpostit lähetetään yksilöllisesti, joten muut sähköpostit eivät näy vastaanottajalle." + +#: components/email.inc:73 +#: components/textarea.inc:64 +#: components/textfield.inc:86 +msgid "Disabled" +msgstr "Pois päältä" + +#: components/email.inc:75 +#: components/textarea.inc:66 +#: components/textfield.inc:88 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "Määrittele tämä kenttä ei-muokattavaksi. Toiminto on käytännöllinen kiinteiden oletusarvojen asettamisessa." + +#: components/email.inc:134 +msgid "%value is not a valid email address." +msgstr "%value ei ole kelvollinen sähköpostiosoite." + +#: components/email.inc:163 +msgid "A textfield that automatically fills in a logged-in user's e-mail." +msgstr "Tekstikenttä, johon automaattisesti täytetään sisäänkirjautuneen käyttäjän sähköpostiosoite." + +#: components/email.inc:198 +#: components/hidden.inc:139 +#: components/textarea.inc:160 +#: components/textfield.inc:205 +msgid "Average submission length in words (ex blanks)" +msgstr "" + +#: components/fieldset.inc:34 +msgid "Collapsible" +msgstr "Supistettavissa" + +#: components/fieldset.inc:36 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "Jos tämä kenttäjoukko on suåistettavissa, käyttäjä voi avata tai sulkea kenttäjoukon." + +#: components/fieldset.inc:41 +msgid "Collapsed by Default" +msgstr "Supistettuna oletusarvoisesti" + +#: components/fieldset.inc:43 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "Supistettavat kenttäjoukot ovat oletusarvoisesti \"avoinna\". Valitse tämä, jos haluat kenttäjoukon olevan oletusarvoisesti \"suljettuna.\"" + +#: components/fieldset.inc:95 +msgid "Fieldsets allow you to organize multiple fields into groups." +msgstr "Kenttäjoukot sallivat, että voit järjestää useita kenttiä ryhmiksi." + +#: components/file.inc:44 +msgid "Upload Filtering" +msgstr "Lataa suodatus" + +#: components/file.inc:45 +msgid "Select the types of uploads you would like to allow." +msgstr "Valitse lataustyypit, jotka haluat sallia." + +#: components/file.inc:55 +msgid "Web Images" +msgstr "Web-kuvat" + +#: components/file.inc:63 +msgid "Desktop Images" +msgstr "Työpöytäkuvat" + +#: components/file.inc:71 +msgid "Documents" +msgstr "Dokumentit" + +#: components/file.inc:79 +msgid "Media" +msgstr "" + +#: components/file.inc:87 +msgid "Archives" +msgstr "Arkistot" + +#: components/file.inc:94 +msgid "Additional Extensions" +msgstr "Muut tiedostopäätteet" + +#: components/file.inc:96 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "Syötä lista muista tiedostopäätteistä tälle latauskentälle. Erottele pilkuin.<br />Syötetyt tiedostopäätteet lisätään valittuihin kohtiin ylempänä." + +#: components/file.inc:104 +msgid "Max Upload Size" +msgstr "Latauksen enimmäiskoko" + +#: components/file.inc:106 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "Syötä kilotavuissa tiedoston enimmäiskoko, jonka käyttäjä voi ladata." + +#: components/file.inc:113 +msgid "Upload Directory" +msgstr "Latauskansio" + +#: components/file.inc:115 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "Verkkolomakkeen lataukset tallennetaan aina sivuston files-kansioon. Voit halutessasi määritellä alakansion, johon tiedostosi tallennetaan." + +#: components/file.inc:124 +msgid "Width of the file field." +msgstr "Tiedostokentän leveys." + +#: components/file.inc:139 +msgid "The save directory %directory could not be created. Check that the webform files directory is writtable." +msgstr "Tallennuskansiota %directory ei voi luoda. Tarkista, että verkkolomakkeen files-kansioon on kirjoitusoikeus." + +#: components/file.inc:242 +msgid "Category" +msgstr "Kategoria" + +#: components/file.inc:242 +msgid "Types" +msgstr "Tyypit" + +#: components/file.inc:291 +#: components/time.inc:166 +msgid "%field field is required." +msgstr "%field-kenttä on pakollinen." + +#: components/file.inc:324 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "'%ext'-päätteiset tiedostot eivät ole sallittuja. Lataa tiedosto %exts-muotoisena." + +#: components/file.inc:329 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "Tiedosto '%filename' on liian iso (%filesize kt). Lataa tiedosto enimmäiskooltaan %maxsize kilotavuisena tai pienempänä." + +#: components/file.inc:357 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "Ladattua tiedostoa %filename ei voitu tallentaa. Kohdekansioon ei ollut kirjoitusoikeutta." + +#: components/file.inc:365 +msgid "The uploaded file was unable to be saved. The destination directory does not exist." +msgstr "Ladattua tiedostoa ei voitu tallentaa. Kohdekansiota ei ole." + +#: components/file.inc:411 +msgid "Uploading a new file will replace the current file." +msgstr "Uusi ladattava tiedosto korvaa olemassa olevan tiedoston." + +#: components/file.inc:442 +msgid "Allow users to submit files of the configured types." +msgstr "Sallii käyttäjien lähettää määritellyntyyppisiä tiedostoja." + +#: components/file.inc:477 +msgid "User uploaded file" +msgstr "Käyttäjän lataama tiedosto" + +#: components/file.inc:478 +msgid "Average uploaded file size" +msgstr "Keskimääräinen ladattujen tiedostojen koko" + +#: components/file.inc:522 +msgid "Filesize (KB)" +msgstr "Tiedostokoko (kt)" + +#: components/grid.inc:37 +#: components/select.inc:39 +msgid "Options" +msgstr "Valinnat" + +#: components/grid.inc:39 +msgid "Options to select across the top. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "" + +#: components/grid.inc:47 +msgid "Questions" +msgstr "Kysymykset" + +#: components/grid.inc:49 +msgid "Questions list down the left side. One question per line." +msgstr "Kysymykset listataan vasempaan laitaan. Yksi kysymys per rivi." + +#: components/grid.inc:57 +msgid "Randomize Options" +msgstr "Satunnaistetut vaihtoehdot" + +#: components/grid.inc:59 +msgid "Randomizes the order of options on the top when they are displayed in the form." +msgstr "Satunnaistaa valintavaihtoehtojen järjestyksen, kun ne esitetään lomakkeessa." + +#: components/grid.inc:63 +msgid "Randomize Questions" +msgstr "Satunnaista kysymykset" + +#: components/grid.inc:65 +msgid "Randomize the order of the questions on the side when they are displayed in the form." +msgstr "Satunnaistaa kysymysten järjestyksen, kun ne esitetään lomakkeessa." + +#: components/grid.inc:208 +msgid "Allows creation of grid questions, denoted by radio buttons." +msgstr "" + +#: components/hidden.inc:92 +msgid "@name (hidden)" +msgstr "@name (piilotettu)" + +#: components/hidden.inc:104 +msgid "A field which is not visible to the user, but is recorded with the submission." +msgstr "Kenttä, joka ei ole näkyvissä käyttäjälle, mutta on tallennettavissa lähetyksen yhteydessä." + +#: components/hidden.inc:137 +msgid "Empty" +msgstr "Tyhjä" + +#: components/hidden.inc:138 +msgid "Non-empty" +msgstr "Ei tyhjä" + +#: components/markup.inc:36 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "Merkintä (markup) sallii sinun lisätä muokattua HTML- tai PHP-logiikkaa lomakkeeseesi." + +#: components/markup.inc:98 +msgid "Displays text as HTML in the form; does not render a field." +msgstr "Näyttää lomakkeessa tekstin HTML-muotoisena. Tämä ei hahmonna (render) kenttää." + +#: components/pagebreak.inc:27 +msgid "Use caution when combining the pagebreak and file components. File components will not be submitted unless they are after the last pagebreak in the form." +msgstr "Käytä harkiten yhdistäessäsi sivunvaihto- ja tiedostokomponentin. Tiedostokomponentteja ei lähetetä elleivät ne ole lomakkeessa sijoitettuna viimeisen sivunvaihdon jälkeen." + +#: components/pagebreak.inc:54 +msgid "Break up a multi-page form." +msgstr "Purkaa osiin monisivuinen lomake." + +#: components/select.inc:41 +msgid "A list of selectable options. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "Lista valittavissa olevista vaihtoehdoista. Yksi valinta per rivi. Avain-arvo-parit voidaan syöttää eroteltuna |-merkillä, esimerkiksi safe_key|Jokin luettava valinta" + +#: components/select.inc:51 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "Kentän oletusarvoinen arvo. Monivalintaa varten käytä pilkkuja erotellaksesi oletusarvot, joissa on monta kohtaa." + +#: components/select.inc:58 +msgid "Multiple" +msgstr "Monivalinta" + +#: components/select.inc:61 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "Valitse tämä, jos käyttäjän on sallittua valita useita arvoja." + +#: components/select.inc:65 +msgid "Listbox" +msgstr "" + +#: components/select.inc:68 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "Valitse tämä, jos haluat esittää valittavat komponentit listbox-tyyppisesti radiobutton- tai checkbox-esitystavan sijaan." + +#: components/select.inc:76 +msgid "To use the option with a select component, you must use key-value pairs seperated by pipes. i.e. user@example.com|Sample user." +msgstr "Käyttääksesi valintaa komponentille, sinun on annettava avain-arvo-pari eroteltuna |-merkillä, esimerkiksi user@example.com|Esimerkkikäyttäjä." + +#: components/select.inc:271 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "Sallii erilaisten valintalistojen luomisen." + +#: components/textarea.inc:56 +msgid "Height" +msgstr "Korkeus" + +#: components/textarea.inc:58 +msgid "Height of the textfield." +msgstr "Tekstikentän korkeus." + +#: components/textarea.inc:125 +msgid "A large text area that allows for multiple lines of input." +msgstr "Isot tekstialueet, jotka sallivat tekstin syöttämisen monirivisesti." + +#: components/textfield.inc:59 +msgid "Maxlength" +msgstr "Enimmäispituus" + +#: components/textfield.inc:61 +msgid "Maxlength of the textfield." +msgstr "Tekstikentän enimmäispituus." + +#: components/textfield.inc:68 +msgid "Label placed to the left of the textfield" +msgstr "Sijoita otsikko tekstikentän vasemmalle puolelle" + +#: components/textfield.inc:70 +msgid "Examples: $, #, -." +msgstr "Esimerkit $, #, -." + +#: components/textfield.inc:77 +msgid "Label placed to the right of the textfield" +msgstr "Sijoita otsikko tekstikentän oikealle puolelle" + +#: components/textfield.inc:79 +msgid "Examples: lb, kg, %." +msgstr "Esimerkit lb, kg, %." + +#: components/textfield.inc:170 +msgid "Basic textfield type." +msgstr "Perustyyppinen tekstikenttä." + +#: components/time.inc:38 +msgid "Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/html_node/tar_109.html\">GNU Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are all valid." +msgstr "Voit syöttää ajan missä tahansa <a href=\"http://www.gnu.org/software/tar/manual/html_node/tar_109.html\">GNU Date Input Format</a> -syöttömuodossa. Merkkijonot, kuten nyt, +2 tuntia ja 10:30pm, ovat kelvollisia." + +#: components/time.inc:48 +msgid "Adjust the time according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "Säädä aikaa aikavyöhykkeen mukaan. Sivuston aikavyöhyke on määritelty <a href=\"!settings\">Sivuston asetukset</a> -sivulla, ja tuo aikavyöhyke on oletusarvona." + +#: components/time.inc:62 +msgid "Time Format" +msgstr "Aikamuoto" + +#: components/time.inc:64 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Ajan esitysmuoto, 12- tai 24-tuntinen esitysmuoto." + +#: components/time.inc:118 +msgid "hour" +msgstr "tunti" + +#: components/time.inc:119 +msgid "minute" +msgstr "minuutti" + +#: components/time.inc:122 +msgid "am" +msgstr "" + +#: components/time.inc:122 +msgid "pm" +msgstr "" + +#: components/time.inc:174 +msgid "Entered %name is not a valid time." +msgstr "Syötetty %name ei ole kelvollinen aika." + +#: components/time.inc:243 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "" + diff --git a/sites/all/modules/webform/translations/fr.po b/sites/all/modules/webform/translations/fr.po new file mode 100644 index 0000000000000000000000000000000000000000..039e27c96f02d846954fd73678f68720d6d424f9 --- /dev/null +++ b/sites/all/modules/webform/translations/fr.po @@ -0,0 +1,1385 @@ +# $Id: fr.po,v 1.4 2011/01/05 04:39:01 quicksketch Exp $ +# +# LANGUAGE translation of Drupal (general) +# Copyright YEAR NAME <EMAIL@ADDRESS> +# Generated from files: +# webform.inc,v 1.48.2.20 2008/01/26 00:54:06 quicksketch +# webform.module,v 1.113.2.70 2008/01/26 01:07:18 quicksketch +# webform_report.inc,v 1.15.2.11 2008/01/26 00:54:06 quicksketch +# webform.install,v 1.14.2.16 2008/01/23 04:50:40 quicksketch +# markup.inc,v 1.3.2.4 2008/01/18 06:34:35 quicksketch +# date.inc,v 1.13.2.15 2008/01/25 05:56:08 quicksketch +# hidden.inc,v 1.11.2.3 2008/01/18 06:34:35 quicksketch +# select.inc,v 1.18.2.19 2008/01/25 07:21:52 quicksketch +# textarea.inc,v 1.11.2.4 2008/01/18 06:34:35 quicksketch +# textfield.inc,v 1.11.2.7 2008/01/22 03:07:58 quicksketch +# time.inc,v 1.14.2.6 2008/01/23 17:34:33 quicksketch +# file.inc,v 1.2.2.19 2008/01/23 19:24:27 quicksketch +# email.inc,v 1.16.2.7 2008/01/23 04:50:40 quicksketch +# fieldset.inc,v 1.3.4.4 2008/01/18 06:34:35 quicksketch +# grid.inc,v 1.1.2.3 2008/01/23 04:45:29 quicksketch +# pagebreak.inc,v 1.1.2.3 2008/01/18 18:05:33 quicksketch +# +msgid "" +msgstr "" +"Project-Id-Version: Drupal 6\n" +"POT-Creation-Date: 2008-10-07 10:22+0200\n" +"PO-Revision-Date: 2008-10-07 15:30+0100\n" +"Last-Translator: Josiane PIERRE <josiane.pierre@wanadoo.fr>\n" +"Language-Team: non <prunelle@drupalfr.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Poedit-Language: French\n" +"X-Poedit-Country: France\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: webform_components.inc:39;127;352 +msgid "Weight" +msgstr "Poids" + +#: webform_components.inc:44;127;317 +msgid "Mandatory" +msgstr "Obligatoire" + +#: webform_components.inc:50;127 +msgid "E-mail" +msgstr "E-mail" + +#: webform_components.inc:92 +msgid "Add" +msgstr "Ajouter" + +#: webform_components.inc:98;385 +#: webform.module:1281;1300;1317;1420 +msgid "Submit" +msgstr "Soumettre" + +#: webform_components.inc:104;241 +msgid "Publish" +msgstr "Publier" + +#: webform_components.inc:127 +#: webform.module:710;1152 +#: components/file.inc:523 +msgid "Name" +msgstr "Nom" + +#: webform_components.inc:127 +#: webform.module:711 +msgid "Type" +msgstr "Type" + +#: webform_components.inc:127 +#: components/markup.inc:34 +msgid "Value" +msgstr "Valeur" + +#: webform_components.inc:127 +#: webform_report.inc:44 +#: webform.module:1957 +msgid "Operations" +msgstr "Opérations" + +#: webform_components.inc:132 +msgid "New component name" +msgstr "Nom du nouveau composant" + +#: webform_components.inc:188 +#: webform_report.inc:75 +#: webform.module:220;1968 +msgid "Edit" +msgstr "Éditer" + +#: webform_components.inc:189 +msgid "Clone" +msgstr "Cloner" + +#: webform_components.inc:190;475 +#: webform_report.inc:76 +#: webform_submissions.inc:117 +#: webform.module:229 +msgid "Delete" +msgstr "Supprimer" + +#: webform_components.inc:212 +msgid "No Components, add a component below." +msgstr "Aucun composant, ajouter un composant ci-dessous." + +#: webform_components.inc:244 +msgid "Your webform has been published." +msgstr "Votre formulaire a été publié." + +#: webform_components.inc:254 +msgid "The component positions and mandatory values have been updated." +msgstr "Les positions des composants et leur caractère 'obligatoire' ont été mis à jour." + +#: webform_components.inc:259 +msgid "Edit component: @name (@type)" +msgstr "Modification du composant: @name (@type)" + +#: webform_components.inc:285 +msgid "Label" +msgstr "Label" + +#: webform_components.inc:286 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "Sera utilisé comme étiquette descriptive lors de l'affichage de cet élément." + +#: webform_components.inc:294 +#: webform.module:486;1152 +msgid "Description" +msgstr "Description" + +#: webform_components.inc:295 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "Une courte description du champ présentée à l'utilisateur pour l'aider à remplir le formulaire." + +#: webform_components.inc:301 +msgid "Advanced settings" +msgstr "Paramétrages avancés" + +#: webform_components.inc:310 +msgid "Field Key" +msgstr "Clé du champ" + +#: webform_components.inc:311 +msgid "Enter a machine readable key for this form element. May contain only lowercase alphanumeric characters and underscores. This key will be used as the name attribute of the form element. This value has no effect on the way data is saved, but may be helpful if using Additional Processing or Validation code." +msgstr "Entrez une clé, lisible par une machine, pour cet élément. Ne peut contenir que des caractères alphanumériques en minuscule et le caractère de soulignement. Cette clé sera utilisée comme l'attribut 'nom' de cet élément. Cette valeur n'a aucun effet sur la façon dont la donnée sera sauvegardée, mais paut être utile si on utilise du code pour un traitement ou une validation supplémentaire." + +#: webform_components.inc:319 +msgid "Check this option if the user must enter a value." +msgstr "Cochez cette option si l'utilisateur doit entrer une valeur." + +#: webform_components.inc:325 +msgid "Include in e-mails" +msgstr "Inclus dans les e-mails" + +#: webform_components.inc:327 +msgid "If checked, submitted values from this component will be included in e-mails." +msgstr "En les cochant, les valeurs soumises au travers de ce composant seront incluses dans les e-mails." + +#: webform_components.inc:333 +msgid "Root" +msgstr "Racine" + +#: webform_components.inc:341 +msgid "Parent Fieldset" +msgstr "Champ 'fieldset' parent" + +#: webform_components.inc:343 +msgid "Optional. You may organize your form by placing this component inside another fieldset." +msgstr "Optionnel. Vous pouvez organiser votre formulaire en plaçant ce composant au sein d'un autre ensemble de champs ('fieldset')." + +#: webform_components.inc:354 +msgid "Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top." +msgstr "Optionnel. Dans le menu, l'élément le plus lourd sera tout en bas et le plus léger sera positionné tout en haut." + +#: webform_components.inc:366 +msgid "The webform component of type @type does not have an edit function defined." +msgstr "Le composant du formulaire de type @type n'a pas de fonction d'édition définie." + +#: webform_components.inc:399 +msgid "The field key %field_key is invalid. Please include only lowercase alphanumeric characters and underscores." +msgstr "La clé du champ %field_key est invalide. Veuillez entrer uniquement des caractères alphanumériques en minuscule et le caractère souligné." + +#: webform_components.inc:404 +msgid "The field key %field_key is already in use by the field labeled %existing_field. Please use a unique key." +msgstr "La clé du champ %field_key est déjà utilisée par le champ qui a pour label %existing_field. Veuillez utiliser une clé unique." + +#: webform_components.inc:438 +msgid "Component %name cloned." +msgstr "Le composant %name a été cloné." + +#: webform_components.inc:442 +msgid "Component %name updated." +msgstr "Le composant %name a été mis à jour." + +#: webform_components.inc:446 +msgid "New component %name added." +msgstr "Le composant %name a été ajouté." + +#: webform_components.inc:467 +msgid "Delete the %name fieldset?" +msgstr "Supprimer le 'fieldset' %name ?" + +#: webform_components.inc:468 +msgid "This will immediately delete the %name fieldset and all children elements within %name from the %webform webform. This cannot be undone." +msgstr "Cela supprimera immédiatement le 'fieldset' %name et tous ses fils inclus dans %name au sein du formulaire %webform . L'action ne peut pas être annulée." + +#: webform_components.inc:471 +msgid "Delete the %name component?" +msgstr "Supprimer le composant %name ?" + +#: webform_components.inc:472 +msgid "This will immediately delete the %name component from the %webform webform. This cannot be undone." +msgstr "Cela supprimera immédiatement le composant %name du formulaire %webform. L'action ne peut pas être annulée." + +#: webform_components.inc:479 +msgid "Component %name deleted." +msgstr "Le composant %name a été supprimé." + +#: webform_export.inc:21 +msgid "Delimited text" +msgstr "Texte délimité" + +#: webform_export.inc:22 +msgid "A plain text file delimited by commas, tabs, or other characters." +msgstr "Du texte en clair, délimité par des virgules, des tabulations, ou d'autres caractères." + +#: webform_export.inc:26 +msgid "Microsoft Excel" +msgstr "Excel de Microsoft" + +#: webform_export.inc:27 +msgid "A file readable by Microsoft Excel." +msgstr "Un fichier lisible par Excel de Microsoft." + +#: webform_report.inc:20 +msgid "Submissions for %user" +msgstr "Soumissions de %user" + +#: webform_report.inc:37;111 +msgid "#" +msgstr "#" + +#: webform_report.inc:38;112 +msgid "Submitted" +msgstr "Soumis" + +#: webform_report.inc:41;113 +msgid "User" +msgstr "Utilisateur" + +#: webform_report.inc:42;114;311 +msgid "IP Address" +msgstr "Adresse IP" + +#: webform_report.inc:73 +#: webform.module:211;1956 +msgid "View" +msgstr "Voir" + +#: webform_report.inc:85;165;403 +msgid "There are no submissions for this form. <a href=\"!url\">View this form</a>." +msgstr "Il n'y a pas de soumission pour ce formulaire. <a href=\"!url\">Voir ce formulaire</a>." + +#: webform_report.inc:90 +#: webform.module:1715 +msgid "Go back to the form" +msgstr "Retourner au formulaire" + +#: webform_report.inc:192 +msgid "Clear Form Submissions" +msgstr "Effacer les soumissions du formulaire" + +#: webform_report.inc:196 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "Êtes vous sûr(e) de vouloir supprimer toutes les soumissions pour ce formulaire ?" + +#: webform_report.inc:198 +#: webform.module:181;1969 +msgid "Clear" +msgstr "Effacer" + +#: webform_report.inc:198 +#: webform_submissions.inc:117 +msgid "Cancel" +msgstr "Annuler" + +#: webform_report.inc:206 +msgid "Webform %title entries cleared." +msgstr "Les entrées du formulaire %title ont été effacées." + +#: webform_report.inc:227 +msgid "Export format" +msgstr "Format d'export" + +#: webform_report.inc:234 +msgid "Delimited text format" +msgstr "Format du texte délimité " + +#: webform_report.inc:235 +#: webform.module:1118 +msgid "This is the delimiter used in the CSV/TSV file when downloading Webform results. Using tabs in the export is the most reliable method for preserving non-latin characters. You may want to change this to another character depending on the program with which you anticipate importing results." +msgstr "Ceci est le délimiteur utilisé dans le fichier CSV/TSV lors du téléchargement des résultats de Webform. La méthode la plus fiable pour préserver les caractères hors alphabet latin consiste à utiliser la tabulation. Vous pouvez vouloir le remplacer par un autre caractère en fonction du programme avec lequel vous prévoyez d'importer les résultats." + +#: webform_report.inc:238 +#: webform.module:1121 +msgid "Comma (,)" +msgstr "Virgule (,)" + +#: webform_report.inc:239 +#: webform.module:1122 +msgid "Tab (\\t)" +msgstr "Tabulation (\\t)" + +#: webform_report.inc:240 +#: webform.module:1123 +msgid "Semicolon (;)" +msgstr "Point-virgule (;)" + +#: webform_report.inc:241 +#: webform.module:1124 +msgid "Colon (:)" +msgstr "Deux-points (:)" + +#: webform_report.inc:242 +#: webform.module:1125 +msgid "Pipe (|)" +msgstr "Pipe (|)" + +#: webform_report.inc:243 +#: webform.module:1126 +msgid "Period (.)" +msgstr "Point (.)" + +#: webform_report.inc:244 +#: webform.module:1127 +msgid "Space ( )" +msgstr "Espace ( )" + +#: webform_report.inc:250 +#: webform.module:172;1967 +msgid "Download" +msgstr "Télécharger" + +#: webform_report.inc:310 +msgid "Submission Details" +msgstr "Détails de la soumission " + +#: webform_report.inc:311 +msgid "Serial" +msgstr "Séquentiel" + +#: webform_report.inc:311 +msgid "SID" +msgstr "SID" + +#: webform_report.inc:311 +msgid "Time" +msgstr "Heure" + +#: webform_report.inc:311 +msgid "UID" +msgstr "UID" + +#: webform_report.inc:311 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: webform_report.inc:382 +msgid "Q" +msgstr "Q" + +#: webform_report.inc:383 +msgid "responses" +msgstr "réponses" + +#: webform_report.inc:208 +#: webform.module:1580;1619 +msgid "webform" +msgstr "formulaire" + +#: webform_submissions.inc:110 +msgid "Delete Form Submission" +msgstr "Supprimer la soumission" + +#: webform_submissions.inc:115 +msgid "Are you sure you want to delete this submission?" +msgstr "Êtes vous sûr(e) de vouloir supprimer cette soumission ?" + +#: webform_submissions.inc:122 +msgid "Submission deleted." +msgstr "Soumission supprimée." + +#: webform.module:22 +msgid "Webforms are forms and questionnaires. To add one, select <a href=\"!url\">Create content -> Webform</a>." +msgstr "Les Webforms sont des formulaires ou des questionnaires. Pour en ajouter un, cliquez sur <a href=\"!url\">Créer un contenu -> Webform</a>." + +#: webform.module:25 +msgid "" +"<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will be sent. If no email address is specified, no e-mail will be sent when submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will be used to populate the return e-mail address on any sent e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that will be used to populate the subject e-mail field on any sent e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown after you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database table <i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" +"<p>Ce module vous permet de créer des formulaires ou questionnaires et définir leur contenu. Les résultats soumis depuis ces formulaires sont stockés dans la base de données et peuvent être envoyés par e-mail à une adresse prédéfinie. </p>\n" +" <p>Voici comment créer votre propre formulaire :</p>\n" +" <ul>\n" +" <li>Allez dans le menu 'Créer un contenu' et sélectionnez 'Webform'.</li>\n" +" <li>Ajoutez une description qui sera utilisée comme accroche ainsi que comme en-tête du formulaire.</li>\n" +" <li>Ajoutez un message de confirmation, ou spécifiez un noeud vers lequel l'utilisateur sera redirigé après avoir réussi à valider son formulaire.</li>\n" +" <li>Ajouter un ou plusieurs composants à votre formulaire.</li>\n" +" <li>Si besoin, ajouter une adresse e-mail à laquelle les soumissions seront envoyées. Si aucune addresse n'est spécifiée, aucun e-mail ne sera envoyé lors des soumissions au travers du formulaire.</li>\n" +" <li>Si besoin, selectionnez un composant de type 'email' (ou 'hidden') qui servira à remplir l'adresse e-mail de retour de tout e-mail envoyé.</li>\n" +" <li>Si besoin, selectionnez un composant de type 'textfield' (ou 'hidden') qui servira à remplir le champ sujet de tout e-mail envoyé.</li>\n" +" </ul>\n" +" <p>Une aide pour ajouter et configurer les composants apparaîtra lorsque vous en aurez déjà ajouté un.</p>\n" +" <p>Les soumissions effectuées au travers du formulaire sont stockées dans la table <i>webform_submitted_data</i> de la base de données, sous forme de paires 'key-value'.</p>\n" + +#: webform.module:41 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "Un webform peut être un questionnaire, un formulaire de contact ou de requête. Il peut être utilisé pour permettre aux visiteurs de prendre contact, de s'inscrire à un évènement, ou pour réaliser une enquête complexe." + +#: webform.module:58 +msgid "This page displays all the components currently configured for this webform node. You may add any number of components to the form, even multiple of the same type. To add a new component, fill in a name and select a type from the fields at the bottom of the table. Submit the form to create the new component or update any changed form values." +msgstr "Cette page affiche tous les composants actuellement configurés pour ce noeud webform. Vous pouvez ajouter au formulaire autant de composant que vous le souhaitez, qui peuvent être, à plusieurs du même type. Pour ajouter un nouveau composant, remplissez le nom et sélectionnez un type, dans les champs au bas du tableau. Soumettez le formulaire, pour créer le nouveau composant, ou prendre en compte toute modification des valeurs du formulaire." + +#: webform.module:59 +msgid "Click on any existing component's name to edit its settings." +msgstr "Cliquez sur le nom d'un composant existant pour modifier sa configuration." + +#: webform.module:76 +msgid "Webforms" +msgstr "Webforms" + +#: webform.module:79 +msgid "View and edit all the available webforms on your site." +msgstr "Voir et éditer tous les webforms utilisés sur votre site." + +#: webform.module:86;256 +#: webform.info:0 +msgid "Webform" +msgstr "Webform" + +#: webform.module:90 +msgid "Global configuration of webform functionality." +msgstr "Configuration générale des fonctionnalités de Webform." + +#: webform.module:112 +msgid "Webform confirmation" +msgstr "Confirmation" + +#: webform.module:119 +msgid "Configuration" +msgstr "Configuration" + +#: webform.module:127 +msgid "Form components" +msgstr "Composants du formulaire" + +#: webform.module:136;1619 +msgid "Results" +msgstr "Résultats" + +#: webform.module:145;190;1964 +msgid "Submissions" +msgstr "Soumissions" + +#: webform.module:154;1965 +msgid "Analysis" +msgstr "Analyses" + +#: webform.module:163;1966 +msgid "Table" +msgstr "Tableau" + +#: webform.module:203 +msgid "Webform submission" +msgstr "Soumissions" + +#: webform.module:258 +msgid "Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users." +msgstr "Créer un nouveau formulaire ou questionnaire accessible aux utilisateurs. Les soumissions et leurs statistiques sont enregistrées et accessibles aux utilisateurs privilégiés." + +#: webform.module:432 +msgid "Go to form" +msgstr "Aller au formulaire" + +#: webform.module:434 +msgid "View this form." +msgstr "Voir ce formulaire" + +#: webform.module:468 +msgid "Webform Settings" +msgstr "Paramètres" + +#: webform.module:477;1955 +msgid "Title" +msgstr "Titre" + +#: webform.module:487 +msgid "Text to be shown as teaser and before the form." +msgstr "Texte qui apparaîtra comme accroche et en tête de formulaire." + +#: webform.module:496 +msgid "Confirmation message or redirect URL" +msgstr "Message de confirmation ou URL de redirection" + +#: webform.module:497 +msgid "Message to be shown upon successful submission or a path to a redirect page. Redirect pages must start with <em>http://</em> for external sites or <em>internal:</em> for an internal path. i.e. <em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "Message qui sera affiché après une soumission réussie. Les URLs de redirection doivent commencer par <em>http://</em> pour les adresses externes et par <em>internal:</em> pour une adresse interne au site. Exemple: <em>http://www.mon-site.com</em> ou <em>internal:node/10</em>." + +#: webform.module:509 +msgid "Webform access control" +msgstr "Contrôle d'accès" + +#: webform.module:514 +msgid "These permissions affect which roles can submit this webform. It does not prevent access to the webform page. If needing to prevent access to the webform page entirely, use a content access module such as <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> or <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." +msgstr "Ces permissions déterminent quels sont les rôles qui peuvent soumettre ce formulaire. Elles ne protègent pas l'accès à la page du formulaire. Pour empêcher l'accès au formulaire dans sa totalité, utilisez un module d'accès au contenu comme <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> ou <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." + +#: webform.module:521 +msgid "Roles that can submit this webform" +msgstr "Les rôles qui peuvent soumettre ce formulaire" + +#: webform.module:522 +msgid "Uncheck all roles to prevent new submissions. The %authenticated role applies to any user signed into the site, regardless of other assigned roles." +msgstr "Décocher tous les rôles pour empêcher toute nouvelle soumission. Le rôle %authenticated s'applique à tout utilisateur authentifié sur le site, et ne prend pas en compte les autres rôles attribués." + +#: webform.module:529 +msgid "Webform mail settings" +msgstr "Paramètres du mail" + +#: webform.module:539 +msgid "E-mail to address" +msgstr "E-mail du destinataire" + +#: webform.module:541 +msgid "Form submissions will be e-mailed to this address. Leave blank for none. Multiple e-mail addresses may be separated by commas." +msgstr "Les soumissions seront envoyées à cette adresse. Laissez vide pour ne rien envoyer. Plusieurs adresses e-mail peuvent être séparées par des virgules." + +#: webform.module:549 +msgid "Conditional e-mail recipients" +msgstr "Destinataires d'une copie de l'e-mail" + +#: webform.module:550 +msgid "The settings below allow you to send e-mails to multiple recipients based off the value of a component." +msgstr "Les paramètres ci-dessous vous permettent d'envoyer des e-mails à plusieurs destinataires à partir de la valeur d'un composant." + +#: webform.module:574 +msgid "E-mail from name" +msgstr "Nom de l'expéditeur" + +#: webform.module:575 +msgid "After adding components to this form any email, select, or hidden form element may be selected as the sender's name for e-mails." +msgstr "Après avoir ajouté des composants à ce formulaire, tout composant de type 'email', 'select', ou 'hidden' peut être sélectionné pour fournir le nom de l'expéditeur des e-mails." + +#: webform.module:579 +msgid "E-mail from address" +msgstr "E-mail de l'expéditeur" + +#: webform.module:580 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the sender's e-mail address." +msgstr "Après avoir ajouté des composants à ce formulaire, tout composant de type 'textfield', 'select' ou 'hidden' peut être sélectionné pour fournir l'adresse de l'expéditeur des e-mails." + +#: webform.module:584 +msgid "E-mail subject" +msgstr "Sujet de l'e-mail" + +#: webform.module:585 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the subject for e-mails." +msgstr "Après avoir ajouté des composants à ce formulaire, tout composant de type 'textfield', 'select', ou 'hidden' peut être sélectionné comme sujet des e-mails." + +#: webform.module:620 +msgid "Webform advanced settings" +msgstr "Paramètres avancés" + +#: webform.module:628 +msgid "Show complete form in teaser" +msgstr "Montrer tout le formulaire dans l'accroche" + +#: webform.module:630 +msgid "Display the entire form in the teaser display of this node." +msgstr "Afficher tout le formulaire lors de l'affichage de l'accroche de ce noeud." + +#: webform.module:634 +msgid "Limit the number of submissions a user may send within a specified time period" +msgstr "Limiter le nombre de soumissions qu'un utilisateur pourra envoyer dans une période spécifiée" + +#: webform.module:639 +msgid "Unlimited" +msgstr "Illimité" + +#: webform.module:653 +msgid "ever" +msgstr "en tout" + +#: webform.module:654 +msgid "every hour" +msgstr "par heure" + +#: webform.module:655 +msgid "every day" +msgstr "par jour" + +#: webform.module:656 +msgid "every week" +msgstr "par semaine" + +#: webform.module:663 +msgid "Submit button text" +msgstr "Libellé du bouton de soumission" + +#: webform.module:665 +msgid "By default the submit button on this form will have the label <em>Submit</em>. Enter a new title here to override the default." +msgstr "Par défaut le bouton de soumission de ce formulaire aura le label <em>Soumettre</em>. Entrer un nouveau label si vous voulez le changer." + +#: webform.module:670 +msgid "Additional Validation" +msgstr "Validation supplémentaire" + +#: webform.module:671 +msgid "Enter PHP code to perform additional validation for this form. Include the <?php ?> tags. $form_id and $form_values are available variables. If validation fails, use the form_set_error function to prevent the form from being submitted. Use the same syntax as a _validate function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Saisissez du code PHP pour effetuer une validation supplémentaire. Ajoutez les balises <?php ?>. $form_id and $form_values sont des variables disponibles. Si la validation échoue, utilisez la fonction form_set_error pour empêcher la soumission du formulaire. Utilisez la syntaxe d'une fonction de validation, décrite ici : <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." + +#: webform.module:679 +msgid "Additional Processing" +msgstr "Traitement supplémentaire" + +#: webform.module:680 +msgid "Enter PHP code to perform additional processing for this form (after the validation). Include the <?php ?> tags. $form_id and $form_values are available variables, use the same syntax as a _submit function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Entrez du code PHP pour effectuer un traitement supplémentaire sur ce formulaire (après sa validation). Ajoutez les balises <?php ?>. $form_id et $form_values sont des variables disponibles, utilisez la syntaxe de la fonction _submit décrite ici : <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." + +#: webform.module:709 +msgid "To" +msgstr "A" + +#: webform.module:724 +msgid "No components yet in this webform." +msgstr "Il n'y a pas encore de composant dans ce formulaire." + +#: webform.module:739 +msgid "Custom" +msgstr "Personnalisé" + +#: webform.module:739 +msgid "Component" +msgstr "Composant" + +#: webform.module:750 +msgid "Default" +msgstr "Défaut" + +#: webform.module:771 +msgid "Limit to !count submission(s) !timespan" +msgstr "Limité à !count soumission(s) !timespan" + +#: webform.module:784;791 +msgid "The entered email address %address is not a valid address." +msgstr "L'adresse e-mail %address que vous avez entrée n'est pas valide." + +#: webform.module:866 +msgid "The new webform %title has been created. Add new fields to your webform with the form below." +msgstr "Le nouveau formulaire %title a été créé. Ajoutez, ci-dessous, de nouveaux champs à votre formulaire." + +#: webform.module:869 +msgid "This webform is currently unpublished. After finishing your changes to the webform, use the <em>Publish</em> button below." +msgstr "Ce formulaire n'est pas publié pour l'instant. A l'issue de vos mises à jour du formulaire, utilisez le bouton <em>Publier</em> ci-dessous." + +#: webform.module:892 +#: components/markup.inc:58 +msgid "Preview" +msgstr "Aperçu" + +#: webform.module:998 +msgid "Submissions for this form are closed." +msgstr "Les soumissions de ce formulaire sont closes." + +#: webform.module:1002 +msgid "You must <a href=\"!login\">login</a> or <a href=\"!register\">register</a> to view this form." +msgstr "Vous devez vous <a href=\"!login\">connecter</a> ou vous <a href=\"!register\">enregister</a> pour voir ce formulaire." + +#: webform.module:1006 +msgid "You do not have permission to view this form." +msgstr "Vous n'avez pas le droit de voir ce formulaire." + +#: webform.module:1013 +msgid "You have submitted this form the maximum number of times (@count)." +msgstr "Vous avez déjà soumis le formulaire un nombre maximum de fois (@count)." + +#: webform.module:1016;1027 +msgid "You have already submitted this form." +msgstr "Vous avez déjà soumis ce formulaire." + +#: webform.module:1019 +msgid "You may not submit another entry at this time." +msgstr "Vous ne pouvez pas soumettre à nouveau en ce moment." + +#: webform.module:1027;1030 +msgid "<a href=\"!url\">View your previous submissions</a>." +msgstr "<a href=\"!url\">Voir vos précédentes soumissions</a>." + +#: webform.module:1047 +msgid "Available components" +msgstr "Composants disponibles" + +#: webform.module:1050 +msgid "These are the available field types for your installation of Webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms." +msgstr "Voici les types de champs rendus disponibles par votre installation de Webform. Vous pouvez en désactiver en décochant la case associée. Seuls les types cochés seront disponibles pour les nouveaux formulaires ou ceux existants." + +#: webform.module:1067 +msgid "Default e-mail values" +msgstr "Valeurs par défaut pour l'e-mail" + +#: webform.module:1074 +msgid "From address" +msgstr "E-mail de l'expéditeur" + +#: webform.module:1076 +msgid "The default sender address for emailed webform results; often the e-mail address of the maintainer of your forms." +msgstr "L'adresse de l'expéditeur par défaut des soumissions; souvent c'est l'adresse de la personne qui maintient vos formulaires." + +#: webform.module:1081 +msgid "From name" +msgstr "Nom de l'expéditeur" + +#: webform.module:1083 +msgid "The default sender name which is used along with the default from address." +msgstr "Nom de l'expéditeur par défaut, utilisé en association avec son adresse." + +#: webform.module:1088 +msgid "Default subject" +msgstr "Sujet par défaut" + +#: webform.module:1089;2064 +msgid "Form submission from: %title" +msgstr "Soumission du formulaire: %title" + +#: webform.module:1090 +msgid "The default subject line of any e-mailed results." +msgstr "Le sujet, par défaut, de toutes les soumissions envoyées par e-mail." + +#: webform.module:1095 +msgid "Advanced options" +msgstr "Options avancées" + +#: webform.module:1103 +msgid "Allow cookies for tracking submissions" +msgstr "Autoriser les cookies pour suivre les soumissions." + +#: webform.module:1105 +msgid "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, Webform also uses IP addresses and site usernames to prevent repeated submissions." +msgstr "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Les cookies</a> peuvent être utilisés pour empêcher un même utilisateur de faire des soumissions répétées pour un formulaire. Il n'est pas nécessaire d'utiliser cette fonctionnalité pour limiter les soumissions d'un utilisateur, bien qu'elle permette d'être plus précis dans certaines situations. En plus des cookies, Webform utilise aussi les addresses IP et les noms d'utilisateurs pour empêcher les soumissions répétées." + +#: webform.module:1110 +msgid "Default export format" +msgstr "Format d'export par défaut " + +#: webform.module:1117 +msgid "Default export delimiter" +msgstr "Délimiteur par défaut pour l'export" + +#: webform.module:1133 +msgid "Webforms debug" +msgstr "Déboguer" + +#: webform.module:1135 +msgid "Off" +msgstr "Désactivé" + +#: webform.module:1135 +msgid "Log submissions" +msgstr "Tracer les soumissions" + +#: webform.module:1135 +msgid "Full debug" +msgstr "Débogue complet" + +#: webform.module:1136 +msgid "Set to \"Log submissions\" to log all submissions in the watchdog. Set to \"Full debug\" to print debug info on submission." +msgstr "Mettre : \"Tracer les soumissions\" pour inscrire toutes les soumissions dans le journal de bord. Mettre : \"Débogue complet\" pour affficher les informations du débogeur lors d'une soumission." + +#: webform.module:1152 +msgid "Enabled" +msgstr "Activé" + +#: webform.module:1186 +msgid "Submission #@sid" +msgstr "Soumission #@sid" + +#: webform.module:1206;1206 +msgid "Previous submission" +msgstr "Soumission précédente" + +#: webform.module:1209;1209 +msgid "Next submission" +msgstr "Soumission suivante" + +#: webform.module:1213 +msgid "Submission Information" +msgstr "Information sur la soumission" + +#: webform.module:1222 +msgid "Form: !form" +msgstr "Formulaire : !form" + +#: webform.module:1225 +msgid "Submitted by !name" +msgstr "Soumis par !name" + +#: webform.module:1265 +msgid "Next Page >" +msgstr "Page suivante >" + +#: webform.module:1266 +msgid "< Previous Page" +msgstr "< Page précédente" + +#: webform.module:1384 +msgid "The webform component @type is not able to be displayed" +msgstr "The composant @type ne peut être affiché" + +#: webform.module:1580 +msgid "Possible spam attempt from @remote_addr" +msgstr "Possible tentative d'envoi de spam à partir de @remote_addr" + +#: webform.module:1581 +msgid "Illegal information. Data not submitted." +msgstr "Information invalide. Données non soumises." + +#: webform.module:1619 +msgid "Submission posted to %title" +msgstr "Soumission à %title" + +#: webform.module:1624 +msgid "Submission updated." +msgstr "Soumission mise à jour." + +#: webform.module:1708 +msgid "Thank you, your submission has been received." +msgstr "Merci, votre soumission a été reçue." + +#: webform.module:1744 +msgid "Submitted on" +msgstr "Soumis le" + +#: webform.module:1748 +msgid "Submitted by user" +msgstr "Soumis par l'utilisateur" + +#: webform.module:1751 +msgid "Submitted by anonymous user" +msgstr "Soumis par un utilisateur anonyme" + +#: webform.module:1755 +msgid "Submitted values are:" +msgstr "Les valeurs soumises sont :" + +#: webform.module:1759 +msgid "The results of this submission may be viewed at:" +msgstr "Les résultats de cette soumission peuvent être vus ici :" + +#: webform.module:2076;2077;2078;2079;2080;2083 +msgid "key" +msgstr "clé" + +#: webform.module:2087 +msgid "You may use special tokens in this field that will be replaced with dynamic values." +msgstr "Vous pouvez utiliser des mots-clés (i.e. 'tokens') spéciaux dans ce champ. Ils seront remplacés par des valeurs dynamiques." + +#: webform.module:2089 +msgid "You can use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables, %session[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> variables and %get[key] to create prefilled forms from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. %cookie, %request and %post also work with their respective PHP variables. For example %server[HTTP_USER_AGENT], %session[id], or %get[q]." +msgstr "Vous pouvez utiliser %server[key] pour ajouter l'une des variables PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a>, %session[key] pour ajouter l'une des variables PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> et %get[key] pour créer des formulaires pré-remplis à partir de l'<a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. %cookie, %request et %post marchent aussi avec leurs variables PHP respectives. Par exemple %server[HTTP_USER_AGENT], %session[id], ou %get[q]." + +#: webform.module:2091 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "Si vous utilisez le module 'Profile', vous avez également accès à toutes les données du profil avec la syntaxe %profile[form_name]. Si vous avez, par exemple, un champ appelé profile_ville, ajoutez la variable %profile[profile_ville]." + +#: webform.module:2095 +msgid "Token values" +msgstr "Mots-clés" + +#: webform.install:146 +msgid "Webform module installed module tables successfully." +msgstr "Le module Webform a correctement installé les tables du module." + +#: webform.install:149 +msgid "The installation of webform module was unsuccessful." +msgstr "L'installation du module Webform a échoué." + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "Permet la création de formulaires et de questionnaires." + +#: components/date.inc:37 +#: components/email.inc:38 +#: components/hidden.inc:33 +#: components/select.inc:49 +#: components/textarea.inc:39 +#: components/textfield.inc:41 +#: components/time.inc:36 +msgid "Default value" +msgstr "Valeur par défaut" + +#: components/date.inc:39 +#: components/email.inc:40 +#: components/hidden.inc:35 +#: components/textarea.inc:41 +#: components/textfield.inc:43 +#: components/time.inc:38 +msgid "The default value of the field." +msgstr "La valeur par défaut du champ." + +#: components/date.inc:39 +msgid "Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid." +msgstr "Accepte une date dont le format respecte <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">Format standard GNU de saisie d'une date</a>. Des chaînes telles que : today, +2 months, et Dec 9 2004 sont toutes valides." + +#: components/date.inc:46 +#: components/time.inc:46 +msgid "Timezone" +msgstr "Fuseau horaire" + +#: components/date.inc:48 +msgid "Adjust the date according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "Ajuste la date selon un fuseau horaire donné. 'Website timezone' est positionné dans la <a href=\"!settings\">Configuration du site</a> et représente la valeur par défaut." + +#: components/date.inc:54 +#: components/time.inc:54 +msgid "Observe Daylight Savings" +msgstr "Respecte les changements d'horaires saisonniers" + +#: components/date.inc:57 +#: components/time.inc:57 +msgid "Automatically adjust the time during daylight savings." +msgstr "Ajuste l'heure automatiquement lors des changements d'horaires." + +#: components/date.inc:63 +msgid "Start year" +msgstr "Année de début" + +#: components/date.inc:65 +msgid "The first year that is allowed to be entered." +msgstr "La première année autorisée à être saisie." + +#: components/date.inc:72 +msgid "End year" +msgstr "Année de fin" + +#: components/date.inc:74 +msgid "The last year that is allowed to be entered." +msgstr "La dernière année autorisée à être saisie." + +#: components/date.inc:81 +msgid "Use a textfield for year" +msgstr "Utiliser un champ texte pour l'année" + +#: components/date.inc:83 +msgid "If checked, the generated date field will use a textfield for the year. Otherwise it will use a select list." +msgstr "En cochant, le champ 'date' généré utilisera un champ texte ('textfield') pour l'année. Sinon, il utilisera une liste déroulante ('select list')." + +#: components/date.inc:188 +msgid "Year" +msgstr "Année" + +#: components/date.inc:205 +msgid "!name field is required." +msgstr "Le champ !name est obligatoire." + +#: components/date.inc:212 +msgid "Entered !name is not a valid date." +msgstr "La valeur !name entée n'est pas une date valide." + +#: components/date.inc:219 +msgid "The entered date needs to be between the years @start and @end." +msgstr "Les données fournies doivent se situer entre les années @start et @end." + +#: components/date.inc:292 +msgid "Presents month, day, and year fields." +msgstr "Présente les champs mois, jour, et année." + +#: components/date.inc:349 +#: components/email.inc:196 +#: components/file.inc:476 +#: components/textarea.inc:158 +#: components/textfield.inc:203 +#: components/time.inc:297 +msgid "Left Blank" +msgstr "Laissé vide" + +#: components/date.inc:350 +#: components/email.inc:197 +#: components/textarea.inc:159 +#: components/textfield.inc:204 +#: components/time.inc:298 +msgid "User entered value" +msgstr "Valeur entrée par l'utilisateur" + +#: components/email.inc:49 +msgid "User email as default" +msgstr "Adresse e-mail de l'utilisateur par défaut." + +#: components/email.inc:51 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "Met l'e-mail de l'utilisateur comme valeur par défaut de ce champ, si celui-ci est connecté." + +#: components/email.inc:58 +#: components/file.inc:122 +#: components/textarea.inc:48 +#: components/textfield.inc:50 +msgid "Width" +msgstr "Largeur" + +#: components/email.inc:60 +#: components/textarea.inc:50 +#: components/textfield.inc:52 +msgid "Width of the textfield." +msgstr "Largeur du champ texte (textfield)." + +#: components/email.inc:60 +#: components/file.inc:124 +#: components/textarea.inc:50;58 +#: components/textfield.inc:52 +msgid "Leaving blank will use the default size." +msgstr "Si vous laissez vide, la dimension par défaut sera utilisée." + +#: components/email.inc:66 +#: components/hidden.inc:46 +#: components/select.inc:72 +msgid "E-mail a submission copy" +msgstr "Envoyer une copie de la soumission." + +#: components/email.inc:69 +#: components/hidden.inc:49 +#: components/select.inc:75 +msgid "Check this option if this component contains an e-mail address that should get a copy of the submission. Emails are sent individually so other emails will not be shown to the recipient." +msgstr "Cochez cette option si ce composant contient une adresse e-mail qui devrait recevoir une copie de la soumission. Les e-mails sont envoyés individuellement afin de ne pas rendre les autres adresses e-mails visibles par le destinataire." + +#: components/email.inc:73 +#: components/textarea.inc:64 +#: components/textfield.inc:86 +msgid "Disabled" +msgstr "Désactivé" + +#: components/email.inc:75 +#: components/textarea.inc:66 +#: components/textfield.inc:88 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "Rendre ce champ non-editable. Utile pour fournir une valeur par défaut non modifiable." + +#: components/email.inc:134 +msgid "%value is not a valid email address." +msgstr "%value n'est pas une adresse e-mail valide." + +#: components/email.inc:163 +msgid "A textfield that automatically fills in a logged-in user's e-mail." +msgstr "Un champ texte qui se remplit automatiquement avec l'e-mail de l'utilisateur connecté." + +#: components/email.inc:198 +#: components/hidden.inc:139 +#: components/textarea.inc:160 +#: components/textfield.inc:205 +msgid "Average submission length in words (ex blanks)" +msgstr "Longueur moyenne des soumissions en mots (sans les blancs)" + +#: components/fieldset.inc:34 +msgid "Collapsible" +msgstr "Pliant" + +#: components/fieldset.inc:36 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "Si le 'fieldset' est pliant, l'utilisateur pourra l'ouvrir ou le fermer." + +#: components/fieldset.inc:41 +msgid "Collapsed by Default" +msgstr "Replié par défaut" + +#: components/fieldset.inc:43 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "Les 'fieldsets' pliants sont \"ouverts\" par défaut. Cochez cette option pour que, par défaut, ils soient \"fermés\"." + +#: components/fieldset.inc:95 +msgid "Fieldsets allow you to organize multiple fields into groups." +msgstr "Les 'fieldsets' vous permettent de regrouper plusieurs champs entre eux." + +#: components/file.inc:44 +msgid "Upload Filtering" +msgstr "Filtrage des transferts" + +#: components/file.inc:45 +msgid "Select the types of uploads you would like to allow." +msgstr "Sélectionnez les types de transferts que vous souhaiteriez autoriser." + +#: components/file.inc:55 +msgid "Web Images" +msgstr "Images web" + +#: components/file.inc:63 +msgid "Desktop Images" +msgstr "Images du poste de travail" + +#: components/file.inc:71 +msgid "Documents" +msgstr "Documents" + +#: components/file.inc:79 +msgid "Media" +msgstr "Media" + +#: components/file.inc:87 +msgid "Archives" +msgstr "Archives" + +#: components/file.inc:94 +msgid "Additional Extensions" +msgstr "Extensions supplémentaires" + +#: components/file.inc:96 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "Entrez une liste d'extensions de fichiers supplémentaires pour ce champ, séparées par des virgules.<br /> Les extensions fournies seront ajoutées aux éléments cochés ci-dessus." + +#: components/file.inc:104 +msgid "Max Upload Size" +msgstr "Taille de transfert maximum" + +#: components/file.inc:106 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "Entrez la taille maximum d'un fichier qu'un utilisateur peut transférer (en KB)." + +#: components/file.inc:113 +msgid "Upload Directory" +msgstr "Repertoire des transferts" + +#: components/file.inc:115 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "Les fichiers transférés par Webform sont toujours sauvegardés dans le répertoire 'files' du site. Vous pouvez, si besoin, spécifier un sous-répertoire qui stockera vos fichiers ." + +#: components/file.inc:124 +msgid "Width of the file field." +msgstr "Largeur du champ fichier." + +#: components/file.inc:139 +msgid "The save directory %directory could not be created. Check that the webform files directory is writtable." +msgstr "Le répertoire de sauvearde %directory n'a pas pu être créé. Vérifiez que le répertoire 'files' est inscriptible." + +#: components/file.inc:242 +msgid "Category" +msgstr "Catégorie" + +#: components/file.inc:242 +msgid "Types" +msgstr "Types" + +#: components/file.inc:291 +#: components/time.inc:166 +msgid "%field field is required." +msgstr "Le champ %field est requis." + +#: components/file.inc:324 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "Les fichiers ayant l'extension '%ext' ne sont pas autorisés. Merci de transférer un fichier ayant une des extensions : %exts." + +#: components/file.inc:329 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "Le fichier '%filename' est trop gros (%filesize KB). Veuillez transférer un fichier de moins de %maxsize KB." + +#: components/file.inc:357 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "Le fichier transféré %filename n'a pas pu être sauvegardé. Le répertoire destinataire n'est peut-être pas ouvert en écriture." + +#: components/file.inc:365 +msgid "The uploaded file was unable to be saved. The destination directory does not exist." +msgstr "Le fichier transféré n'a pas pu être sauvegardé.Le répertoire destinataire n'existe pas." + +#: components/file.inc:411 +msgid "Uploading a new file will replace the current file." +msgstr "En transférant un nouveau fichier vous remplacerai le fichier courant." + +#: components/file.inc:442 +msgid "Allow users to submit files of the configured types." +msgstr "Autorise les utilisateurs à soumettre des fichiers ayant l'un des types configurés." + +#: components/file.inc:477 +msgid "User uploaded file" +msgstr "Fichier transféré" + +#: components/file.inc:478 +msgid "Average uploaded file size" +msgstr "Taille moyenne des fichiers transférés" + +#: components/file.inc:523 +msgid "Filesize (KB)" +msgstr "Taille du fichier (KB)" + +#: components/grid.inc:37 +#: components/select.inc:39 +msgid "Options" +msgstr "Options" + +#: components/grid.inc:39 +msgid "Options to select across the top. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "Options à sélectionner en haut, à l'horizontale. Une option par ligne. Les paires 'Key-value' peuvent être entrées, séparées par des 'pipes', i.e. safe_key|Une option compréhensible" + +#: components/grid.inc:47 +msgid "Questions" +msgstr "Questions" + +#: components/grid.inc:49 +msgid "Questions list down the left side. One question per line." +msgstr "Liste des questions, à gauche, de haut en bas. Une question par ligne." + +#: components/grid.inc:57 +msgid "Randomize Options" +msgstr "Affichage aléatoire des Options" + +#: components/grid.inc:59 +msgid "Randomizes the order of options on the top when they are displayed in the form." +msgstr "Rendre aléatoire l'ordre d'affichage des options en haut, lorsqu'elles sont affichées dans le formulaire." + +#: components/grid.inc:63 +msgid "Randomize Questions" +msgstr "Affichage aléatoire des Questions" + +#: components/grid.inc:65 +msgid "Randomize the order of the questions on the side when they are displayed in the form." +msgstr "Rendre aléatoire l'ordre d'affichage des questions, de côté, lorsqu'elles sont affichées dans le formulaire." + +#: components/grid.inc:208 +msgid "Allows creation of grid questions, denoted by radio buttons." +msgstr "Permet la création d'une grille de questions matérialisée par des boutons radio." + +#: components/hidden.inc:92 +msgid "@name (hidden)" +msgstr "@name (hidden)" + +#: components/hidden.inc:104 +msgid "A field which is not visible to the user, but is recorded with the submission." +msgstr "Champ invisible pour l'utilisateur, mais qui est enregistré avec la soumission." + +#: components/hidden.inc:137 +msgid "Empty" +msgstr "Vide" + +#: components/hidden.inc:138 +msgid "Non-empty" +msgstr "Non-vide" + +#: components/markup.inc:36 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "Le 'Markup' vous permet d'introduire de la logique HTML ou PHP personnalisée, dans votre formulaire." + +#: components/markup.inc:98 +msgid "Displays text as HTML in the form; does not render a field." +msgstr "Affiche du texte comme du HTML dans le formulaire; ne fournit pas de champ." + +#: components/pagebreak.inc:27 +msgid "Use caution when combining the pagebreak and file components. File components will not be submitted unless they are after the last pagebreak in the form." +msgstr "Précaution d'usage lorsque l'on combine les composants de type 'pagebreak' et de type 'file'. Les composants de type 'file' ne seront pas soumis à moins qu'ils figurent après le dernier composant 'pagebreak' du formulaire." + +#: components/pagebreak.inc:54 +msgid "Break up a multi-page form." +msgstr "Pour répartir un formulaire sur plusieurs pages." + +#: components/select.inc:41 +msgid "A list of selectable options. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "Une liste d'options qui pourront être sélectionnées. Une option par ligne. Des paires 'key-value' peuvent être fournies, séparées par des 'pipes' i.e. safe_key|Une option compréhensible" + +#: components/select.inc:51 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "La valeur par défaut du champ. Dans le cas d'une sélection multiple, utilisez la virgule pour séparer les différentes valeurs." + +#: components/select.inc:58 +msgid "Multiple" +msgstr "Choix Multiple" + +#: components/select.inc:61 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "Cochez cette option si l'utilisateur est autorisé à sélectionner plusieurs valeurs." + +#: components/select.inc:65 +msgid "Listbox" +msgstr "Liste déroulante" + +#: components/select.inc:68 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "Cochez cette option si vous souhaitez que le composant apparaisse sous la forme d'une liste déroulante plutôt que de bouttons radios ou de cases à cocher." + +#: components/select.inc:76 +msgid "To use the option with a select component, you must use key-value pairs seperated by pipes. i.e. user@example.com|Sample user." +msgstr "Pour utiliser cette option avec un composant de type 'select', vous devez utiliser les paires 'key-value' séparées par des pipes, i.e. usager@exemple.com|utilisateur de l'exemple." + +#: components/select.inc:271 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "Permet la création de cases à cocher, de boutons de radio ou de listes déroulantes." + +#: components/textarea.inc:56 +msgid "Height" +msgstr "Hauteur" + +#: components/textarea.inc:58 +msgid "Height of the textfield." +msgstr "Hauteur du champ texte." + +#: components/textarea.inc:125 +msgid "A large text area that allows for multiple lines of input." +msgstr "Une grande zone de texte qui permet la saisie de plusieurs lignes." + +#: components/textfield.inc:59 +msgid "Maxlength" +msgstr "Longueur maximale" + +#: components/textfield.inc:61 +msgid "Maxlength of the textfield." +msgstr "Longueur maximale du champ texte." + +#: components/textfield.inc:68 +msgid "Label placed to the left of the textfield" +msgstr "Etiquette placée à la gauche du champ texte" + +#: components/textfield.inc:70 +msgid "Examples: $, #, -." +msgstr "Exemples: $, #, -." + +#: components/textfield.inc:77 +msgid "Label placed to the right of the textfield" +msgstr "Etiquette placée à la droite du champ texte" + +#: components/textfield.inc:79 +msgid "Examples: lb, kg, %." +msgstr "Exemples: lb, kg, %." + +#: components/textfield.inc:170 +msgid "Basic textfield type." +msgstr "Champ texte de base." + +#: components/time.inc:38 +msgid "Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are all valid." +msgstr "Accepte une heure dans l'un des <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">Formats Standard GNU de saisie des dates</a>. Des chaînes telles que now, +2 hours, and 10:30pm sont toutes valides." + +#: components/time.inc:48 +msgid "Adjust the time according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "Ajuste l'heure selon un fuseau horaire donné. 'Website timezone' est positionné dans la <a href=\"!settings\">Configuration du site</a> et représente la valeur par défaut." + +#: components/time.inc:62 +msgid "Time Format" +msgstr "Format" + +#: components/time.inc:64 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Formatter l'affichage de l'heure sur 12 ou 24 heures." + +#: components/time.inc:118 +msgid "hour" +msgstr "heure" + +#: components/time.inc:119 +msgid "minute" +msgstr "minute" + +#: components/time.inc:122 +msgid "am" +msgstr "am" + +#: components/time.inc:122 +msgid "pm" +msgstr "pm" + +#: components/time.inc:174 +msgid "Entered %name is not a valid time." +msgstr "La valeur %name entrée n'est pas une heure valide." + +#: components/time.inc:243 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "Fournit à l'utilisateur des champs heure et minute. En option, champs am/pm." + diff --git a/sites/all/modules/webform/translations/he.po b/sites/all/modules/webform/translations/he.po new file mode 100644 index 0000000000000000000000000000000000000000..f494df3a1953533e481efc91a7f74b03f24dac6d --- /dev/null +++ b/sites/all/modules/webform/translations/he.po @@ -0,0 +1,856 @@ +# HEBREW translation of Drupal (webform.module) +# Copyright YEAR NAME <EMAIL@ADDRESS> +# Generated from file: webform.module,v 1.47 2005/04/03 19:49:13 ullgren +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"POT-Creation-Date: 2005-04-03 21:51+0200\n" +"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n" +"Last-Translator: NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: webform.module:26 +msgid "Webforms are forms and questionnaires. To add one select <strong>create content -> webform</strong>. Below you can set different security and debug options." +msgstr "" + +#: webform.module:29 +msgid "<p>This module lets you create forms or questionnaires and define there content. Submissions from these forms are stored in the database and optionaly also send by e-mail to a predefined address.</p>\n<p>Here is how to create one:\n<ul>\n\n <li>Go to Create Content and add a webform</li>\n <li>Add a description that is displayed as a teaser and above the actual form.</li>\n <li>Add a confirmation message or redirect node that is to be displayed after a successful submission.</li>\n <li>Select which roles who should have submission access to this form (roles that have the "use all webforms" permision can allways use a webform).</li>\n <li>Add one or more components to your form.</li>\n <li>Optionaly add a email address to which submissions will be send. If no email address is specified no email will be send when submissions are made through the form.</li>\n <li>Optionally select an email component that will be used to populate the return email address on any sent email.</ul>\n <li>Optionally select a textfield component that will be used to populate the subject email field on any sent email.</ul>\n</ul>\nHelp on adding and how to configure the components will be shown after adding your first component.\n</p>\n<p>On user submissions the form content is stored in the database table <i>webform_submitted_data</i> as key-value pairs. Apart from the form fields the following "special" fields are added:\n<ul>\n <li> __userid : UID of the submiting user.</li>\n <li> __timestamp : UNIX timestamp for when the submission occured.</li>\n <li> __remotehost : IP or name of the remote host from which the submission came.</li>\n <li> __useragent : What user agent (browser) the user used upon submitting the data.</li>\n</ul>\n" +msgstr "" + +#: webform.module:54 +msgid "Enables the creation of forms and questionnaires." +msgstr "מאפשר יצירת טפסים ושאלונים" + +#: webform.module:57 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "טופס רשת יכול להיות שאלון, טופס קשר, או טופס בקשה. אפשר להשתמש בוו כדי לתת למבקרי האתר ליצור קשר, להירשם לאירוע או לאפשר סקר מורכב" + +#: webform.module:60 +msgid "Available variables are: %username, %useremail, %site, %date." +msgstr "משתנים זמינים: %username, %useremail, %site, %date." + +#: webform.module:61 +msgid "You can also use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables and %get[key] to create prefilled forms from from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>." +msgstr "" + +#: webform.module:63 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "" + +#: webform.module:237 +msgid "Update from version %a to version %b" +msgstr "עדכון מגירסה %a לגירסה %b" + +#: webform.module:242 +msgid "Allow cross site posting" +msgstr "מאפשר פרסום בכמה אתרים" + +#: webform.module:244 +msgid "Yes" +msgstr "כן" + +#: webform.module:244 +msgid "No" +msgstr "לא" + +#: webform.module:245 +msgid "Allow postings to your webforms that do not originating from your sites domain." +msgstr "" + +#: webform.module:247 +msgid "Webforms Debug" +msgstr "" + +#: webform.module:250 +msgid "DEBUG for the webform module" +msgstr "" + +#: webform.module:251 +msgid "Set this option to \"Log submissions\" to log all submissions in the watchdog. Set it to \"Full debug\" to print debug info on submission. You probably want to leave this option on \"OFF\"." +msgstr "" + +#: webform.module:253 +msgid "Show main webform menu" +msgstr "" + +#: webform.module:255 +msgid "Select the visibility of the main webform item on the main menu" +msgstr "האם הטופס יוצג בתפריט הראשי?" + +#: webform.module:291 +msgid "The form component has been changed. Remember to press Submit on the bottom of this form to save your changes." +msgstr "" + +#: webform.module:296 +msgid "The form component has been deleted. Remember to press Submit on the bottom of this form to save your changes." +msgstr "" + +#: webform.module:302 +msgid "You have to specify a form description." +msgstr "חובה למלא תיאור לתופס" + +#: webform.module:310 +msgid "You have to specify a confirmation message." +msgstr "חובה למלא הודעת אישור" + +#: webform.module:337 +msgid "Webform upgrade page" +msgstr "עמוד שדרוג הטופס" + +#: webform.module:368 +msgid "results" +msgstr "תוצאות" + +#: webform.module:405 +msgid "go to form" +msgstr "לך לטופס" + +#: webform.module:405 +msgid "View this form." +msgstr "הצג טופס זה." + +#: webform.module:408 +msgid "Go back to the form" +msgstr "לך בחזרה לטופס" + +#: webform.module:418 +msgid "textfield" +msgstr "שדה טקסט" + +#: webform.module:419 +msgid "textarea" +msgstr "אזור טקסט" + +#: webform.module:420 +msgid "select" +msgstr "בחירה" + +#: webform.module:421 +msgid "label" +msgstr "" + +#: webform.module:422 +msgid "hidden" +msgstr "חבוי" + +#: webform.module:423 +msgid "e-mail address" +msgstr "כתובת דואר אלקטרוני" + +#: webform.module:435 +msgid "Use access" +msgstr "" + +#: webform.module:435 +msgid "Roles that should be able to submit data using this form." +msgstr "תפקידים המורשים להגיש נתונים תוך שימוש בטופס זה." + +#: webform.module:441;650 +msgid "Description" +msgstr "תיאור" + +#: webform.module:442 +msgid "Text to be shown as teaser and before the form." +msgstr "המלל שיוצג כתמצית ולפני הטופס" + +#: webform.module:445 +msgid "Confirmation message or redirect URL" +msgstr "אישור הודעה או כתובת URL שאליה יופנה הגולש" + +#: webform.module:447 +msgid "Message to be shown upon successful submission or an absolute path to a redirect page (must start with http://)" +msgstr "הודעה שתוצג לאחר מילוי מוצלח של הטופס, או נתיב מוחלט או כתובת URL אבסולוטית של עמוד שאליו יועבר הגולש (חייב להתחיל ב-http://(" + +#: webform.module:473 +msgid "To edit a component, check its \"selected\" box and press \"Edit selected\"." +msgstr "כדי לערוך מרכיב, יש לסמן את תיבת הבחירה שלו וללחוץ על 'עריכת הנבחר'" + +#: webform.module:474 +msgid "To delete a component, check its \"selected\" box and press \"Delete selected\"." +msgstr "כדי למחוק מרכיב, יש לסמן את תיבת הבחירה שלו וללחוץ על 'מחיקת הנבחר'" + +#: webform.module:475 +msgid "Use \"value\" to enter a default value." +msgstr "אפשר להשתמש ב'ערך' כדי להכניס ערך ברירת מחדל." + +#: webform.module:476 +msgid "Check \"mandatory\" box if the field should be mandatory." +msgstr "האם שדה זה הוא שדה חובה?" + +#: webform.module:477 +msgid "Remember to set weight on the components or they will be added to the form in a random order." +msgstr "זכרו לתת משקל לרכיבים או שהם יתווספו לטופס בסדר אקראי." + +#: webform.module:478 +msgid "The components are sorted first by weight and then by name." +msgstr "המרכיבים מסודרים ראשית לפי משקל ואז לפי שם." + +#: webform.module:481 +msgid "Form components" +msgstr "מרכיבי הטופס" + +#: webform.module:483 +msgid "Select" +msgstr "" + +#: webform.module:484;648 +msgid "Name" +msgstr "שם" + +#: webform.module:485 +msgid "Type" +msgstr "סוג" + +#: webform.module:486 +msgid "Value" +msgstr "ערך" + +#: webform.module:487 +msgid "Mandatory" +msgstr "חובה" + +#: webform.module:488 +msgid "Weight" +msgstr "משקל" + +#: webform.module:492 +msgid "Edit selected" +msgstr "עריכת הנבחר" + +#: webform.module:493 +msgid "Delete selected" +msgstr "מחיקת הנבחר" + +#: webform.module:497 +msgid "Add a new component" +msgstr "הוספת מרכיב חדש" + +#: webform.module:498 +msgid "Select a component type to add." +msgstr "בחר מרכיב להוספה." + +#: webform.module:499;628 +msgid "Add" +msgstr "הוספה" + +#: webform.module:501 +msgid "E-mail to address" +msgstr "" + +#: webform.module:503 +msgid "Form submissions will be e-mailed to this address. Leave blank for none." +msgstr "הגשות הטופס יישלחו לכתובת זו. השאר ריק לכלום." + +#: webform.module:522 +msgid "E-mail from address" +msgstr "כתובת ה-FROM שממנה יישלח הדואר האלקטרוני" + +#: webform.module:523 +msgid "Form e-mails will have this return address. Choose Automatic for the default" +msgstr "" + +#: webform.module:525 +msgid "E-mail subject" +msgstr "נושא הדואר האלקטרוני" + +#: webform.module:526 +msgid "Form e-mails will have this subject line. Choose Automatic for the default" +msgstr "" + +#: webform.module:551 +msgid "Unauthorized webform access attempt" +msgstr "נסיון גישה לא מורשה לטופס" + +#: webform.module:586 +msgid "Preview" +msgstr "הצג" + +#: webform.module:589 +msgid "Submit" +msgstr "הגש" + +#: webform.module:621 +msgid "Page called out of order" +msgstr "" + +#: webform.module:649 +msgid "Name of the field. This is used as a descriptive label and as the key when saving data in the database." +msgstr "" + +#: webform.module:652 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "" + +#: webform.module:659;666;678;685;706 +msgid "Default value" +msgstr "ערך ברירת מחדל" + +#: webform.module:659 +msgid "The default value of a email field is always the users email address if he/she is logged in." +msgstr "" + +#: webform.module:660;672;691 +msgid "Width" +msgstr "רוחב" + +#: webform.module:662;674 +msgid "Width of the textfield." +msgstr "רוחב שדה הטקסט" + +#: webform.module:668 +msgid "The default value of the field." +msgstr "ערך ברירת המחדל של השדה." + +#: webform.module:680 +msgid "The value of the field." +msgstr "ערך השדה." + +#: webform.module:687 +msgid "The default value of the area." +msgstr "ערך ברירת המחדל של האיזור." + +#: webform.module:693 +msgid "Width of the textarea." +msgstr "רוחב איזור הטקסט" + +#: webform.module:695 +msgid "Height" +msgstr "גובה" + +#: webform.module:697 +msgid "Height of the textarea." +msgstr "גובה איזור הטקסט." + +#: webform.module:701 +msgid "Options" +msgstr "אפשרויות" + +#: webform.module:703 +msgid "Enter one option per line." +msgstr "יש להכניס אפשרות אחת לשורה." + +#: webform.module:708 +msgid "The preselected value." +msgstr "הערך הנבחר מראש." + +#: webform.module:711 +msgid "Multiple" +msgstr "מרובה" + +#: webform.module:713 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "סימון אפשרות זו יאפשר לממלא הטופס לבחור ערכים מרובים." + +#: webform.module:714 +msgid "Listbox" +msgstr "רשימת בחירה" + +#: webform.module:716 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "סימון אפשרות זו יאפשר לבחור רכיב מסוג רשימת בחירה, במקום רשימת כפתורי רדיו או תיבות סימון." + +#: webform.module:747 +msgid "Done" +msgstr "בוצע" + +#: webform.module:748 +msgid "Warning: This button will accept your changes as sub-part of the edit. You will still have to select <b>'submit'</b> on the next screen to make your changes permanent." +msgstr "" + +#: webform.module:766 +msgid "Trying to post to webform from external domain." +msgstr "" + +#: webform.module:768 +msgid "Visit referer" +msgstr "" + +#: webform.module:769 +msgid "You are not allowed to post to this form from an external domain." +msgstr "" + +#: webform.module:778 +msgid "You are not allowed to submit data using this form." +msgstr "אינך מורשה להגיש נתונים תוך שימוש בטופס זה." + +#: webform.module:800 +msgid "Form submission from: " +msgstr "טופס הוגש מ: " + +#: webform.module:838 +msgid "Submission posted to " +msgstr "הוגש ל" + +#: webform.module:966 +msgid "You have not completed the form. %s is a mandatory field." +msgstr "לא השלמת למלא את הטופס. %s הוא שדה חובה." + +#: webform.module:1018 +msgid "Submitted on" +msgstr "הוגש ב" + +#: webform.module:1022 +msgid "Submitted by user" +msgstr "הוגש על ידי" + +#: webform.module:1025 +msgid "Submitted by anonymous user" +msgstr "הוגש על ידי גולש שטרם נרשם" + +#: webform.module:1027 +msgid "Submitted values are" +msgstr "הערכים שהוגשו הם" + +#: webform.module:1261 +msgid "Go back" +msgstr "לך אחורה" + +#: webform.module:72 +msgid "maintain webforms" +msgstr "ניהול טפסים" + +#: webform.module:72 +msgid "create webforms" +msgstr "יצירת טפסים" + +#: webform.module:72 +msgid "use all webforms" +msgstr "שימוש בכל הטפסים" + +#: webform.inc:11 +msgid "Title" +msgstr "כותרת" + +#: webform.inc:12;321;390 +msgid "View" +msgstr "הצג" + +#: webform.inc:14 +msgid "Operations" +msgstr "פעולות" + +#: webform.inc:51 +msgid "Do you really want to delete all submissions for this form?" +msgstr "האמנם ברצונך למחוק את כל המידע שהוגש בעזרת טופס זה?" + +#: webform.inc:52 +msgid "Do you really want to delete <strong>all</strong> submissions for this form?" +msgstr "האמנם ברצונך למחוק את כל המידע שהוגש בעזרת טופס זה?" + +#: webform.inc:52;72 +msgid "This action cannot be undone." +msgstr "אי אפשר לבטל פעולה זו." + +#: webform.inc:71;72 +msgid "Do you really want to delete this form submission?" +msgstr "האמנם ברצונך למחוק הגשת טופס זו?" + +#: webform.inc:149 +msgid "#" +msgstr "" + +#: webform.inc:286 +msgid "Date" +msgstr "תאריך" + +#: webform.inc:286 +msgid "User" +msgstr "משתמש" + +#: webform.inc:286 +msgid "Action" +msgstr "פעולה" + +#: webform.inc:322;391 +msgid "Delete" +msgstr "מחיקה" + +#: webform.inc:502 +msgid "Unique Users Only" +msgstr "משתמשים ייחודיים בלבד" + +#: webform.inc:502 +msgid "Unique IPs Only" +msgstr "כתובות IP ייחודיות בלבד" + +#: webform.inc:503 +msgid "Analog Bar" +msgstr "בר אנלוגי" + +#: webform.inc:503 +msgid "Percentage" +msgstr "אחוזים" + +#: webform.inc:503 +msgid "Tallies" +msgstr "חישובים" + +#: webform.inc:503 +msgid "Covariance Matrix" +msgstr "" + +#: webform.inc:605 +msgid "Q" +msgstr "" + +#: webform.inc:605 +msgid "choice" +msgstr "בחירה" + +#: webform.inc:605 +msgid "responses" +msgstr "תגובות" + +#: webform.inc:661 +msgid "Left Blank" +msgstr "הושאר ריק" + +#: webform.inc:661 +msgid "Default" +msgstr "ברירת מחדל" + +#: webform.inc:661 +msgid "User entered value" +msgstr "ערך שהוכנס על ידי המשתמש" + +#: webform.inc:661 +msgid "Average submission length in words (ex blanks)" +msgstr "אורך הטופס המוגש הממוצע במילים (לא כולל רווחים)" + +#: webform.inc:28 webform.module:282 +msgid "submissions" +msgstr "הגשות" + +#: webform.inc:29 webform.module:287 +msgid "analysis" +msgstr "ניתוח תוצאות" + +#: webform.inc:30 webform.module:292 +msgid "table" +msgstr "טבלה" + +#: webform.inc:31 webform.module:297 +msgid "download" +msgstr "הורדה" + +#: webform.inc:33 webform.module:302 +msgid "clear" +msgstr "נקה" + +#: webform.inc:84 webform_report.inc:42 +msgid "Delete" +msgstr "מחק" + +#: webform.module:389;446;968;1006 components/markup.inc:38 +msgid "Preview" +msgstr "הצג" + +#: components/date.inc:24 components/time.inc:25 +msgid "Timezone" +msgstr "איזור זמן" + +#: components/date.inc:32 components/time.inc:33 +msgid "Observe Daylight Savings" +msgstr "שמור על שעון קיץ" + +#: components/date.inc:35 components/time.inc:36 +msgid "Automatically adjust the time during daylight savings." +msgstr "כוונון אוטומטי של הזמן בזמן שעון קיץ." + +#: components/date.inc:87 components/time.inc:102 +msgid "This field is required." +msgstr "שדה זה הוא שדה חובה." + +#: components/email.inc:31 components/textarea.inc:24 components/textfield.inc:24 +msgid "Width" +msgstr "רוחב" + +#: components/textarea.inc:40 components/textfield.inc:42 +msgid "Disabled" +msgstr "מבוטל" + +#: components/textarea.inc:42 components/textfield.inc:44 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "" + +#: webform_report.inc:26;62 +msgid "#" +msgstr "" + +#: webform_report.inc:27 +msgid "Submitted" +msgstr "הוגש" + +#: webform_report.inc:63 +msgid "Time" +msgstr "זמן" + +#: webform_report.inc:64 +msgid "IP Address" +msgstr "כתובת IP" + +#: webform_report.inc:208 +msgid "Q" +msgstr "" + +#: webform_report.inc:209 +msgid "responses" +msgstr "תגובות" + +#: webform.install:117 +msgid "Webform module installed module tables successfully." +msgstr "" + +#: webform.install:120 +msgid "The installation of webform module was unsuccessful." +msgstr "" + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "" + +#: components/captcha.inc:13 +msgid "Using captcha components in webform requires the <a href='http://drupal.org/project/captcha'>Captcha</a> and <a href='http://drupal.org/node/52349'>Textimage</a> modules." +msgstr "" + +#: components/captcha.inc:27 +msgid "Captchas are always mandatory" +msgstr "" + +#: components/captcha.inc:80 +msgid "Unable to render captcha field because the captcha module is not available." +msgstr "" + +#: components/captcha.inc:130 +msgid "Require a question to prove the user is human. Requires <a href='http://drupal.org/project/captcha'>Captcha</a> module." +msgstr "" + +#: components/email.inc:15 +msgid "User email as default" +msgstr "כתובת הדואר האלקטרוני של המשתמש כברירת מחדל" + +#: components/email.inc:18 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "" + +#: components/email.inc:23 +msgid "CC submission to this email" +msgstr "שלח עותק של הטופס שהוגש לכתובת זו" + +#: components/email.inc:26 +msgid "Check this option if the email specified in this component should get a CC submission." +msgstr "" + +#: components/email.inc:27 +msgid "Note that this opens the risk that the form can be used to send emails to any address and might be missused as a spam gateway." +msgstr "" + +#: components/email.inc:80 +msgid "'%value' is not a valid email address" +msgstr "'%value' אינה כתובת דואר אלקטרוני תקינה" + +#: components/email.inc:105 +msgid "A textfield that automatically fills in logged-in users e-mail." +msgstr "" + +#: components/fieldset.inc:15 +msgid "Collapsible" +msgstr "מתכווץ" + +#: components/fieldset.inc:17 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "" + +#: components/fieldset.inc:22 +msgid "Collapsed by Default" +msgstr "מכווץ כברירת מחדל" + +#: components/fieldset.inc:24 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "" + +#: components/fieldset.inc:74 +msgid "Fieldsets allow you to organize complex webforms into groups of fields." +msgstr "" + +#: components/hidden.inc:69 +msgid "Create a field which is not visible to the user, but is recorded with the submission." +msgstr "" + +#: components/hidden.inc:99 +msgid "Empty" +msgstr "ריק" + +#: components/hidden.inc:100 +msgid "Non-empty" +msgstr "לא ריק" + +#: components/markup.inc:18 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "" + +#: components/markup.inc:73 +msgid "Presents a markup area of text. Does not render a field." +msgstr "" + +#: components/select.inc:15 +msgid "Options" +msgstr "אפשרויות" + +#: components/select.inc:17 +msgid "A list of selectable options. One option per line." +msgstr "רשימת אפשרויות בחירה, אפשרות אחת לשורה." + +#: components/select.inc:27 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "ערך ברירת המחדל של השדה. לבחירה מרובה, אפשר להשתמש בפסיקים כדי להפריד ברירות מחדל מרובות." + +#: components/select.inc:34 +msgid "Multiple" +msgstr "מרובה" + +#: components/select.inc:37 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "סימון אפשרות זו יאפשר למשתמש בטופס לבחור ערכים מרובים." + +#: components/select.inc:41 +msgid "Listbox" +msgstr "רשימת בחירה" + +#: components/select.inc:44 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "" + +#: components/select.inc:219 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "מאפשר יצירת תיבות סימון, כפתורי רדיו, או תפריטי בחירה." + +#: components/textarea.inc:32 +msgid "Height" +msgstr "גובה" + +#: components/textarea.inc:34 +msgid "Height of the textfield." +msgstr "גובה שדה הטקסט." + +#: components/textarea.inc:100 +msgid "A large text area that allows for multiple lines of input." +msgstr "איזור טקסט גדול המאפשר שורות טקסט מרובות." + +#: components/textfield.inc:33 +msgid "Maxlength" +msgstr "אורך מקסימלי" + +#: components/textfield.inc:35 +msgid "Maxlength of the textfield." +msgstr "אורך מקסימלי של שדה הטקסט." + +#: components/textfield.inc:101 +msgid "Basic textfield type." +msgstr "שדה טקסט בסיסי." + +#: webform.module:278;1216 +msgid "Results" +msgstr "תוצאות" + +#: components/file.inc:18 +msgid "Select the types of uploads you would like to allow." +msgstr "בחר את סוגי הקבצים שברצונך לאפשר את טעינתם." + +#: components/file.inc:22 +msgid "Web Images" +msgstr "תמונות רשת" + +#: components/file.inc:28 +msgid "Desktop Images" +msgstr "תמונות שולחניות" + +#: components/file.inc:34 +msgid "Documents" +msgstr "מסמכים" + +#: components/file.inc:40 +msgid "Media" +msgstr "מדיה" + +#: components/file.inc:46 +msgid "Archives" +msgstr "ארכיבים" + +#: components/file.inc:52 +msgid "Additional Extensions" +msgstr "סיומות נוספות" + +#: components/file.inc:54 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "" + +#: components/file.inc:61 +msgid "Max Upload Size" +msgstr "גודל טעינה מקסימלי" + +#: components/file.inc:63 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "מהו גודל הקובץ המקסימלי שמשתמש יוכל לטעון (בקילובייט)" + +#: components/file.inc:70 +msgid "Upload Directory" +msgstr "ספריית טעינתה" + +#: components/file.inc:72 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "קבצים הנטענים על ידי טפסי רשת נשמרים תמיד בתיקיית הקבצים של האתר. אופציונלית, ניתן לציין תיקיית משנה שבתוכה יישמרו הקבצים" + +#: components/file.inc:154 +msgid "Category" +msgstr "סיווג" + +#: components/file.inc:154 +msgid "Types" +msgstr "סוגים" + +#: components/file.inc:198 +msgid "%fieldname field is required." +msgstr "השדה %fieldname הוא שדה חובה." + +#: components/file.inc:231 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "" + +#: components/file.inc:236 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "" + +#: components/file.inc:253 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "" + +#: components/file.inc:259 +msgid "The uploaded file %filename was unable to be saved. The destination directory does not exist." +msgstr "" + +#: components/file.inc:309 +msgid "User uploaded file" +msgstr "" + +#: components/file.inc:310 +msgid "Average uploaded file size" +msgstr "גודל הקובץ הממוצע שנטען על ידי המשתמש" + +#: components/time.inc:135 +msgid " field is required." +msgstr " - חובה למלא ערך" + +#: components/time.inc:135 +msgid "field is required." +msgstr " - חובה למלא ערך" + +#: components/time.inc:135 +msgid "!name field is required." +msgstr "'!name' - חובה למלא את השדה" diff --git a/sites/all/modules/webform/translations/hu.po b/sites/all/modules/webform/translations/hu.po new file mode 100644 index 0000000000000000000000000000000000000000..7428af279af71d8103bb2cc8634af0fa1ea42a71 --- /dev/null +++ b/sites/all/modules/webform/translations/hu.po @@ -0,0 +1,1809 @@ +# FEHÉR János (http://mindworks.hu) <feher.janos _at- mindworks.hu>, 2007. +msgid "" +msgstr "" +"Project-Id-Version: webform-hu\n" +"POT-Creation-Date: 2008-08-31 12:02+0200\n" +"PO-Revision-Date: 2008-08-31 22:45+0100\n" +"Last-Translator: FEHÉR János (http://mindworks.hu) <feher.janos _at- " +"mindworks.hu>\n" +"Language-Team: Hungarian <Drupal.hu Fordítási Csapat <forditas [at] drupal." +"hu>>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: webform/webform-confirmation.tpl.php:23 webform/webform_report.inc:93 +msgid "Go back to the form" +msgstr "Vissza az űrlapra" + +#: webform/webform-mail.tpl.php:26 +msgid "Submitted on @date" +msgstr "Beküldve: @date" + +#: webform/webform-mail.tpl.php:29 +msgid "Submitted by user: @username [@ip_address]" +msgstr "Beküldte: @username [@ip_address]" + +#: webform/webform-mail.tpl.php:31 +msgid "Submitted by anonymous user: [@ip_address]" +msgstr "Névtelenül küldték be [@ip_address]" + +#: webform/webform-mail.tpl.php:35 +msgid "Submitted values are" +msgstr "A beküldött értékek" + +#: webform/webform-mail.tpl.php:48 +msgid "The results of this submission may be viewed at:" +msgstr "A űrlapra beküldött eredmények megtekinthetőek itt:" + +#: webform/webform_components.inc:39;130;355 +msgid "Weight" +msgstr "Súly" + +#: webform/webform_components.inc:44;130;320 +msgid "Mandatory" +msgstr "Szükséges" + +#: webform/webform_components.inc:50;130 +msgid "E-mail" +msgstr "E-mail" + +#: webform/webform_components.inc:92 +msgid "Add" +msgstr "Hozzáad" + +#: webform/webform_components.inc:98;382 webform/webform.module:1457;1474;1592 +msgid "Submit" +msgstr "Beküldés" + +#: webform/webform_components.inc:104;244 +msgid "Publish" +msgstr "Megjelenítés" + +#: webform/webform_components.inc:130 webform/webform.module:860;1301 +msgid "Name" +msgstr "Név" + +#: webform/webform_components.inc:130 webform/webform.module:861 +msgid "Type" +msgstr "Típus" + +#: webform/webform_components.inc:130 webform/components/markup.inc:17 +msgid "Value" +msgstr "Érték" + +#: webform/webform_components.inc:130 webform/webform_report.inc:47 +#: webform/webform.module:2075 +msgid "Operations" +msgstr "Műveletek" + +#: webform/webform_components.inc:135 +msgid "New component name" +msgstr "Új összetevő neve" + +#: webform/webform_components.inc:191 webform/webform_report.inc:78 +#: webform/webform.module:2086;235 +msgid "Edit" +msgstr "Szerkesztés" + +#: webform/webform_components.inc:192 +msgid "Clone" +msgstr "Másolás" + +#: webform/webform_components.inc:193;472 webform/webform_report.inc:79 +#: webform/webform_submissions.inc:105 webform/webform.module:245 +msgid "Delete" +msgstr "Törlés" + +#: webform/webform_components.inc:215 +msgid "No Components, add a component below." +msgstr "Nincsenek hozzáadott összetevők." + +#: webform/webform_components.inc:247 +msgid "Your webform has been published." +msgstr "Az űrlap elérhető lett." + +#: webform/webform_components.inc:257 +msgid "The component positions and mandatory values have been updated." +msgstr "Az összetevők sorrendje és szükségességük állapota frissítve lett." + +#: webform/webform_components.inc:262 +msgid "Edit component: @name (@type)" +msgstr "Összetevő szerkesztése: @name (@type)" + +#: webform/webform_components.inc:288 +msgid "Label" +msgstr "Címke" + +#: webform/webform_components.inc:289 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "Az űrlap megjelenésekor a mezőt leíró címke szövege." + +#: webform/webform_components.inc:297 webform/webform.module:636;1301 +msgid "Description" +msgstr "Leírás" + +#: webform/webform_components.inc:298 +msgid "" +"A short description of the field used as help for the user when he/she uses " +"the form." +msgstr "" +"A mező rövid leírásával a felhasználó segíthető az űrlap helyes kitöltésében." + +#: webform/webform_components.inc:304 +msgid "Advanced settings" +msgstr "Haladó beállítások" + +#: webform/webform_components.inc:313 +msgid "Field Key" +msgstr "Mező kulcs" + +#: webform/webform_components.inc:314 +msgid "" +"Enter a machine readable key for this form element. May contain only " +"lowercase alphanumeric characters and underscores. This key will be used as " +"the name attribute of the form element. This value has no effect on the way " +"data is saved, but may be helpful if using Additional Processing or " +"Validation code." +msgstr "" +"Egy gépek által olvasható nevet kell megadni kulcsnak. Csak kisbetűket, " +"számokat és aláhúzást tartalmazhat. Ez a kulcs az űrlap elem HTML-kódjában a name " +"tulajdonság lesz. Ez az érték nincs kihatással arra, hogy az adat hogyan " +"lesz lementve, de fontos lehet további feldolgozó modulok vagy ellenörző funkciók " +"számára." + +#: webform/webform_components.inc:322 +msgid "Check this option if the user must enter a value." +msgstr "Be kell jelölni ha a kitöltőnek muszáj megadnia egy értéket." + +#: webform/webform_components.inc:328 +msgid "Include in e-mails" +msgstr "Beágyazás e-mailekbe" + +#: webform/webform_components.inc:330 +msgid "" +"If checked, submitted values from this component will be included in e-mails." +msgstr "" +"Ha be van kapcsolva, az összetevő kitöltött értékei az e-mailekben is szerepelni fognak." + +#: webform/webform_components.inc:336 +msgid "Root" +msgstr "Gyökér" + +#: webform/webform_components.inc:344 +msgid "Parent Fieldset" +msgstr "Szülő mezőcsoport" + +#: webform/webform_components.inc:346 +msgid "" +"Optional. You may organize your form by placing this component inside " +"another fieldset." +msgstr "" +"Választható. Az űrlap úgy is rendezhető, hogy ez az összetevő egy másik " +"mezőcsoportban szerepel." + +#: webform/webform_components.inc:357 +msgid "" +"Optional. In the menu, the heavier items will sink and the lighter items " +"will be positioned nearer the top." +msgstr "" +"Választható. A menüben a nagyobb súlyozású elemek a lista alján, a " +"könnyebbek a tetején lesznek." + +#: webform/webform_components.inc:369 +msgid "" +"The webform component of type @type does not have an edit function defined." +msgstr "" +"@type típusú összetevő nem rendelkezik szerkesztési lehetőséggel." + +#: webform/webform_components.inc:396 +msgid "" +"The field key %field_key is invalid. Please include only lowercase " +"alphanumeric characters and underscores." +msgstr "" +"Az alábbi mezőkulcs nem megfelelő: %field_key. A mezőkulcsok csak kisbetűket, " +"számokat és aláhúzást tartalmazhatnak." + +#: webform/webform_components.inc:401 +msgid "" +"The field key %field_key is already in use by the field labeled %" +"existing_field. Please use a unique key." +msgstr "" + +#: webform/webform_components.inc:435 +msgid "Component %name cloned." +msgstr "%name összetevő le lett másolva." + +#: webform/webform_components.inc:439 +msgid "Component %name updated." +msgstr "%name összetevő nem található." + +#: webform/webform_components.inc:443 +msgid "New component %name added." +msgstr "Az új összetevő hozzá lett adva %name néven." + +#: webform/webform_components.inc:464 +msgid "Delete the %name fieldset?" +msgstr "Biztosan törölhető ez a mezőcsoport: %name?" + +#: webform/webform_components.inc:465 +msgid "" +"This will immediately delete the %name fieldset and all children elements " +"within %name from the %webform webform. This cannot be undone." +msgstr "" + +#: webform/webform_components.inc:468 +msgid "Delete the %name component?" +msgstr "Biztosan törölhető ez az összetevő: %name?" + +#: webform/webform_components.inc:469 +msgid "" +"This will immediately delete the %name component from the %webform webform. " +"This cannot be undone." +msgstr "" + +#: webform/webform_components.inc:476 +msgid "Component %name deleted." +msgstr "Az összetevő törölve lett: %name." + +#: webform/webform_report.inc:23 +#, fuzzy +msgid "Submissions for %user" +msgstr "Űrlap-eredmények" + +#: webform/webform_report.inc:40;114 +msgid "#" +msgstr "#" + +#: webform/webform_report.inc:41;115 +msgid "Submitted" +msgstr "Elküldve" + +#: webform/webform_report.inc:44;116 +msgid "User" +msgstr "Felhasználó" + +#: webform/webform_report.inc:45;117;265 +msgid "IP Address" +msgstr "IP cím" + +#: webform/webform_report.inc:76 webform/webform.module:2074;225 +msgid "View" +msgstr "Megtekint" + +#: webform/webform_report.inc:88;168;341 +msgid "" +"There are no submissions for this form. <a href=\"!url\">View this form</a>." +msgstr "" + +#: webform/webform_report.inc:195 +msgid "Clear Form Submissions" +msgstr "Az űrlap eredményeinek törlése" + +#: webform/webform_report.inc:199 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "Biztosan törlve legyen az űrlapra adott összes válasz?" + +#: webform/webform_report.inc:201 webform/webform.module:2087;195 +msgid "Clear" +msgstr "Törlés" + +#: webform/webform_report.inc:201 webform/webform_submissions.inc:105 +msgid "Cancel" +msgstr "Mégsem" + +#: webform/webform_report.inc:209 +msgid "Webform %title entries cleared." +msgstr "Az űrlap eredményei törölve lettek: %title" + +#: webform/webform_report.inc:264 +msgid "Submission Details" +msgstr "Beküldés részletei" + +#: webform/webform_report.inc:265 +msgid "Serial" +msgstr "Sorszám" + +#: webform/webform_report.inc:265 +msgid "SID" +msgstr "SID" + +#: webform/webform_report.inc:265 +#, fuzzy +msgid "Time" +msgstr "Cím" + +#: webform/webform_report.inc:265 +msgid "UID" +msgstr "UID" + +#: webform/webform_report.inc:265 +msgid "Username" +msgstr "Felhasználói név" + +#: webform/webform_report.inc:320 +msgid "Q" +msgstr "M" + +#: webform/webform_report.inc:321 +msgid "responses" +msgstr "válaszok" + +#: webform/webform_submissions.inc:98 +msgid "Delete Form Submission" +msgstr "Űrlap eredmények törlése" + +#: webform/webform_submissions.inc:103 +msgid "Are you sure you want to delete this submission?" +msgstr "Biztosan törölve legyen ez az űrlap-eredmény?" + +#: webform/webform_submissions.inc:110 +msgid "Submission deleted." +msgstr "Eredmény törölve." + +#: webform/webform.module:22 +#, fuzzy +msgid "" +"Webforms are forms and questionnaires. To add one, select <a href=\"!url" +"\">Create content -> Webform</a>." +msgstr "" +"A modullal űrlapok és kérdőívek hozhatók létre. Egy új űrlap létrehozása a " +"<strong>tartalom beküldése -> űrlap</strong> módon lehetséges. Lentebb " +"különböző biztonsági és hibakeresési beállítások adhatóak meg." + +#: webform/webform.module:25 +msgid "" +"<p>This module lets you create forms or questionnaires and define their " +"content. Submissions from these forms are stored in the database and " +"optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the " +"actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be " +"displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will be " +"sent. If no email address is specified, no e-mail will be sent when " +"submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will be " +"used to populate the return e-mail address on any sent e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that will be " +"used to populate the subject e-mail field on any sent e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown after " +"you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database table " +"<i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" + +#: webform/webform.module:41 +msgid "" +"A webform can be a questionnaires, contact or request forms. It can be used " +"to let visitors make contact, register for a event or to enable a complex " +"survey." +msgstr "" +"Egy űrlap lehet kérdőív, kapcsolatfelvételi lehetőség vagy igénylőlap is. " +"Segítségével a látogatók felvehetik a webhely üzemeltetőivel a kapcsolatot, " +"regisztrálhatnak egy rendezvényre vagy akár egy komplex felmérés kérdéseire " +"is válaszolhatnak." + +#: webform/webform.module:44 +msgid "" +"This page displays all the components currently configured for this webform " +"node. You may add any number of components to the form, even multiple of the " +"same type. To add a new component, fill in a name and select a type from the " +"fields at the bottom of the table. Submit the form to create the new " +"component or update any changed form values." +msgstr "" + +#: webform/webform.module:45 +msgid "Click on any existing component's name to edit its settings." +msgstr "" + +#: webform/webform.module:76 +msgid "View and edit all the available webforms on your site." +msgstr "A webhelyen levő összes űrlap megtekintése és szerkesztése." + +#: webform/webform.module:87 +msgid "Global configuration of webform functionality." +msgstr "Az űrlapkezelő funkció általános beállításai" + +#: webform/webform.module:406;82 webform/webform.info:0 +msgid "Webform" +msgstr "Űrlap" + +#: webform/webform.module:408 +msgid "" +"Create a new form or questionnaire accessible to users. Submission results " +"and statistics are recorded and accessible to privileged users." +msgstr "" + +#: webform/webform.module:582 +msgid "Go to form" +msgstr "Vissza az űrlapra" + +#: webform/webform.module:584 +msgid "View this form." +msgstr "Az űrlap megtekintése." + +#: webform/webform.module:618 +msgid "Webform Settings" +msgstr "Űrlapok beállításai" + +#: webform/webform.module:627;2073 +msgid "Title" +msgstr "Cím" + +#: webform/webform.module:637 +msgid "Text to be shown as teaser and before the form." +msgstr "Az a szöveg, amely bevezetőként jelenik meg az űrlap előtt." + +#: webform/webform.module:646 +msgid "Confirmation message or redirect URL" +msgstr "Beküldés utáni üzenet vagy URL az átirányításhoz" + +#: webform/webform.module:647 +msgid "" +"Message to be shown upon successful submission or a path to a redirect page. " +"Redirect pages must start with <em>http://</em> for external sites or " +"<em>internal:</em> for an internal path. i.e. <em>http://www.example.com</" +"em> or <em>internal:node/10</em>" +msgstr "" + +#: webform/webform.module:659 +msgid "Webform access control" +msgstr "Űrlapok hozzáférésének szabályozása" + +#: webform/webform.module:664 +msgid "" +"These permissions affect which roles can submit this webform. It does not " +"prevent access to the webform page. If needing to prevent access to the " +"webform page entirely, use a content access module such as <a href=\"http://" +"drupal.org/project/taxonomy_access\">Taxonomy Access</a> or <a href=\"http://" +"drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." +msgstr "" + +#: webform/webform.module:671 +msgid "Roles that can submit this webform" +msgstr "Azok a csoportok, amelyek kitölthetik ezt az űrlapot" + +#: webform/webform.module:672 +msgid "" +"Uncheck all roles to prevent new submissions. The %authenticated role " +"applies to any user signed into the site, regardless of other assigned roles." +msgstr "" + +#: webform/webform.module:679 +#, fuzzy +msgid "Webform mail settings" +msgstr "Űrlapok beállításai" + +#: webform/webform.module:689 +msgid "E-mail to address" +msgstr "Az email címzettje" + +#: webform/webform.module:691 +#, fuzzy +msgid "" +"Form submissions will be e-mailed to this address. Leave blank for none. " +"Multiple e-mail addresses may be separated by commas." +msgstr "" +"A beküldött űrlapok erre az email címre lesznek elküldve. Ha erre nincs " +"szükség, akkor üresen kell hagyni." + +#: webform/webform.module:699 +msgid "Conditional e-mail recipients" +msgstr "" + +#: webform/webform.module:700 +msgid "" +"The settings below allow you to send e-mails to multiple recipients based " +"off the value of a component." +msgstr "" + +#: webform/webform.module:724 +msgid "E-mail from name" +msgstr "Az email feladój" + +#: webform/webform.module:725 +msgid "" +"After adding components to this form any email, select, or hidden form " +"element may be selected as the sender's name for e-mails." +msgstr "" + +#: webform/webform.module:729 +msgid "E-mail from address" +msgstr "Az email feladójának címe" + +#: webform/webform.module:730 +msgid "" +"After adding components to this form any textfield, select, or hidden form " +"element may be selected as the sender's e-mail address." +msgstr "" + +#: webform/webform.module:734 +msgid "E-mail subject" +msgstr "Az email tárgya" + +#: webform/webform.module:735 +msgid "" +"After adding components to this form any textfield, select, or hidden form " +"element may be selected as the subject for e-mails." +msgstr "" + +#: webform/webform.module:770 +#, fuzzy +msgid "Webform advanced settings" +msgstr "Űrlapok beállításai" + +#: webform/webform.module:778 +msgid "Show complete form in teaser" +msgstr "A teljes űrlap megjelenítése a bevezetőkben" + +#: webform/webform.module:780 +msgid "Display the entire form in the teaser display of this node." +msgstr "" + +#: webform/webform.module:784 +msgid "" +"Limit the number of submissions a user may send within a specified time " +"period" +msgstr "" + +#: webform/webform.module:789 +msgid "Unlimited" +msgstr "Végtelen" + +#: webform/webform.module:803 +msgid "ever" +msgstr "mindig" + +#: webform/webform.module:804 +msgid "every hour" +msgstr "óránként" + +#: webform/webform.module:805 +msgid "every day" +msgstr "naponta" + +#: webform/webform.module:806 +msgid "every week" +msgstr "hetente" + +#: webform/webform.module:813 +#, fuzzy +msgid "Submit button text" +msgstr "Elküldv" + +#: webform/webform.module:815 +msgid "" +"By default the submit button on this form will have the label <em>Submit</" +"em>. Enter a new title here to override the default." +msgstr "" + +#: webform/webform.module:820 +#, fuzzy +msgid "Additional Validation" +msgstr "További kiegészítések" + +#: webform/webform.module:821 +msgid "" +"Enter PHP code to perform additional validation for this form. Include the " +"<?php ?> tags. $form and $form_state are available variables. If " +"validation fails, use the form_set_error function to prevent the form from " +"being submitted. Use the same syntax as a _validate function used in the <a " +"href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html" +"\">Forms API</a>." +msgstr "" + +#: webform/webform.module:829 +#, fuzzy +msgid "Additional Processing" +msgstr "További kiegészítések" + +#: webform/webform.module:830 +msgid "" +"Enter PHP code to perform additional processing for this form (after the " +"validation). Include the <?php ?> tags. $form and $form_state are " +"available variables, use the same syntax as a _submit function used in the " +"<a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html" +"\">Forms API</a>." +msgstr "" + +#: webform/webform.module:859 +msgid "To" +msgstr "" + +#: webform/webform.module:874 +msgid "No components yet in this webform." +msgstr "Nem lett még összetevő hozzáadva" + +#: webform/webform.module:889 +msgid "Custom" +msgstr "Egyedi" + +#: webform/webform.module:889 +msgid "Component" +msgstr "Összetevő" + +#: webform/webform.module:900 +msgid "Default" +msgstr "Alapértelmezett" + +#: webform/webform.module:921 +msgid "Limit to !count submission(s) !timespan" +msgstr "" + +#: webform/webform.module:934;941 +#, fuzzy +msgid "The entered email address %address is not a valid address." +msgstr "A megadott dátum nem érvényes: %name ." + +#: webform/webform.module:1016 +msgid "" +"The new webform %title has been created. Add new fields to your webform with " +"the form below." +msgstr "" + +#: webform/webform.module:1019 +msgid "" +"This webform is currently unpublished. After finishing your changes to the " +"webform, use the <em>Publish</em> button below." +msgstr "" + +#: webform/webform.module:1147 +msgid "Submissions for this form are closed." +msgstr "" + +#: webform/webform.module:1151 +msgid "" +"You must <a href=\"!login\">login</a> or <a href=\"!register\">register</a> " +"to view this form." +msgstr "" + +#: webform/webform.module:1155 +msgid "You do not have permission to view this form." +msgstr "" + +#: webform/webform.module:1162 +msgid "You have submitted this form the maximum number of times (@count)." +msgstr "" + +#: webform/webform.module:1165;1176 +msgid "You have already submitted this form." +msgstr "Ez az űrlap egyszer már ki lett már töltve." + +#: webform/webform.module:1168 +msgid "You may not submit another entry at this time." +msgstr "Nem tölthető ki mégegyszer az űrlap." + +#: webform/webform.module:1176;1179 +msgid "<a href=\"!url\">View your previous submissions</a>." +msgstr "" + +#: webform/webform.module:1203 +#, fuzzy +msgid "Available components" +msgstr "Elérhető összetevők" + +#: webform/webform.module:1206 +msgid "" +"These are the available field types for your installation of Webform. You " +"may disable any of these components by unchecking its corresponding box. " +"Only checked components will be available in existing or new webforms." +msgstr "" + +#: webform/webform.module:1223 +#, fuzzy +msgid "Default e-mail values" +msgstr "Alapértelmezett e-mail értékek" + +#: webform/webform.module:1230 +#, fuzzy +msgid "From address" +msgstr "Feladó e-mail címe" + +#: webform/webform.module:1232 +msgid "" +"The default sender address for emailed webform results; often the e-mail " +"address of the maintainer of your forms." +msgstr "" + +#: webform/webform.module:1237 +#, fuzzy +msgid "From name" +msgstr "Feladó neve" + +#: webform/webform.module:1239 +msgid "" +"The default sender name which is used along with the default from address." +msgstr "" + +#: webform/webform.module:1244 +#, fuzzy +msgid "Default subject" +msgstr "Alapértelmezett tárgy" + +#: webform/webform.module:1245;2124 +#, fuzzy +msgid "Form submission from: %title" +msgstr "Űrlapbeküldő űrlap" + +#: webform/webform.module:1246 +msgid "The default subject line of any e-mailed results." +msgstr "" + +#: webform/webform.module:1251 +#, fuzzy +msgid "Advanced options" +msgstr "Bővebb beállítások" + +#: webform/webform.module:1259 +#, fuzzy +msgid "Allow cookies for tracking submissions" +msgstr "Sütik használata a kitöltések nyomonkövetésére" + +#: webform/webform.module:1261 +msgid "" +"<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be " +"used to help prevent the same user from repeatedly submitting a webform. " +"This feature is not needed for limiting submissions per user, though it can " +"increase accuracy in some situations. Besides cookies, Webform also uses IP " +"addresses and site usernames to prevent repeated submissions." +msgstr "" + +#: webform/webform.module:1266 +msgid "CSV export delimiter" +msgstr "" + +#: webform/webform.module:1267 +msgid "" +"This is the delimiter used in the CSV/TSV file when downloading webform " +"results. You may want to change this to another character depending on the " +"program with which you anticipate importing results." +msgstr "" + +#: webform/webform.module:1270 +msgid "Comma (,)" +msgstr "" + +#: webform/webform.module:1271 +msgid "Tab (\\t)" +msgstr "" + +#: webform/webform.module:1272 +msgid "Semicolon (;)" +msgstr "" + +#: webform/webform.module:1273 +msgid "Colon (:)" +msgstr "" + +#: webform/webform.module:1274 +msgid "Pipe (|)" +msgstr "" + +#: webform/webform.module:1275 +msgid "Period (.)" +msgstr "" + +#: webform/webform.module:1276 +msgid "Space ( )" +msgstr "Szóköz ( )" + +#: webform/webform.module:1282 +msgid "Webforms debug" +msgstr "Űrlap hibavizsgálata" + +#: webform/webform.module:1284 +msgid "Off" +msgstr "Ki" + +#: webform/webform.module:1284 +msgid "Log submissions" +msgstr "Kitöltések naplózása" + +#: webform/webform.module:1284 +msgid "Full debug" +msgstr "Teljes debug információk" + +#: webform/webform.module:1285 +msgid "" +"Set to \"Log submissions\" to log all submissions in the watchdog. Set to " +"\"Full debug\" to print debug info on submission." +msgstr "" + +#: webform/webform.module:1301 +msgid "Enabled" +msgstr "Engedélyezett" + +#: webform/webform.module:1340 +#, fuzzy +msgid "Submission #@sid" +msgstr "Űrlap-eredmények" + +#: webform/webform.module:1360;1360 +#, fuzzy +msgid "Previous submission" +msgstr "Kitöltések naplózása" + +#: webform/webform.module:1363;1363 +#, fuzzy +msgid "Next submission" +msgstr "Kitöltések naplózása" + +#: webform/webform.module:1367 +#, fuzzy +msgid "Submission Information" +msgstr "Űrlap-eredmények" + +#: webform/webform.module:1376 +msgid "Form: !form" +msgstr "" + +#: webform/webform.module:1379 +#, fuzzy +msgid "Submitted by !name" +msgstr "Felhasználó küldte be" + +#: webform/webform.module:1421 +msgid "Next Page >" +msgstr "Következő oldal >" + +#: webform/webform.module:1422 +msgid "< Previous Page" +msgstr "Előző oldal <" + +#: webform/webform.module:1554 +msgid "The webform component @type is not able to be displayed" +msgstr "Az alábbi típusú űrlap-összetevő nem megjeleníthető: @type" + +#: webform/webform.module:1737 +msgid "Illegal information. Data not submitted." +msgstr "Érvénytelen információ. Az adat nem lett elküldve." + +#: webform/webform.module:1780 +#, fuzzy +msgid "Submission updated." +msgstr "Eredmény törölve." + +#: webform/webform.module:1866 +msgid "Thank you, your submission has been received." +msgstr "" + +#: webform/webform.module:2082;155;207 +msgid "Submissions" +msgstr "Űrlap-eredmények" + +#: webform/webform.module:2083;165 +msgid "Analysis" +msgstr "Analízis" + +#: webform/webform.module:2084;175 +msgid "Table" +msgstr "Táblázat" + +#: webform/webform.module:2085;185 +msgid "Download" +msgstr "Letöltés" + +#: webform/webform.module:2136;2137;2138;2139;2140;2143 +msgid "key" +msgstr "kulcs" + +#: webform/webform.module:2147 +msgid "" +"You may use special tokens in this field that will be replaced with dynamic " +"values." +msgstr "" + +#: webform/webform.module:2149 +msgid "" +"You can use %server[key] to add any of the special PHP <a href=\"http://www." +"php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> " +"variables, %session[key] to add any of the special PHP <a href=\"http://www." +"php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> " +"variables and %get[key] to create prefilled forms from the <a href=\"http://" +"www.php.net/reserved.variables#reserved.variables.get\">URL</a>. %cookie, %" +"request and %post also work with their respective PHP variables. For example " +"%server[HTTP_USER_AGENT], %session[id], or %get[q]." +msgstr "" + +#: webform/webform.module:2151 +msgid "" +"If you are using the profiles module, you can also access all profile data " +"using the syntax %profile[form_name]. If you for example have a profile " +"value named profile_city, add the variable %profile[profile_city]." +msgstr "" + +#: webform/webform.module:2155 +msgid "Token values" +msgstr "" + +#: webform/webform.module:1775;0 +msgid "webform" +msgstr "űrlap" + +#: webform/webform.module:1775 +msgid "Submission posted to %title. <a href=\"!url\">Results</a>. !details" +msgstr "" + +#: webform/webform.module:316 +msgid "create webforms" +msgstr "űrlapok létrehozása" + +#: webform/webform.module:316 +msgid "edit own webforms" +msgstr "saját űrlapok szerkesztése" + +#: webform/webform.module:316 +msgid "edit webforms" +msgstr "űrlapok szerkesztése" + +#: webform/webform.module:316 +msgid "access webform results" +msgstr "űrlapok eredményének megtekintése" + +#: webform/webform.module:316 +msgid "clear webform results" +msgstr "űrlapok eredményeinek türéáse" + +#: webform/webform.module:316 +#, fuzzy +msgid "access own webform submissions" +msgstr "űrlapok eredményének megtekintése" + +#: webform/webform.module:316 +#, fuzzy +msgid "edit own webform submissions" +msgstr "saját űrlapok szerkesztése" + +#: webform/webform.module:316 +#, fuzzy +msgid "edit webform submissions" +msgstr "űrlapok szerkesztése" + +#: webform/webform.module:316 +msgid "use PHP for additional processing" +msgstr "PHP használata további feldolgozáshoz" + +#: webform/webform.module:72 +msgid "Webforms" +msgstr "Űrlapok" + +#: webform/webform.module:93 +msgid "Webform confirmation" +msgstr "Űrlap megerősítése" + +#: webform/webform.module:102 +msgid "Configuration" +msgstr "Beállítások" + +#: webform/webform.module:110 +msgid "Form components" +msgstr "Összetevők" + +#: webform/webform.module:145 +msgid "Results" +msgstr "Eredmények" + +#: webform/webform.module:216 +#, fuzzy +msgid "Webform submission" +msgstr "Kitöltések naplózása" + +#: webform/webform.install:15 +msgid "Table for storing additional properties for webform nodes." +msgstr "" + +#: webform/webform.install:18;96;202;237 +msgid "The node identifier of a webform" +msgstr "" + +#: webform/webform.install:24 +msgid "" +"The confirmation message or URL displayed to the user after submitting a " +"form." +msgstr "" + +#: webform/webform.install:29 +msgid "" +"Boolean value for whether the entire form should be displayed on the teaser." +msgstr "" + +#: webform/webform.install:36 +msgid "The title of the submit button on the form." +msgstr "" + +#: webform/webform.install:42 +msgid "" +"The number of submissions a single user is allowed to submit within an " +"interval. -1 is unlimited." +msgstr "" + +#: webform/webform.install:49 +msgid "" +"The amount of time in seconds that must pass before a user can submit " +"another submission within the set limit." +msgstr "" + +#: webform/webform.install:55 +msgid "The primary e-mail address for receiving submission results." +msgstr "" + +#: webform/webform.install:61 +msgid "The name of the sender in sent submission e-mails." +msgstr "" + +#: webform/webform.install:67 +#, fuzzy +msgid "The address of the sender in sent submission e-mails." +msgstr "A űrlapra beküldött eredmények megtekinthetőek itt:" + +#: webform/webform.install:73 +#, fuzzy +msgid "The subject of sent submission e-mails" +msgstr "A űrlapra beküldött eredmények megtekinthetőek itt:" + +#: webform/webform.install:79 +msgid "PHP code for additional functionality when validating a form." +msgstr "" + +#: webform/webform.install:84 +msgid "PHP code for additional functionality when submitting a form." +msgstr "" + +#: webform/webform.install:93 +msgid "Stores information about components for webform nodes." +msgstr "" + +#: webform/webform.install:103;251 +msgid "" +"The identifier for this component within this node, starts at 0 for each " +"node." +msgstr "" + +#: webform/webform.install:111 +msgid "If this component has a parent fieldset, the cid of that component." +msgstr "" + +#: webform/webform.install:119 +msgid "" +"When the form is displayed and processed, this key can be used to reference " +"the results." +msgstr "" + +#: webform/webform.install:125 +msgid "The label for this component." +msgstr "" + +#: webform/webform.install:131 +msgid "The field type of this component (textfield, select, hidden, etc.)." +msgstr "" + +#: webform/webform.install:137 +msgid "The default value of the component when displayed to the end-user." +msgstr "" + +#: webform/webform.install:142 +msgid "" +"Additional information unique to the display or processing of this component." +msgstr "" + +#: webform/webform.install:147 +msgid "Boolean flag for if this component is required." +msgstr "" + +#: webform/webform.install:154 +msgid "" +"Boolean flag for if submitted values for this component will be included in " +"sent e-mails." +msgstr "" + +#: webform/webform.install:161 +msgid "Determines the position of this component in the form." +msgstr "" + +#: webform/webform.install:172;861 +msgid "" +"Holds access information regarding which roles are allowed to submit which " +"webform nodes. Does not prevent access to the webform node entirely, use the " +"{node_access} table for that purpose." +msgstr "" + +#: webform/webform.install:175;864 +msgid "The node identifier of a webform." +msgstr "" + +#: webform/webform.install:182;871 +msgid "The role identifier." +msgstr "" + +#: webform/webform.install:193 +msgid "Holds general information about submissions outside of field values." +msgstr "" + +#: webform/webform.install:196;244 +msgid "The unique identifier for this submission." +msgstr "" + +#: webform/webform.install:209 +#, fuzzy +msgid "The id of the user that completed this submission." +msgstr "Biztosan törölve legyen ez az űrlap-eredmény?" + +#: webform/webform.install:216 +msgid "Timestamp of when the form was submitted." +msgstr "" + +#: webform/webform.install:222 +msgid "The IP address of the user that submitted the form." +msgstr "" + +#: webform/webform.install:234 +msgid "Stores all submitted field data for webform submissions." +msgstr "" + +#: webform/webform.install:259 +msgid "" +"Usually this value is 0, but if a field has multiple values (such as a time " +"or date), it may require multiple rows in the database." +msgstr "" + +#: webform/webform.install:267 +msgid "" +"The submitted value of this field, may be serialized for some components." +msgstr "" + +#: webform/webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "Segítségével kérdőívek és űrlapok hozhatók létre." + +#: webform/components/date.inc:16 webform/components/email.inc:18 +#: webform/components/hidden.inc:16 webform/components/select.inc:26 +#: webform/components/textarea.inc:16 webform/components/textfield.inc:16 +#: webform/components/time.inc:14 +msgid "Default value" +msgstr "Alapértelmezett érték" + +#: webform/components/date.inc:18 webform/components/email.inc:20 +#: webform/components/hidden.inc:18 webform/components/textarea.inc:18 +#: webform/components/textfield.inc:18 webform/components/time.inc:16 +msgid "The default value of the field." +msgstr "A mező alapértelmezett értéke." + +#: webform/components/date.inc:18 +msgid "" +"Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/" +"html_node/tar_109.html\">GNU Date Input Format</a>. Strings such as today, " +"+2 months, and Dec 9 2004 are all valid." +msgstr "" + +#: webform/components/date.inc:25 webform/components/time.inc:24 +msgid "Timezone" +msgstr "Időzóna" + +#: webform/components/date.inc:27 +msgid "" +"Adjust the date according to a specific timezone. Website timezone is " +"defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "" + +#: webform/components/date.inc:33 webform/components/time.inc:32 +msgid "Observe Daylight Savings" +msgstr "" + +#: webform/components/date.inc:36 webform/components/time.inc:35 +msgid "Automatically adjust the time during daylight savings." +msgstr "" + +#: webform/components/date.inc:42 +msgid "Start year" +msgstr "Kezdő év" + +#: webform/components/date.inc:44 +msgid "The first year that is allowed to be entered." +msgstr "Az a legkorábbi év, amely még megadható." + +#: webform/components/date.inc:51 +msgid "End year" +msgstr "Záró év" + +#: webform/components/date.inc:53 +msgid "The last year that is allowed to be entered." +msgstr "A legutolsó év, ami még megadható." + +#: webform/components/date.inc:60 +#, fuzzy +msgid "Use a textfield for year" +msgstr "Egyszerű szövegmező" + +#: webform/components/date.inc:62 +msgid "" +"If checked, the generated date field will use a textfield for the year. " +"Otherwise it will use a select list." +msgstr "" + +#: webform/components/date.inc:167 +#, fuzzy +msgid "Year" +msgstr "Törlés" + +#: webform/components/date.inc:184 +#, fuzzy +msgid "!name field is required." +msgstr " mező szükséges" + +#: webform/components/date.inc:191 +#, fuzzy +msgid "Entered !name is not a valid date." +msgstr "A megadott dátum nem érvényes: %name ." + +#: webform/components/date.inc:198 +msgid "The entered date needs to be between the years @start and @end." +msgstr "" + +#: webform/components/date.inc:271 +msgid "Presents month, day, and year fields." +msgstr "Megjeleníti az év, hónap, nap mezőket." + +#: webform/components/date.inc:344 webform/components/email.inc:180 +#: webform/components/file.inc:469 webform/components/textarea.inc:137 +#: webform/components/textfield.inc:192 webform/components/time.inc:291 +msgid "Left Blank" +msgstr "Kitöltetlen" + +#: webform/components/date.inc:345 webform/components/email.inc:181 +#: webform/components/textarea.inc:138 webform/components/textfield.inc:193 +#: webform/components/time.inc:292 +msgid "User entered value" +msgstr "A felhasználó által megadott érték" + +#: webform/components/email.inc:29 +msgid "User email as default" +msgstr "A felhasználó email címe az alapértelmezett." + +#: webform/components/email.inc:31 +msgid "" +"Set the default value of this field to the user email, if he/she is logged " +"in." +msgstr "" +"Az email mező alapértelmezett értéke a felhasználó email címe lesz, " +"feltéve, hogy bejelentkezett." + +#: webform/components/email.inc:37 webform/components/file.inc:96 +#: webform/components/textarea.inc:25 webform/components/textfield.inc:25 +msgid "Width" +msgstr "Szélesség" + +#: webform/components/email.inc:39 webform/components/textarea.inc:27 +#: webform/components/textfield.inc:27 +msgid "Width of the textfield." +msgstr "A szövegmező hossza." + +#: webform/components/email.inc:39 webform/components/file.inc:98 +#: webform/components/textarea.inc:27;35 webform/components/textfield.inc:27 +msgid "Leaving blank will use the default size." +msgstr "" + +#: webform/components/email.inc:45 webform/components/hidden.inc:29 +#: webform/components/select.inc:49 +#, fuzzy +msgid "E-mail a submission copy" +msgstr "A kitöltött űrlap elküldése e-mailben" + +#: webform/components/email.inc:48 webform/components/hidden.inc:32 +#: webform/components/select.inc:52 +msgid "" +"Check this option if this component contains an e-mail address that should " +"get a copy of the submission. Emails are sent individually so other emails " +"will not be shown to the recipient." +msgstr "" + +#: webform/components/email.inc:52 webform/components/textarea.inc:41 +#: webform/components/textfield.inc:61 +msgid "Disabled" +msgstr "Tiltott" + +#: webform/components/email.inc:54 webform/components/textarea.inc:43 +#: webform/components/textfield.inc:63 +msgid "" +"Make this field non-editable. Useful for setting an unchangeable default " +"value." +msgstr "" + +#: webform/components/email.inc:116 +msgid "%value is not a valid email address." +msgstr "Érvénytelen email cím: %value" + +#: webform/components/email.inc:145 +msgid "A textfield that automatically fills in a logged-in user's e-mail." +msgstr "" + +#: webform/components/email.inc:182 webform/components/hidden.inc:124 +#: webform/components/textarea.inc:139 webform/components/textfield.inc:194 +msgid "Average submission length in words (ex blanks)" +msgstr "A válaszok átlagos hossza szavakban (a szóközök nem számítanak bele)" + +#: webform/components/fieldset.inc:16 +msgid "Collapsible" +msgstr "Összecsukható" + +#: webform/components/fieldset.inc:18 +msgid "" +"If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "" + +#: webform/components/fieldset.inc:23 +msgid "Collapsed by Default" +msgstr "Alapértelmezettként becsukva" + +#: webform/components/fieldset.inc:25 +msgid "" +"Collapsible fieldsets are \"open\" by default. Select this option to default " +"the fieldset to \"closed.\"" +msgstr "" + +#: webform/components/fieldset.inc:81 +msgid "Fieldsets allow you to organize multiple fields into groups." +msgstr "" + +#: webform/components/file.inc:18 +msgid "Upload Filtering" +msgstr "Feltöltés szűrő" + +#: webform/components/file.inc:19 +msgid "Select the types of uploads you would like to allow." +msgstr "" + +#: webform/components/file.inc:29 +msgid "Web Images" +msgstr "Web képek" + +#: webform/components/file.inc:37 +msgid "Desktop Images" +msgstr "Asztali képek" + +#: webform/components/file.inc:45 +msgid "Documents" +msgstr "Dokumentumok" + +#: webform/components/file.inc:53 +msgid "Media" +msgstr "Média" + +#: webform/components/file.inc:61 +msgid "Archives" +msgstr "Archívum" + +#: webform/components/file.inc:68 +msgid "Additional Extensions" +msgstr "További kiegészítések" + +#: webform/components/file.inc:70 +msgid "" +"Enter a list of additional file extensions for this upload field, seperated " +"by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "" + +#: webform/components/file.inc:78 +msgid "Max Upload Size" +msgstr "A feltölthető maximális fájlméret" + +#: webform/components/file.inc:80 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "A feltölthető maximális fájlméret KB-ban." + +#: webform/components/file.inc:87 +msgid "Upload Directory" +msgstr "Feltöltések könyvtára" + +#: webform/components/file.inc:89 +msgid "" +"Webform uploads are always saved in the site files directory. You may " +"optionally specify a subfolder to store your files." +msgstr "" + +#: webform/components/file.inc:98 +#, fuzzy +msgid "Width of the file field." +msgstr "A szövegmező hossza." + +#: webform/components/file.inc:113 +msgid "" +"The save directory %directory could not be created. Check that the webform " +"files directory is writtable." +msgstr "" + +#: webform/components/file.inc:216 +msgid "Category" +msgstr "Kategória" + +#: webform/components/file.inc:216 +msgid "Types" +msgstr "Típusok" + +#: webform/components/file.inc:269 webform/components/time.inc:144 +msgid "%field field is required." +msgstr "%field mező nem lett kitöltve." + +#: webform/components/file.inc:305 +msgid "" +"Files with the '%ext' extension are not allowed, please upload a file with a " +"%exts extension." +msgstr "" + +#: webform/components/file.inc:310 +msgid "" +"The file '%filename' is too large (%filesize KB). Please upload a file %" +"maxsize KB or smaller." +msgstr "" + +#: webform/components/file.inc:332 +msgid "" +"The uploaded file %filename was unable to be saved. The destination " +"directory may not be writable." +msgstr "" + +#: webform/components/file.inc:341 +msgid "" +"The uploaded file was unable to be saved. The destination directory does not " +"exist." +msgstr "" + +#: webform/components/file.inc:387 +msgid "Uploading a new file will replace the current file." +msgstr "" + +#: webform/components/file.inc:419 +msgid "Allow users to submit files of the configured types." +msgstr "" + +#: webform/components/file.inc:470 +msgid "User uploaded file" +msgstr "Felhasználó által feltöltött fájl" + +#: webform/components/file.inc:471 +msgid "Average uploaded file size" +msgstr "A feltöltött fájlok átlagos mérete" + +#: webform/components/grid.inc:15 webform/components/select.inc:16 +msgid "Options" +msgstr "Beállítások" + +#: webform/components/grid.inc:17 +msgid "" +"Options to select across the top. One option per line. Key-value pairs may " +"be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "" + +#: webform/components/grid.inc:25 +#, fuzzy +msgid "Questions" +msgstr "Műveletek" + +#: webform/components/grid.inc:27 +msgid "Questions list down the left side. One question per line." +msgstr "" + +#: webform/components/grid.inc:35 +#, fuzzy +msgid "Randomize Options" +msgstr "Bővebb beállítások" + +#: webform/components/grid.inc:37 +msgid "" +"Randomizes the order of options on the top when they are displayed in the " +"form." +msgstr "" + +#: webform/components/grid.inc:41 +msgid "Randomize Questions" +msgstr "" + +#: webform/components/grid.inc:43 +msgid "" +"Randomize the order of the questions on the side when they are displayed in " +"the form." +msgstr "" + +#: webform/components/grid.inc:162 +msgid "Allows creation of grid questions, denoted by radio buttons." +msgstr "" + +#: webform/components/hidden.inc:75 +msgid "@name (hidden)" +msgstr "" + +#: webform/components/hidden.inc:87 +msgid "" +"A field which is not visible to the user, but is recorded with the " +"submission." +msgstr "" + +#: webform/components/hidden.inc:122 +msgid "Empty" +msgstr "Üres" + +#: webform/components/hidden.inc:123 +msgid "Non-empty" +msgstr "Nemüres" + +#: webform/components/markup.inc:19 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "" + +#: webform/components/markup.inc:41 +msgid "Preview" +msgstr "Előnézet" + +#: webform/components/markup.inc:81 +msgid "Displays text as HTML in the form; does not render a field." +msgstr "" + +#: webform/components/pagebreak.inc:13 +msgid "" +"Use caution when combining the pagebreak and file components. File " +"components will not be submitted unless they are after the last pagebreak in " +"the form." +msgstr "" + +#: webform/components/pagebreak.inc:40 +msgid "Break up a multi-page form." +msgstr "" + +#: webform/components/select.inc:18 +msgid "" +"A list of selectable options. One option per line. Key-value pairs may be " +"entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "" + +#: webform/components/select.inc:28 +msgid "" +"The default value of the field. For multiple selects use commas to separate " +"multiple defaults." +msgstr "" + +#: webform/components/select.inc:35 +msgid "Multiple" +msgstr "Többszörös választás" + +#: webform/components/select.inc:38 +msgid "" +"Check this option if the user should be allowed to choose multiple values." +msgstr "" +"Ahhoz, hogy a felhasználó egyszerre több értéket is megjelölhessen, ezt az " +"opciót be kell jelölni." + +#: webform/components/select.inc:42 +msgid "Listbox" +msgstr "Listadoboz" + +#: webform/components/select.inc:45 +msgid "" +"Check this option if you want the select component to be of listbox type " +"instead of radiobuttons or checkboxes." +msgstr "" + +#: webform/components/select.inc:53 +msgid "" +"To use the option with a select component, you must use key-value pairs " +"seperated by pipes. i.e. user@example.com|Sample user." +msgstr "" + +#: webform/components/select.inc:248 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "" + +#: webform/components/textarea.inc:33 +msgid "Height" +msgstr "Magasság" + +#: webform/components/textarea.inc:35 +msgid "Height of the textfield." +msgstr "A szövegdoboz magassága." + +#: webform/components/textarea.inc:102 +msgid "A large text area that allows for multiple lines of input." +msgstr "" + +#: webform/components/textfield.inc:34 +msgid "Maxlength" +msgstr "Megengedett hosszúság" + +#: webform/components/textfield.inc:36 +msgid "Maxlength of the textfield." +msgstr "A szövegmező maximális hossza." + +#: webform/components/textfield.inc:43 +#, fuzzy +msgid "Label placed to the left of the textfield" +msgstr "A szövegmező maximális hossza." + +#: webform/components/textfield.inc:45 +msgid "Examples: $, #, -." +msgstr "" + +#: webform/components/textfield.inc:52 +#, fuzzy +msgid "Label placed to the right of the textfield" +msgstr "A szövegdoboz magassága." + +#: webform/components/textfield.inc:54 +msgid "Examples: lb, kg, %." +msgstr "Például: kg, cm, %." + +#: webform/components/textfield.inc:157 +msgid "Basic textfield type." +msgstr "Egyszerű szövegmező" + +#: webform/components/time.inc:16 +msgid "" +"Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/" +"html_node/tar_109.html\">GNU Date Input Format</a>. Strings such as now, +2 " +"hours, and 10:30pm are all valid." +msgstr "" + +#: webform/components/time.inc:26 +msgid "" +"Adjust the time according to a specific timezone. Website timezone is " +"defined in the <a href=\"%settings\">Site Settings</a> and is the default." +msgstr "" + +#: webform/components/time.inc:40 +msgid "Time Format" +msgstr "Időformátum" + +#: webform/components/time.inc:42 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Az idő megjelenítése 12 vagy 24 órás formában." + +#: webform/components/time.inc:96 +msgid "hour" +msgstr "óra" + +#: webform/components/time.inc:97 +msgid "minute" +msgstr "perc" + +#: webform/components/time.inc:100 +msgid "am" +msgstr "de" + +#: webform/components/time.inc:100 +msgid "pm" +msgstr "du" + +#: webform/components/time.inc:152 +#, fuzzy +msgid "Entered %name is not a valid time." +msgstr "A megadott dátum nem érvényes: %name ." + +#: webform/components/time.inc:221 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "" + +#~ msgid "Available variables are: %username, %useremail, %site, %date." +#~ msgstr "Az elérhető változók: %username, %usermail, %site, %date." + +#~ msgid "Delete Selected" +#~ msgstr "A megjelölt törlés" + +#~ msgid "Edit Selected" +#~ msgstr "A megjelölt szerkesztés" + +#~ msgid "" +#~ "The form component has been changed. Remember to press Submit on the " +#~ "bottom of this form to save your changes." +#~ msgstr "" +#~ "Az űrlap komponense megváltozott. A változtatások mentéséhez a lap alján " +#~ "található „Megerősít” gombra is kattintani kell." + +#~ msgid "Field deleted, form must be submitted to save changes" +#~ msgstr "" +#~ "A mező törölve lett, az űrlapot el kell menteni ahhoz, hogy a módosítások " +#~ "érvénybe lépjenek." + +#~ msgid "A component must be selected to delete" +#~ msgstr "Legalább egy összetevőt ki kell választani a törléshez" + +#~ msgid "Submission limit must be a number" +#~ msgstr "A kitöltési limitnek számnak kell lennie" + +#~ msgid "Mail Settings" +#~ msgstr "Levél beállításai" + +#~ msgid "None" +#~ msgstr "Nincs" + +#~ msgid "$title" +#~ msgstr "$title" + +#~ msgid "Limit to " +#~ msgstr "Limit: " + +#~ msgid "Unknown component type %component" +#~ msgstr "Ismeretlen komponens-típus: %component" + +#~ msgid "Add new %type component" +#~ msgstr "Új %type összetevő hozzáadása" + +#~ msgid "Field Details" +#~ msgstr "Mező részletei" + +#~ msgid "Unauthorized webform access attempt by %name." +#~ msgstr "%name felhasználótól megtagadott űrlapbeküldések." + +#~ msgid "Possible spam attempt from @remote_addr" +#~ msgstr "Lehetséges kéretlen reklám (spam) próbálkozás innen: @remote_addr" + +#~ msgid "Submission posted to %title" +#~ msgstr "A beküldés postázva erre a címre: %title" + +#~ msgid "Webform module installed module tables successfully." +#~ msgstr "Az űrlap modul adatbázis-táblái sikeresen létrejöttek." + +#~ msgid "The installation of webform module was unsuccessful." +#~ msgstr "Az űrlap modul telepítése nem sikerült." + +#~ msgid "Captchas are always mandatory" +#~ msgstr "A captcha-k kitöltése mindig szükséges" + +#~ msgid "" +#~ "Unable to render captcha field because the captcha module is not " +#~ "available." +#~ msgstr "" +#~ "A captcha mező megjelenítése nem lehetséges, mert a captcha modul nem " +#~ "elérhető." + +#~ msgid "month" +#~ msgstr "hónap" + +#~ msgid "January" +#~ msgstr "Január" + +#~ msgid "February" +#~ msgstr "Február" + +#~ msgid "March" +#~ msgstr "Március" + +#~ msgid "April" +#~ msgstr "Április" + +#~ msgid "May" +#~ msgstr "Május" + +#~ msgid "June" +#~ msgstr "Június" + +#~ msgid "July" +#~ msgstr "Július" + +#~ msgid "August" +#~ msgstr "Augusztus" + +#~ msgid "September" +#~ msgstr "Szeptember" + +#~ msgid "October" +#~ msgstr "Október" + +#~ msgid "November" +#~ msgstr "November" + +#~ msgid "December" +#~ msgstr "December" + +#~ msgid "day" +#~ msgstr "nap" + +#~ msgid "This field is required." +#~ msgstr "Ezt a mezőt ki kell tölteni." + +#~ msgid "@type %name field required" +#~ msgstr "@type %name mezőt ki kell tölteni" diff --git a/sites/all/modules/webform/translations/it.po b/sites/all/modules/webform/translations/it.po new file mode 100644 index 0000000000000000000000000000000000000000..46490f43eb19b7605d57195cc7cc7961d0daf7ce --- /dev/null +++ b/sites/all/modules/webform/translations/it.po @@ -0,0 +1,420 @@ +# LANGUAGE translation of Drupal (c:\moduli-core\aggregator.module) +# Copyright YEAR NAME <EMAIL@ADDRESS> +# Generated from file: aggregator.module,v 1.213.2.3 2004/12/02 18:38:04 dries +# +msgid "" +msgstr "" +"Project-Id-Version: Drupal-4.5.2\n" +"POT-Creation-Date: 2005-01-15 21:47+0100\n" +"PO-Revision-Date: 2005-02-21 00:59+0100\n" +"Last-Translator: michele <michele@drupalitalia.org>\n" +"Language-Team: Italian <michele@drupalitalia.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Italian\n" +"X-Poedit-Country: ITALY\n" + +#: webform.module:24 +msgid "Webforms are forms and questionnaires. To add one select <strong>create content -> webform</strong>. Below you can set diffrent security and debug options." +msgstr "I Webforms sono form e questionari. Per creare un webform seleziona <strong>crea contenuto -> webform</strong>. Di seguito puoi impostare le opzioni di sicurezza. " + +#: webform.module:27 +msgid "" +"<p>This module lets you create forms or questionnaires and define there content. Submissions from these forms are stored in the database and optionaly also send by e-mail to a predefined address.</p>\n" +"<p>Here is how to create one:\n" +"<ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description that is displayed as a teaser and above the acctual form.</li>\n" +" <li>Add a confirmation message that are displayed after a successfull submission.</li>\n" +" <li>Select which roles who should have submission access to this form (roles that have the "use all webforms" permision can allways use a webform).</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionaly add a email address to which submissions will be send. If no email address is specified no email will be send when submissions are made through the form.</li>\n" +"</ul>\n" +"Help on adding and how to configure the components will be shown after adding your first component.\n" +"</p>\n" +"<p>On user submissions the form content is stored in the database table <i>webform_submited_data</i> as key-value pairs. Apart from the form fields the following "special" fields are added:\n" +"<ul>\n" +" <li> __userid : UID of the submiting user.</li>\n" +" <li> __timestamp : UNIX timestamp for when the submission occured.</li>\n" +" <li> __remotehost : IP or name of the remote host from which the submission came.</li>\n" +" <li> __useragent : What user agent (browser) the user used upon submitting the data.</li>\n" +"</ul>\n" +msgstr "" +"<p>Questo modulo ti permette di creare form e questionari. Le informazioni inserite nei form sono conservate nel database e possono essere inviate ad indirizzi email predefiniti.</p>\n" +"<p>Ecco come creare un nuovo form:\n" +"<ul>\n" +" <li>Vai su Crea nuovo contenuto webform</li>\n" +" <li>Aggiungi una descrizione che apparirà sopra il form</li>\n" +" <li>Inserisci il messaggio di conferma che apparirà dopo l'invio.</li>\n" +" <li>Seleziona i permessi di accesso (roles that have the "use all webforms" permision can allways use a webform).</li>\n" +" <li>Aggiungi uno o più campi</li>\n" +" <li>Aggiungi l'indirizzo email al quale inviare il contenuto inserito nel form. (opzionale)</li>\n" +"</ul>\n" +" Più informazioni quando verranno aggiunti nuovi campi. \n" +"</p>\n" +"<p> Il contenuto dei form verrà salvato nel campo: <i>webform_submited_data</i> come key-value pairs. Verranno inoltre aggiunti questi campi "special" : \n" +"<ul>\n" +" <li> __userid : UID of the submiting user.</li>\n" +" <li> __timestamp : UNIX timestamp for when the submission occured.</li>\n" +" <li> __remotehost : IP or name of the remote host from which the submission came.</li>\n" +" <li> __useragent : What user agent (browser) the user used upon submitting the data.</li>\n" +"</ul>\n" + +#: webform.module:49 +msgid "Enables the creation of forms and questionnaires." +msgstr "Permette la creazione di form e questionari." + +#: webform.module:52 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "Webform sono moduli di richiesta informazioni che possono essere usati dagli utenti per contatti, questionari o richieste di iscrizioni." + +#: webform.module:55 +msgid "Available variables are: %username, %useremail, %site, %date." +msgstr "Le variabili disponibili sono: %username, %useremail, %site, %date." + +#: webform.module:57 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." + +#: webform.module:74;294;297;0 +msgid "webform" +msgstr "webform" + +#: webform.module:215 +msgid "Update from version %a to version %b" +msgstr "Update from version % alla versione %b" + +#: webform.module:219 +msgid "Allow cross site posting" +msgstr "Permetti il cross site posting" + +#: webform.module:221 +msgid "Yes" +msgstr "Sì" + +#: webform.module:221 +msgid "No" +msgstr "No" + +#: webform.module:222 +msgid "Allow postings to your webforms that do not originating from your sites domain." +msgstr "Permetti l'invio attraverso questo form a domini diversi dal tuo sito." + +#: webform.module:223 +msgid "Webforms Debug" +msgstr "Webforms Debug" + +#: webform.module:226 +msgid "DEBUG for the webform module" +msgstr "DEBUG per il modulo webform" + +#: webform.module:227 +msgid "Set this option to \"Log submissions\" to log all submissions in the watchdog. Set it to \"Full debug\" to print debug info on submission. You probably want to leave this option on \"OFF\"." +msgstr "Imposta l'opzione \"Log submissions\" per registrare le informazioni in watchdog. Imposta \"Full debug\" per stampare i messaggi di errore. Probabilmente va impostata su \"OFF\"." + +#: webform.module:258 +msgid "The form component has been changed. Remember to press Submit on the bottom of this form to save your changes." +msgstr "Il campo è stato modificato. Ricorda di confermare con il tasto Invia." + +#: webform.module:263 +msgid "The form component has been deleted. Remember to press Submit on the bottom of this form to save your changes." +msgstr "Il campo è stato cancellato. Ricorda di confermare con il tasto Invia." + +#: webform.module:269 +msgid "You have to specify a form description." +msgstr "Devi specificare una descrizione del form." + +#: webform.module:277 +msgid "You have to specify a confimation message." +msgstr "Devi specificare il messaggio di conferma." + +#: webform.module:303 +msgid "Webform upgrade page" +msgstr "Webform upgrade page" + +#: webform.module:318 +msgid "view form" +msgstr "Visualizza form" + +#: webform.module:318 +msgid "View this form." +msgstr "Visualizza questo form" + +#: webform.module:321 +msgid "Go back to the form" +msgstr "Torna al form" + +#: webform.module:328 +msgid "textfield" +msgstr "textfield" + +#: webform.module:329 +msgid "textarea" +msgstr "area di testo" + +#: webform.module:330;384 +msgid "select" +msgstr "seleziona" + +#: webform.module:331 +msgid "lable" +msgstr "etichetta" + +#: webform.module:332 +msgid "hidden" +msgstr "nascosto" + +#: webform.module:333 +msgid "e-mail address" +msgstr "indirizzo e-mail" + +#: webform.module:343 +msgid "Use access" +msgstr "Use access" + +#: webform.module:343 +msgid "Roles that should be able to submit data using this form." +msgstr "Ruoli che possono utilizzare questo form." + +#: webform.module:349;488 +msgid "Description" +msgstr "Descrizione" + +#: webform.module:350 +msgid "Text to be shown as teaser and before the form." +msgstr "Aggiungi una descrizione che apparirà sopra il form" + +#: webform.module:352 +msgid "Confirmation message" +msgstr "Messaggio di conferma" + +#: webform.module:353 +msgid "Message to be shown upon successfull submission." +msgstr "Messaggio di conferma invio dati" + +#: webform.module:375 +msgid "To edit a component, check its \"selected\" box and press \"Edit selected\"." +msgstr "per modificare un campo, seleziona il \"selected\" box e click \"Edit selected\"." + +#: webform.module:376 +msgid "To delete a component, check its \"selected\" box and press \"Delete selected\"." +msgstr "Per cancellare un campo, seleziona il \"selected\" box e click \"Delete selected\"." + +#: webform.module:377 +msgid "Use \"value\" to enter a default value." +msgstr "Inserisci \"value\" per inserire un testo di default." + +#: webform.module:378 +msgid "Check \"mandatory\" box if the field should be mandatory." +msgstr "Seleziona \"mandatory\" box se deve essere un campo obbligatorio." + +#: webform.module:379 +msgid "Remember to set weight on the components or they will be added to the form in a random order." +msgstr "Imposta il peso di ciascun elemento per ordinare i campi." + +#: webform.module:382 +msgid "Form components" +msgstr "Campi del form." + +#: webform.module:385 +msgid "name" +msgstr "nome" + +#: webform.module:386 +msgid "type" +msgstr "tipo" + +#: webform.module:387 +msgid "value" +msgstr "valore" + +#: webform.module:388 +msgid "mandatory" +msgstr "obbligatorio" + +#: webform.module:389 +msgid "weight" +msgstr "peso" + +#: webform.module:393 +msgid "Edit selected" +msgstr "Modifica selezionati" + +#: webform.module:394 +msgid "Delete selected" +msgstr "Cancella selezionati" + +#: webform.module:398 +msgid "Add a new component" +msgstr "Aggiungi un nuovo campo." + +#: webform.module:399 +msgid "Select a component type to add." +msgstr "Seleziona un campo da aggiungere." + +#: webform.module:400;466 +msgid "Add" +msgstr "Aggiungi" + +#: webform.module:402 +msgid "E-mail address" +msgstr "Indirizzo e-mail." + +#: webform.module:403 +msgid "Form submissions will be e-mailed to this address." +msgstr "Le informazioni inserite nel form verranno inviate a questo indirizzo." + +#: webform.module:433 +msgid "Preview" +msgstr "Anteprima" + +#: webform.module:434 +msgid "Submit" +msgstr "Invia" + +#: webform.module:459 +msgid "Page called out of order" +msgstr "Pagina non disponibile." + +#: webform.module:486 +msgid "Name" +msgstr "Nome" + +#: webform.module:487 +msgid "Name of the field. This is used as a descriptive lable and as the key when saving data in the database." +msgstr "Nome del campo. Usato per denominare i campi nel database." + +#: webform.module:490 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "Una breve descrizione del campo per gli utenti del form." + +#: webform.module:497;504;516;523;544 +msgid "Default value" +msgstr "Valore default." + +#: webform.module:497 +msgid "The default value of a email field is always the users email address if he/she is logged in." +msgstr "Il valore di default del campo email è sempre l'indirizzo email dell'utente registrato." + +#: webform.module:498;510;529 +msgid "Width" +msgstr "Larghezza" + +#: webform.module:500;512 +msgid "Width of the textfield." +msgstr "Larghezza del campo." + +#: webform.module:506 +msgid "The default value of the field." +msgstr "Valore predefinito." + +#: webform.module:518 +msgid "The value of the field." +msgstr "Valore del campo." + +#: webform.module:525 +msgid "The default value of the area." +msgstr "Valore dell'area." + +#: webform.module:531 +msgid "Width of the textarea." +msgstr "Larghezza dell'area di testo." + +#: webform.module:533 +msgid "Height" +msgstr "Altezza" + +#: webform.module:535 +msgid "Height of the textarea." +msgstr "Altezza dell'area di testo." + +#: webform.module:539 +msgid "Options" +msgstr "Checkbox" + +#: webform.module:541 +msgid "Enter one option per line." +msgstr "Inserisci una checkbox per ogni riga." + +#: webform.module:546 +msgid "The preselected value." +msgstr "Valore di default." + +#: webform.module:549 +msgid "Multiple" +msgstr "Multiplo" + +#: webform.module:551 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "Seleziona questa casella se vuoi che gli utenti possano scegliere più di un valore." + +#: webform.module:571 +msgid "Done" +msgstr "Fatto." + +#: webform.module:588 +msgid "Trying to post to webform from external domain." +msgstr "Stai cercando di inviare da un dominio non abilitato." + +#: webform.module:589 +msgid "Visit referer" +msgstr "Visit referer" + +#: webform.module:590 +msgid "You are not allowed to post to this form from an external domain." +msgstr "Dominio non abilitato." + +#: webform.module:598 +msgid "You are not allowed to submit data using this form." +msgstr "Utente non abilitato all'utilizzo del form." + +#: webform.module:620 +msgid "Form submission from" +msgstr "Form inviato da " + +#: webform.module:629 +msgid "Submission posted to " +msgstr "Form inviato a " + +#: webform.module:630 +msgid "view node" +msgstr "Visualizza nodo" + +#: webform.module:703 +msgid "You have not completed the form. %s is a mandatory field." +msgstr "Form non correttamente completata. %s è un campo obbligatorio." + +#: webform.module:737 +msgid "Submited on" +msgstr "Inviato il" + +#: webform.module:740 +msgid "Submited by user" +msgstr "Inviato da user" + +#: webform.module:743 +msgid "Submited by anonymous user" +msgstr "Inviato da utente anonimo" + +#: webform.module:745 +msgid "Submited values are:" +msgstr "I messaggi inviati sono:" + +#: webform.module:1017 +msgid "Go back" +msgstr "Indietro" + +#: webform.module:66 +msgid "maintain webforms" +msgstr "modifica webforms" + +#: webform.module:66 +msgid "create webforms" +msgstr "Crea webform" + +#: webform.module:66 +msgid "use all webforms" +msgstr "Usa tutti i webforms" + diff --git a/sites/all/modules/webform/translations/ja.po b/sites/all/modules/webform/translations/ja.po new file mode 100644 index 0000000000000000000000000000000000000000..b250365304ae2943efc0972af51bae87ff1dc467 --- /dev/null +++ b/sites/all/modules/webform/translations/ja.po @@ -0,0 +1,1338 @@ +# $Id: ja.po,v 1.4 2011/01/05 04:39:01 quicksketch Exp $ +# +# Japanese translation of Drupal (general) +# Copyright 2009 PineRay <matsudaterutaka@gmail.com> +# Generated from files: +# webform_components.inc,v 1.9 2008/03/15 01:03:29 quicksketch +# webform.module,v 1.124 2008/03/15 01:03:29 quicksketch +# markup.inc,v 1.5 2008/02/28 02:12:48 quicksketch +# webform_report.inc,v 1.17 2008/03/15 01:03:29 quicksketch +# webform_submissions.inc,v 1.6 2008/03/14 23:47:48 quicksketch +# webform.info: n/a +# webform.install,v 1.22 2008/02/28 03:21:42 quicksketch +# date.inc,v 1.15 2008/02/25 20:39:59 quicksketch +# email.inc,v 1.19 2008/02/25 20:39:59 quicksketch +# hidden.inc,v 1.12 2008/02/24 20:28:17 quicksketch +# select.inc,v 1.22 2008/02/25 20:39:59 quicksketch +# textarea.inc,v 1.12 2008/02/24 20:28:17 quicksketch +# textfield.inc,v 1.12 2008/02/24 20:28:17 quicksketch +# time.inc,v 1.16 2008/02/25 20:39:59 quicksketch +# file.inc,v 1.4 2008/02/25 20:39:59 quicksketch +# fieldset.inc,v 1.4 2008/02/24 20:28:17 quicksketch +# grid.inc,v 1.3 2008/02/25 20:39:59 quicksketch +# pagebreak.inc,v 1.3 2008/02/25 20:39:59 quicksketch +# +msgid "" +msgstr "" +"Project-Id-Version: Webform 6.x-2.4\n" +"POT-Creation-Date: 2009-01-14 14:56+0900\n" +"PO-Revision-Date: 2009-01-14 18:27+0900\n" +"Last-Translator: PineRay <matsudaterutaka@gmail.com>\n" +"Language-Team: Japanese <matsudaterutaka@gmail.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: webform_components.inc:39;121;324 +msgid "Weight" +msgstr "ウェイト" + +#: webform_components.inc:45;121;298 +msgid "Mandatory" +msgstr "必須" + +#: webform_components.inc:83 +msgid "Add" +msgstr "追加" + +#: webform_components.inc:89;349 +#: webform.module:1192;1211;1228;1359 +msgid "Submit" +msgstr "送信" + +#: webform_components.inc:95;231 +msgid "Publish" +msgstr "掲載する" + +#: webform_components.inc:121 +#: webform.module:761;1053 +msgid "Name" +msgstr "名前" + +#: webform_components.inc:121 +#: webform.module:762 +msgid "Type" +msgstr "タイプ" + +#: webform_components.inc:121 +#: components/markup.inc:17 +msgid "Value" +msgstr "値" + +#: webform_components.inc:121 +#: webform_report.inc:36 +#: webform.module:1863 +msgid "Operations" +msgstr "操作" + +#: webform_components.inc:126 +msgid "New component name" +msgstr "新しい項目の名前" + +#: webform_components.inc:174 +msgid "Edit this component" +msgstr "この項目を編集" + +#: webform_components.inc:179 +#: webform_report.inc:64;67 +#: webform.module:1874;208 +msgid "Edit" +msgstr "編集" + +#: webform_components.inc:180 +msgid "Clone" +msgstr "複製" + +#: webform_components.inc:181;443 +#: webform_report.inc:70 +#: webform_submissions.inc:129 +#: webform.module:216 +msgid "Delete" +msgstr "削除" + +#: webform_components.inc:203 +msgid "No Components, add a component below." +msgstr "項目がありません。下記から項目を追加してください。" + +#: webform_components.inc:234 +msgid "Your webform has been published." +msgstr "WEBフォームを公開しました。" + +#: webform_components.inc:244 +msgid "The component positions and mandatory values have been updated." +msgstr "項目の位置と必須の値を更新しました。" + +#: webform_components.inc:275 +msgid "Label" +msgstr "ラベル" + +#: webform_components.inc:276 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "このフォーム要素を表示する際にラベルとして使用します。" + +#: webform_components.inc:283 +msgid "Field Key" +msgstr "項目キー" + +#: webform_components.inc:284 +msgid "Enter a machine readable key for this form element. May contain only lowercase alphanumeric characters and underscores. This key will be used as the name attribute of the form element." +msgstr "このフォーム要素の「コンピュータが扱える」キーを入力してください。英小文字・数字・アンダースコア(下線)のみを含むことができます。このキーをフォーム要素のname属性にも使用します。" + +#: webform_components.inc:291 +#: webform.module:556;1053 +msgid "Description" +msgstr "説明" + +#: webform_components.inc:293 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "項目に表示する簡単な説明。" + +#: webform_components.inc:300 +msgid "Check this option if the user must enter a value." +msgstr "チェックを入れると、項目が必須入力となります。" + +#: webform_components.inc:305 +msgid "Root" +msgstr "ルート" + +#: webform_components.inc:313 +msgid "Parent Fieldset" +msgstr "親フィールドセット" + +#: webform_components.inc:315 +msgid "Optional. You may organize your form by placing this component inside inside another fieldset." +msgstr "任意。この項目を他のフィールドセットの内側に配置してフォームを構築することができます。" + +#: webform_components.inc:326 +msgid "Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top." +msgstr "同じ階層にあるメニュー間での表示順位を決める、ウェイトを指定してください。ウェイトの数値が小さいほど上部に、大きいほど下部に配置されます。" + +#: webform_components.inc:338 +msgid "The webform component of type @type does not have an edit function defined." +msgstr "@typeタイプのWEBフォーム項目には編集機能がありません。" + +#: webform_components.inc:363 +msgid "The field key %field_key is invalid. Please include only lowercase alphanumeric characters and underscores." +msgstr "項目キー%field_keyが不正です。小文字の英数字と下線 (_) のみを含ませてください。" + +#: webform_components.inc:368 +msgid "The field key %field_key is already in use by the field labeled %existing_field. Please use a unique key." +msgstr "項目キー%field_keyは、項目%existing_fieldによってすでに使用されています。固有のキーを使用してください。" + +#: webform_components.inc:402 +msgid "Component %name cloned." +msgstr "項目%nameを複製しました。" + +#: webform_components.inc:406 +msgid "Component %name updated." +msgstr "項目%nameを更新しました。" + +#: webform_components.inc:410 +msgid "New component %name added." +msgstr "項目%nameを新しく追加しました。" + +#: webform_components.inc:435 +msgid "Delete the %name fieldset?" +msgstr "%nameフィールドセットを削除しますか?" + +#: webform_components.inc:436 +msgid "This will immediately delete the %name fieldset and all children elements within %name from the %webform webform. This cannot be undone." +msgstr "WEBフォーム%webformからフィールドセット%nameと%nameに含まれる子要素のすべてを即座に削除します。この操作は元に戻すことができません。" + +#: webform_components.inc:439 +msgid "Delete the %name component?" +msgstr "項目%nameを削除しますか?" + +#: webform_components.inc:440 +msgid "This will immediately delete the %name component from the %webform webform. This cannot be undone." +msgstr "WEBフォーム%webformから項目%nameを即座に削除します。この操作は元に戻すことができません。" + +#: webform_components.inc:447 +msgid "Component %name deleted." +msgstr "項目%nameを削除しました。" + +#: webform_report.inc:32;94 +msgid "#" +msgstr "No." + +#: webform_report.inc:33;95 +msgid "Submitted" +msgstr "受信日時" + +#: webform_report.inc:34;96 +msgid "User" +msgstr "ユーザ" + +#: webform_report.inc:35;97 +msgid "IP Address" +msgstr "IPアドレス" + +#: webform_report.inc:61 +#: webform.module:1862;200 +msgid "View" +msgstr "表示" + +#: webform_report.inc:242 +msgid "Q" +msgstr "項目" + +#: webform_report.inc:243 +msgid "responses" +msgstr "内容" + +#: webform_submissions.inc:90 +msgid "Clear Form Submissions" +msgstr "受信内容をすべて削除" + +#: webform_submissions.inc:94 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "このフォームから受信した内容を、本当にすべて削除しますか?" + +#: webform_submissions.inc:96 +#: webform.module:1875;181 +msgid "Clear" +msgstr "削除する" + +#: webform_submissions.inc:96;129 +msgid "Cancel" +msgstr "キャンセル" + +#: webform_submissions.inc:104 +msgid "Webform %title entries cleared." +msgstr "%title に寄せられた内容を、すべて削除しました。" + +#: webform_submissions.inc:122 +msgid "Delete Form Submission" +msgstr "受信内容を削除" + +#: webform_submissions.inc:127 +msgid "Are you sure you want to delete this submission?" +msgstr "この受信内容を本当に削除しますか?" + +#: webform_submissions.inc:134 +msgid "Submission deleted" +msgstr "送信内容を削除しました。" + +#: webform.module:22 +msgid "Webforms are forms and questionnaires. To add one select <strong>create content -> webform</strong>. Below you can set different security and debug options." +msgstr "WEBフォームはお問い合わせやアンケートです。<strong>コンテンツの作成 -> WEBフォーム</strong>を選択して追加します。別々にセキュリティやデバッグのオプションを設定することができます。" + +#: webform.module:25 +msgid "" +"<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will be sent. If no email address is specified, no e-mail will be sent when submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will be used to populate the return e-mail address on any sent e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that will be used to populate the subject e-mail field on any sent e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown after you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database table <i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" +"<p>お問い合わせフォームやアンケートフォームを作成し、その中身を選択することができます。フォームから送信された内容は、データベースに格納されるだけでなく、あらかじめ設定されたアドレス宛にメールで知らせることもできます。</p>\n" +" <p>フォーム作成方法:</p>\n" +" <ul>\n" +" <li>コンテンツの作成でWEBフォームを追加します。</li>\n" +" <li>ティーザーやフォームの上部に表示する説明を入力します。</li>\n" +" <li>フォームの送信が成功した際に表示する確認メッセージまたはリダイレクト先ノードを入力します。</li>\n" +" <li>フォームの項目を追加します。</li>\n" +" <li>フォームが送信された際にメールで通知するアドレスを入力します(任意)。空欄であればメールは送信されません。</li>\n" +" <li>フォームがメールを送信する際の、返信先に使用するアドレスが含まれる項目を選択します(任意)。</li>\n" +" <li>フォームがメールを送信する際の、件名に使用する文章が含まれる項目を選択します(任意)。</li>\n" +" </ul>\n" +" <p>項目の追加や編集のためのヘルプは、ひとつ目の項目を追加すると表示されます。</p>\n" +" <p>フォームから送信された内容は、データベースの<i>webform_submitted_data</i>テーブルにキーと対で格納されています。</p>\n" +" " + +#: webform.module:41 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "アンケートやお問い合わせ、リクエストなどにWEBフォームを用いることができます。サイトに問い合わせたり、イベントに参加登録したり、いろんな調査をできるようになります。" + +#: webform.module:44 +msgid "Available variables are: %username, %useremail, %site, %date." +msgstr "利用可能な変数: %username、%useremail、%site、%date。" + +#: webform.module:45 +msgid "You can also use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables, %session[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> variables and %get[key] to create prefilled forms from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. %cookie, %request and %post also work with their respective PHP variables. For example %server[HTTP_USER_AGENT], %session[id], or %get[q]." +msgstr "PHPの<a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a>変数の値を追加するのに %server[key] を、<a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a>変数の値を追加するのに %session[key] を、<a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>から入力済みのフォームを作成するのに %get[key] を利用することができます。%cookie や %request、%post もまた、それぞれ対応するPHP変数の値となります。例) %server[HTTP_USER_AGENT]、%session[id]、%get[q]。" + +#: webform.module:47 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the varible %profile[profile_city]." +msgstr "profilesモジュールを使用していれば、%profile[form_name]という書式でプロフィールデータにアクセスすることができます。例えば、profile_city という名前のプロフィール値であれば、変数 %profile[profile_city] を追加します。" + +#: webform.module:51 +msgid "This page displays all the components currently configured for this webform node. You may add any number of components to the form, even multiple of the same type. To add a new component, fill in a name and select a type from the fields at the bottom of the table. Submit the form to create the new component or update any changed form values." +msgstr "このWEBフォームノードに現在設定されているすべての項目を表示しています。フォームにいくつもの項目を(たとえタイプの同じものが複数あっても)追加することができます。項目を追加するには、表の下部にあるフィールドに名前を入力してタイプを選択してください。新しい項目を作成したり、変更したフォームの値を更新するには「送信」ボタンを押してください。" + +#: webform.module:52 +msgid "Click on any existing component's name to edit its settings." +msgstr "既存の項目を編集するには、項目名をクリックします。" + +#: webform.module:83 +msgid "View and edit all the available webforms on your site." +msgstr "サイトにある全てのWEBフォームを表示/編集" + +#: webform.module:94 +msgid "Global configuration of webform functionality." +msgstr "WEBフォーム機能全体の設定" + +#: webform.module:354;89 +#: webform.info:0 +msgid "Webform" +msgstr "WEBフォーム" + +#: webform.module:356 +msgid "Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users." +msgstr "お問い合わせフォームやアンケートフォームを作成します。送信結果と統計は記録され、管理者が閲覧できます。" + +#: webform.module:508 +msgid "Go to form" +msgstr "フォームへ" + +#: webform.module:510 +msgid "View this form." +msgstr "フォームを表示します。" + +#: webform.module:538 +msgid "Webform Settings" +msgstr "WEBフォームの設定" + +#: webform.module:547;1861 +msgid "Title" +msgstr "タイトル" + +#: webform.module:557 +msgid "Text to be shown as teaser and before the form." +msgstr "フォームの上部と抜粋に表示される文章。" + +#: webform.module:566 +msgid "Confirmation message or redirect URL" +msgstr "確認メッセージまたはジャンプ先URL" + +#: webform.module:567 +msgid "Message to be shown upon successful submission or a path to a redirect page. Redirect pages must start with <em>http://</em> for external sites or <em>internal:</em> for an internal path. i.e. <em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "送信が成功した場合に表示する文章、またはジャンプするページのパス。外部サイトのパスは <em>http://</em> で、内部のパスは <em>internal:</em> で始めなければなりません。(例: <em>http://www.example.com</em> あるいは <em>internal:node/10</em>)" + +#: webform.module:579 +msgid "Webform mail settings" +msgstr "WEBフォームのメール設定" + +#: webform.module:589 +msgid "E-mail to address" +msgstr "宛先アドレス" + +#: webform.module:591 +msgid "Form submissions will be e-mailed to this address. Leave blank for none. Multiple e-mail addresses may be separated by commas." +msgstr "フォームを送信すると、このアドレスにメールが送信されます。空欄であればメールは送信されません。複数のメールアドレスはコンマで区切ります。" + +#: webform.module:599 +msgid "Conditional e-mail recipients" +msgstr "メール宛先の条件" + +#: webform.module:600 +msgid "The settings below allow you to send e-mails to multiple recipients based off the value of a component." +msgstr "下記の設定により、項目の値から決定される複数の宛先にメールを送信することが出来ます。" + +#: webform.module:624 +msgid "E-mail from name" +msgstr "差出人名" + +#: webform.module:625 +msgid "After adding components to this form any email, select, or hidden form element may be selected as the sender's name for e-mails." +msgstr "フォームに項目を追加した後、メールの差出人名に使用するフォーム要素を、メールまたはセレクトもしくはhiddenから選択してください。" + +#: webform.module:629 +msgid "E-mail from address" +msgstr "差出人アドレス" + +#: webform.module:630 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the sender's e-mail address." +msgstr "フォームに項目を追加した後、メールの差出人アドレスに使用するフォーム要素を、テキストフィールドまたはセレクトもしくはhiddenから選択してください。" + +#: webform.module:634 +msgid "E-mail subject" +msgstr "メール件名" + +#: webform.module:635 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the subject for e-mails." +msgstr "フォームに項目を追加した後、メールの件名に使用するフォーム要素を、テキストフィールドまたはセレクトもしくはhiddenから選択してください。" + +#: webform.module:670 +msgid "Webform advanced settings" +msgstr "WEBフォームの高度な設定" + +#: webform.module:678 +msgid "Show complete form in teaser" +msgstr "要約に完全なフォームを表示" + +#: webform.module:680 +msgid "Display the entire form in the teaser display of this node." +msgstr "このノードの要約にフォーム全体を表示します。" + +#: webform.module:684 +msgid "Limit the number of submissions a user may send within a specified time period" +msgstr "1ユーザが一定時間内に送信できる数の制限" + +#: webform.module:689 +msgid "Unlimited" +msgstr "無制限" + +#: webform.module:703 +msgid "ever" +msgstr "永久に" + +#: webform.module:704 +msgid "every hour" +msgstr "1時間につき" + +#: webform.module:705 +msgid "every day" +msgstr "1日につき" + +#: webform.module:706 +msgid "every week" +msgstr "1週につき" + +#: webform.module:713 +msgid "Submit button text" +msgstr "送信ボタンの文面" + +#: webform.module:715 +msgid "By default the submit button on this form will have the label <em>Submit</em>. Enter a new title here to override the default." +msgstr "デフォルトでは、このフォームの送信ボタンのラベルは<em>送信</em>です。新しい題名を入力すると、デフォルトの値が上書きされます。" + +#: webform.module:722 +msgid "Enter PHP code to preform additional validation for this form. Include the <?php ?> tags. $form and $form_state are available variables. If validation fails, use the form_set_error function to prevent the form from being submitted. Use the same syntax as a _validate function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "追加で行う検証に使用するPHPコードを入力してください。<?php ?>タグを含めます。$form変数および$form_state変数を利用可能です。検証に失敗した場合、フォームが送信されないようにするために form_set_error 関数を使用します。<a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>の _validate 関数と同じ構文を使用してください。" + +#: webform.module:731 +msgid "Enter PHP code to preform additional processing for this form (after the validation). Include the <?php ?> tags. $form and $form_state are available variables, use the same syntax as a _submit function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "検証の後に追加で行う処理に使用するPHPコードを入力してください。<?php ?>タグを含めます。$form変数および$form_state変数を利用可能です。<a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>の _submit 関数と同じ構文を使用してください。" + +#: webform.module:760 +msgid "To" +msgstr "宛先" + +#: webform.module:775 +msgid "No components yet in this webform." +msgstr "このWEBフォームにはまだ項目がありません。" + +#: webform.module:790 +msgid "Custom" +msgstr "カスタム" + +#: webform.module:790 +msgid "Component" +msgstr "項目" + +#: webform.module:801 +msgid "Default" +msgstr "デフォルト" + +#: webform.module:822 +msgid "Limit to !count submission(s) !timespan" +msgstr "送信数を !timespan !count 回に制限" + +#: webform.module:897 +msgid "The new webform %title has been created. Add new fields to your webform with the form below." +msgstr "WEBフォーム %title を新規作成しました。下記のフォームから項目をWEBフォームへ追加してください。" + +#: webform.module:900 +msgid "This webform is currently unpublished. After finishing your changes to the webform, use the <em>Publish</em> button below." +msgstr "現在、このWEBフォームは非公開です。WEBフォームを変更した後、下記の<em>公開</em>ボタンを押してください。" + +#: webform.module:971 +msgid "Available Components" +msgstr "利用可能な項目" + +#: webform.module:974 +msgid "Below is a list of supported field types available for webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms." +msgstr "以下はWEBフォームで利用可能なフィールドタイプの一覧です。各項目の隣にあるチェックボックスのチェックを外すことで、項目を無効にすることができます。既存の、あるいは今後作成されるWEBフォームにおいて、チェックのある項目だけが利用可能です。" + +#: webform.module:991 +msgid "Default E-mail Values" +msgstr "メールのデフォルト値" + +#: webform.module:998 +msgid "From e-mail address" +msgstr "送信元メールアドレス" + +#: webform.module:1000 +msgid "Default sender address. This may be the E-mail address of the maintainer of your forms. This is also used for Reply-To, Return-Path and Errors-To." +msgstr "デフォルトの差出人アドレス。例えば、フォーム管理者のメールアドレスを指定します。また、返信先やReturn-Path、Errors-Toにもこのアドレスを使用します。" + +#: webform.module:1005 +msgid "From Name" +msgstr "送信元名" + +#: webform.module:1007 +msgid "Default sender name which is displayed together with the E-mail address." +msgstr "メールアドレスと並べて表示するデフォルトの差出人名。" + +#: webform.module:1012 +msgid "Default Subject" +msgstr "デフォルトの件名" + +#: webform.module:1013;1913 +msgid "Form submission from: [title]" +msgstr "フォーム [title] への送信内容" + +#: webform.module:1014 +msgid "Default Subject. If not other stated in the form configuration this is appended to your form title. If you have e.g. defined \"Your \" (note the space) as a default subject and a form titled with \"Order\" the e-mail subject will be \"Your Order\"." +msgstr "デフォルトの件名。特に設定が無ければ、この値をフォームのタイトルの前につなげます。例えば、デフォルトの件名を「あなたの」とし、フォームのタイトルが「注文」であれば、メールの件名は「あなたの注文」となります。" + +#: webform.module:1019 +msgid "Advanced Options" +msgstr "高度なオプション" + +#: webform.module:1027 +msgid "Allow Cookies for Tracking Submissions" +msgstr "クッキーを使用して送信をトラッキング" + +#: webform.module:1029 +msgid "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, webform also uses IP addresses and site usernames to prevent repeated submissions." +msgstr "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">クッキー</a>を使用することで、同じユーザがWEBフォームを繰り返し送信できなくすることができます。ユーザあたりの送信数を制限するのにこの機能が必須というわけではありませんが、より正確に制限することができます。クッキーの他に、IPアドレスとユーザ名も使って、繰り返し送信できないようにしています。" + +#: webform.module:1034 +msgid "Webforms Debug" +msgstr "WEBフォームのデバッグ" + +#: webform.module:1036 +msgid "OFF" +msgstr "オフ" + +#: webform.module:1036 +msgid "Log submissions" +msgstr "ログ記録" + +#: webform.module:1036 +msgid "Full debug" +msgstr "完全デバッグ" + +#: webform.module:1037 +msgid "Set this option to \"Log submissions\" to log all submissions in the watchdog. Set it to \"Full debug\" to print debug info on submission. You probably want to leave this option on \"OFF\"." +msgstr "このオプションを「ログ記録」に設定すると、すべての送信をwatchdogのログに記録します。「完全デバッグ」に設定すると、送信時にデバッグ情報を表示します。たいていは「オフ」のままにしておくのが良いでしょう。" + +#: webform.module:1053 +msgid "Enabled" +msgstr "有効" + +#: webform.module:1116;1116 +msgid "Previous submission" +msgstr "前の受信内容" + +#: webform.module:1119;1119 +msgid "Next submission" +msgstr "次の受信内容" + +#: webform.module:1123 +msgid "Submission Information" +msgstr "受信情報" + +#: webform.module:1132 +msgid "Form: !form" +msgstr "フォーム名: !form" + +#: webform.module:1135 +msgid "Submitted by !name" +msgstr "!nameからの送信" + +#: webform.module:1177 +msgid "Next Page >" +msgstr "次のページ >" + +#: webform.module:1178 +msgid "< Previous Page" +msgstr "< 前のページ" + +#: webform.module:1296 +msgid "The webform component @type is not able to be displayed" +msgstr "WEBフォーム項目@typeは表示できません。" + +#: webform.module:1342 +msgid "You have submitted the maximum number of entries. Check submission guidelines." +msgstr "送信可能な回数の上限に達しています。送信のガイドラインを確認してください。" + +#: webform.module:1509 +msgid "Illegal information. Data not submitted." +msgstr "不正な情報。データが送信されていません。" + +#: webform.module:1637 +msgid "Thank you, your submission has been received." +msgstr "ありがとうございます。フォームの内容を受け取りました。" + +#: webform.module:1644 +msgid "Go back to the form" +msgstr "フォームに戻る" + +#: webform.module:1673 +msgid "Submitted on" +msgstr "送信日時: " + +#: webform.module:1677 +msgid "Submitted by user" +msgstr "ユーザによる送信" + +#: webform.module:1680 +msgid "Submitted by anonymous user" +msgstr "匿名ユーザによる送信" + +#: webform.module:1684 +msgid "Submitted values are" +msgstr "送信内容: " + +#: webform.module:1688 +msgid "The results of this submission may be viewed at:" +msgstr "この送信内容は下記で見ることが出来ます:" + +#: webform.module:1870;153 +msgid "Submissions" +msgstr "受信一覧" + +#: webform.module:1871;160 +msgid "Analysis" +msgstr "分析" + +#: webform.module:1872;167 +msgid "Table" +msgstr "テーブル" + +#: webform.module:1873;174 +msgid "Download" +msgstr "ダウンロード" + +#: webform.module:1325;1334;1547;0 +msgid "webform" +msgstr "WEBフォーム" + +#: webform.module:1325 +msgid "The authenticated user <a href=\"%user_url\">%username</a> attempted to submit more entries than allowed on the <a href=\"%webform_url\">%webform_title</a> webform" +msgstr "登録ユーザ <a href=\"%user_url\">%username</a> が、<a href=\"%webform_url\">%webform_title</a> ウェブフォームで許可されている回数より多くの送信を試みました。" + +#: webform.module:1334 +msgid "An anonymous user with IP address %ip attempted to submit more entries than allowed on the <a href=\"%webform_url\">%webform_title</a> webform" +msgstr "IPアドレス %ip の匿名ユーザが、<a href=\"%webform_url\">%webform_title</a> ウェブフォームで許可されている回数より多くの送信を試みました。" + +#: webform.module:1547 +msgid "Submission posted to %title. <a href=\"!url\">Results</a>. !details" +msgstr "%titleへ投稿の送信がありました。<a href=\"!url\">送信結果</a>。 !details" + +#: webform.module:283 +msgid "create webforms" +msgstr "WEBフォームを作成" + +#: webform.module:283 +msgid "edit own webforms" +msgstr "自分のWEBフォームを編集" + +#: webform.module:283 +msgid "edit webforms" +msgstr "全てのWEBフォームを編集" + +#: webform.module:283 +msgid "access webform results" +msgstr "受信内容へのアクセス" + +#: webform.module:283 +msgid "clear webform results" +msgstr "受信内容をクリア" + +#: webform.module:283 +msgid "access own webform submissions" +msgstr "自分の送信内容へのアクセス" + +#: webform.module:283 +msgid "edit own webform submissions" +msgstr "自分の送信内容を編集" + +#: webform.module:283 +msgid "edit webform submissions" +msgstr "受信内容を編集" + +#: webform.module:283 +msgid "use PHP for additional processing" +msgstr "PHPを使用した高度な処理" + +#: webform.module:79 +msgid "Webforms" +msgstr "WEBフォーム一覧" + +#: webform.module:100 +msgid "Webform confirmation" +msgstr "WEBフォーム確認" + +#: webform.module:109 +msgid "Configuration" +msgstr "設定" + +#: webform.module:117 +msgid "Form components" +msgstr "フォーム項目" + +#: webform.module:143 +msgid "Results" +msgstr "投票結果" + +#: webform.module:192 +msgid "Webform submission" +msgstr "WEBフォーム送信" + +#: webform.install:11 +msgid "Table for storing additional properties for webform nodes." +msgstr "WEBフォームノードの要素を保存するテーブル。" + +#: webform.install:14;92;170;205 +msgid "The node identifier of a webform" +msgstr "WEBフォームのノードID" + +#: webform.install:20 +msgid "The confirmation message or URL displayed to the user after submitting a form." +msgstr "フォームを送信した後、ユーザに表示する確認メッセージまたはURL。" + +#: webform.install:25 +msgid "Boolean value for whether the entire form should be displayed on the teaser." +msgstr "フォーム全体を要約に表示するかどうかの論理値。" + +#: webform.install:32 +msgid "The title of the submit button on the form." +msgstr "フォーム送信ボタンのタイトル" + +#: webform.install:38 +msgid "The number of submissions a single user is allowed to submit within an interval. -1 is unlimited." +msgstr "1ユーザが一定期間内に送信できる数。-1を入力すると無制限になります。" + +#: webform.install:45 +msgid "The amount of time in seconds that must pass before a user can submit another submission within the set limit." +msgstr "制限の範囲内で次の送信を行うために経過しなくてはならない秒数。" + +#: webform.install:51 +msgid "The primary e-mail address for receiving submission results." +msgstr "送信結果を受け取る主なメールアドレス。" + +#: webform.install:57 +msgid "The name of the sender in sent submission e-mails." +msgstr "送信結果メールの差出人名。" + +#: webform.install:63 +msgid "The address of the sender in sent submission e-mails." +msgstr "送信結果メールの差出人アドレス。" + +#: webform.install:69 +msgid "The subject of sent submission e-mails" +msgstr "送信結果メールの件名。" + +#: webform.install:75 +msgid "PHP code for additional functionality when validating a form." +msgstr "フォームの検証時に機能を追加するPHPコード。" + +#: webform.install:80 +msgid "PHP code for additional functionality when submitting a form." +msgstr "フォームの送信時に機能を追加するPHPコード。" + +#: webform.install:89 +msgid "Stores information about components for webform nodes." +msgstr "WEBフォーム項目の情報を保持する。" + +#: webform.install:99;219 +msgid "The identifier for this component within this node, starts at 0 for each node." +msgstr "このノード内での項目のIDで、常に0から始まります。" + +#: webform.install:107 +msgid "If this component has a parent fieldset, the cid of that component." +msgstr "この項目に親のフィールドセットがある場合、その項目のcid。" + +#: webform.install:115 +msgid "When the form is displayed and processed, this key can be used to reference the results." +msgstr "フォームを表示したり処理する際に、このキーを使用して結果を参照します。" + +#: webform.install:121 +msgid "The label for this component." +msgstr "この項目のラベル。" + +#: webform.install:127 +msgid "The field type of this component (textfield, select, hidden, etc.)." +msgstr "この項目のタイプ(テキストフィールド、セレクト、hidden等)。" + +#: webform.install:133 +msgid "The default value of the component when displayed to the end-user." +msgstr "項目をユーザに表示する際のデフォルトの値" + +#: webform.install:138 +msgid "Additional information unique to the display or processing of this component." +msgstr "この項目の表示や処理に固有の追加情報。" + +#: webform.install:143 +msgid "Boolean flag for if this component is required." +msgstr "項目が必須かどうかの論理フラグ。" + +#: webform.install:150 +msgid "Determines the position of this component in the form." +msgstr "フォームにおけるこの項目の位置を決定してください。" + +#: webform.install:161 +msgid "Holds general information about submissions outside of field values." +msgstr "項目の値とは別の、送信に関する一般的な情報を保存します。" + +#: webform.install:164;212 +msgid "The unique identifier for this submission." +msgstr "この受信内容固有のID" + +#: webform.install:177 +msgid "The id of the user that completed this submission." +msgstr "この内容を送信したユーザのID" + +#: webform.install:184 +msgid "Timestamp of when the form was submitted." +msgstr "フォーム送信時のタイムスタンプ" + +#: webform.install:190 +msgid "The IP address of the user that submitted the form." +msgstr "フォームを送信したユーザのIPアドレス。" + +#: webform.install:202 +msgid "Stores all submitted field data for webform submissions." +msgstr "WEBフォームから送信された項目の値をすべて保存します。" + +#: webform.install:227 +msgid "Usually this value is 0, but if a field has multiple values (such as a time or date), it may require multiple rows in the database." +msgstr "通常、この値は0ですが、複数の値(時間や日付)がある場合には、データベースに複数の行が必要となります。" + +#: webform.install:235 +msgid "The submitted value of this field, may be serialized for some components." +msgstr "この項目の送信された値。シリアライズされている場合もあります。" + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "お問い合わせフォームやアンケートフォームを設置することができます。" + +#: components/date.inc:16 +#: components/email.inc:18 +#: components/hidden.inc:16 +#: components/select.inc:26 +#: components/textarea.inc:16 +#: components/textfield.inc:16 +#: components/time.inc:14 +msgid "Default value" +msgstr "デフォルト値" + +#: components/date.inc:18 +#: components/email.inc:20 +#: components/hidden.inc:18 +#: components/textarea.inc:18 +#: components/textfield.inc:18 +#: components/time.inc:16 +msgid "The default value of the field." +msgstr "項目にあらかじめセットされる値。" + +#: components/date.inc:18 +msgid "Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid." +msgstr "<a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>に記載されているすべての形式で日付を入力することができます。「today」「+2 months」「Dec 9 2004」といった書式となります。" + +#: components/date.inc:25 +#: components/time.inc:24 +msgid "Timezone" +msgstr "タイムゾーン" + +#: components/date.inc:27 +msgid "Adjust the date according to a specific timezone. Website timezone is defined in the <a href=\"%settings\">Site Settings</a> and is the default." +msgstr "特定のタイムゾーンにしたがって日付を調整します。ウェブサイトのタイムゾーンは<a href=\"%settings\">サイトの環境設定</a>で選択し、それがデフォルトとなります。" + +#: components/date.inc:33 +#: components/time.inc:32 +msgid "Observe Daylight Savings" +msgstr "夏時間の自動補正" + +#: components/date.inc:36 +#: components/time.inc:35 +msgid "Automatically adjust the time during daylight savings." +msgstr "夏時間による補正を自動的に行います。" + +#: components/date.inc:79 +msgid "month" +msgstr "月" + +#: components/date.inc:79 +msgid "January" +msgstr "1月" + +#: components/date.inc:79 +msgid "February" +msgstr "2月" + +#: components/date.inc:79 +msgid "March" +msgstr "3月" + +#: components/date.inc:79 +msgid "April" +msgstr "4月" + +#: components/date.inc:79 +msgid "May" +msgstr "5月" + +#: components/date.inc:79 +msgid "June" +msgstr "6月" + +#: components/date.inc:79 +msgid "July" +msgstr "7月" + +#: components/date.inc:79 +msgid "August" +msgstr "8月" + +#: components/date.inc:79 +msgid "September" +msgstr "9月" + +#: components/date.inc:79 +msgid "October" +msgstr "10月" + +#: components/date.inc:79 +msgid "November" +msgstr "11月" + +#: components/date.inc:79 +msgid "December" +msgstr "12月" + +#: components/date.inc:80 +msgid "day" +msgstr "日" + +#: components/date.inc:133 +#: components/file.inc:203 +#: components/time.inc:142 +msgid "%field field is required." +msgstr "%field項目は必須入力です。" + +#: components/date.inc:147 +msgid "Entered %name is not a valid date." +msgstr "入力された %name は無効な日付です。" + +#: components/date.inc:205 +msgid "Presents month, day, and year fields." +msgstr "年月日を入力する項目を表示します。" + +#: components/date.inc:278 +#: components/email.inc:177 +#: components/file.inc:376 +#: components/textarea.inc:143 +#: components/textfield.inc:144 +#: components/time.inc:279 +msgid "Left Blank" +msgstr "空欄" + +#: components/date.inc:279 +#: components/email.inc:178 +#: components/textarea.inc:144 +#: components/textfield.inc:145 +#: components/time.inc:280 +msgid "User entered value" +msgstr "内容あり" + +#: components/email.inc:29 +msgid "User email as default" +msgstr "ユーザのメールアドレスをデフォルトでセット" + +#: components/email.inc:31 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "ログイン済ユーザであれば、ユーザのメールアドレスをデフォルトの値に設定します。" + +#: components/email.inc:37 +#: components/textarea.inc:25 +#: components/textfield.inc:25 +msgid "Width" +msgstr "幅" + +#: components/email.inc:39 +#: components/textarea.inc:27 +#: components/textfield.inc:27 +msgid "Width of the textfield." +msgstr "テキストフィールドの幅" + +#: components/email.inc:39 +#: components/textarea.inc:27;35 +#: components/textfield.inc:27 +msgid "Leaving blank will use the default size." +msgstr "空欄の場合はデフォルトの値を使用します。" + +#: components/email.inc:45 +#: components/hidden.inc:29 +#: components/select.inc:49 +msgid "E-mail a submission copy" +msgstr "送信内容のコピーをメールで送る" + +#: components/email.inc:48 +#: components/hidden.inc:32 +#: components/select.inc:52 +msgid "Check this option if this component contains an e-mail address that should get a copy of the submission. Emails are sent individually so other emails will not be shown to the recipient." +msgstr "チェックを入れると、この項目に含まれているメールアドレス宛に送信内容のコピーを送信します。メールは個別に送信されるので、それぞれのメールの宛先欄には他のメールアドレスは表示されません。" + +#: components/email.inc:52 +#: components/textarea.inc:41 +#: components/textfield.inc:43 +msgid "Disabled" +msgstr "無効" + +#: components/email.inc:54 +#: components/textarea.inc:43 +#: components/textfield.inc:45 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "テキストフィールドを編集できないようにします。変更できないデフォルトの値をセットする場合に役立ちます。" + +#: components/email.inc:113 +msgid "%value is not a valid email address." +msgstr "%value は無効なメールアドレスです。" + +#: components/email.inc:142 +msgid "A textfield that automatically fills in logged-in users e-mail." +msgstr "ログインユーザのメールアドレスを自動で挿入するテキストフィールド。" + +#: components/email.inc:179 +#: components/hidden.inc:124 +#: components/textarea.inc:145 +#: components/textfield.inc:146 +msgid "Average submission length in words (ex blanks)" +msgstr "入力された文章の平均の長さ(空欄を除く)" + +#: components/fieldset.inc:16 +msgid "Collapsible" +msgstr "折りたたみ可" + +#: components/fieldset.inc:18 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "ユーザがフィールドセットを閉じたり開いたりできるようになります。" + +#: components/fieldset.inc:23 +msgid "Collapsed by Default" +msgstr "閉じた状態をデフォルトに設定" + +#: components/fieldset.inc:25 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "デフォルトでは開いた状態でフィールドセットを表示しますが、このオプションを選択すると閉じた状態で表示します。" + +#: components/fieldset.inc:81 +msgid "Fieldsets allow you to organize complex webforms into groups of fields." +msgstr "フィールドセットによって、フィールドをグループ分けした複雑なWEBフォームを構築することができます。" + +#: components/file.inc:18 +msgid "Upload Filtering" +msgstr "アップロードフィルタ" + +#: components/file.inc:19 +msgid "Select the types of uploads you would like to allow." +msgstr "アップロードを許可するファイルの形式を選択してください。" + +#: components/file.inc:23 +msgid "Web Images" +msgstr "WEB用画像" + +#: components/file.inc:29 +msgid "Desktop Images" +msgstr "デスクトップ用画像" + +#: components/file.inc:35 +msgid "Documents" +msgstr "ドキュメント" + +#: components/file.inc:41 +msgid "Media" +msgstr "メディア" + +#: components/file.inc:47 +msgid "Archives" +msgstr "アーカイブ" + +#: components/file.inc:53 +msgid "Additional Extensions" +msgstr "追加の拡張子" + +#: components/file.inc:55 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "アップロードを許可するファイルの拡張子を、コンマ区切りで入力してください。<br />入力された拡張子は、上記のチェック欄に追加されます。" + +#: components/file.inc:62 +msgid "Max Upload Size" +msgstr "アップロードファイルの最大サイズ" + +#: components/file.inc:64 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "ユーザがアップロードできるファイルの最大サイズ(KB)を入力してください。" + +#: components/file.inc:71 +msgid "Upload Directory" +msgstr "アップロード先ディレクトリ" + +#: components/file.inc:73 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "WEBフォームを通してアップロードされたファイルは、filesディレクトリに保存されます。files内のサブフォルダを指定して保存することもできます。" + +#: components/file.inc:158 +msgid "Category" +msgstr "カテゴリ" + +#: components/file.inc:158 +msgid "Types" +msgstr "タイプ" + +#: components/file.inc:240 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "拡張子が'%ext'のファイルはアップロードできません。拡張子が'%exts'に含まれるファイルをアップロードしてください。" + +#: components/file.inc:245 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "'%filename'のサイズ(%filesize KB)が大きすぎます。%maxsize KB以下のファイルをアップロードしてください。" + +#: components/file.inc:266 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "アップロードされたファイル %filename を保存できませんでした。指定ディレクトリに書き込めません。" + +#: components/file.inc:274 +msgid "The uploaded file %filename was unable to be saved. The destination directory does not exist." +msgstr "アップロードファイル %filename を保存できませんでした。保存先のディレクトリが存在しません。" + +#: components/file.inc:326 +msgid "Allow users to submit files of the configured types." +msgstr "設定した形式のファイルをユーザが送信できるようにします。" + +#: components/file.inc:377 +msgid "User uploaded file" +msgstr "ユーザがアップロードしたファイル" + +#: components/file.inc:378 +msgid "Average uploaded file size" +msgstr "アップロードファイルの平均サイズ" + +#: components/grid.inc:15 +#: components/select.inc:16 +msgid "Options" +msgstr "オプション" + +#: components/grid.inc:17 +msgid "Options to select across the top. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "グリッドの最上部に表示する選択肢。1行につき1つのオプションを入力します。キーと値の組み合わせはパイプ(|)で区切ります。例) safe_key|表示するオプション" + +#: components/grid.inc:25 +msgid "Questions" +msgstr "質問" + +#: components/grid.inc:27 +msgid "Questions list down the left side. One question per line." +msgstr "グリッドの左側に並べる質問。1行につき1つの質問を入力します。" + +#: components/grid.inc:35 +msgid "Randomize Options" +msgstr "オプションをランダム表示" + +#: components/grid.inc:37 +msgid "Randomizes the order of options on the top when they are displayed in the form." +msgstr "フォームを表示する度に、オプションの順番をランダムにします。" + +#: components/grid.inc:41 +msgid "Randomize Questions" +msgstr "質問をランダム表示" + +#: components/grid.inc:43 +msgid "Randomize the order of the questions on the side when they are displayed in the form." +msgstr "フォームを表示する度に、質問の順番をランダムにします。" + +#: components/grid.inc:54 +msgid "The options for this grid contain illegal characters (quotes or spaces). Specify your options as <em>safe_value_no_spaces</em>|<em>The Real Value</em>." +msgstr "このグリッドのオプションに無効な文字が含まれています (クオートや空白)。<em>空白なしの安全な値</em>|<em>表示する値</em>という形式でオプションを指定してください。" + +#: components/grid.inc:64 +msgid "The questions for this grid contain illegal characters (quotes or spaces)." +msgstr "このグリッドの質問に無効な文字が含まれています (クオートや空白)。" + +#: components/grid.inc:210 +msgid "Allows creation of grid questions, denoted by radio buttons." +msgstr "格子の各マスにラジオボタンがあって、そこから選択するといった質問を作成できるようになります。" + +#: components/hidden.inc:76 +msgid "@name (hidden)" +msgstr "@name (hidden)" + +#: components/hidden.inc:87 +msgid "Create a field which is not visible to the user, but is recorded with the submission." +msgstr "ユーザには表示されないが、送信内容には記録されるフィールドを作成します。" + +#: components/hidden.inc:122 +msgid "Empty" +msgstr "内容なし" + +#: components/hidden.inc:123 +msgid "Non-empty" +msgstr "内容あり" + +#: components/markup.inc:19 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "HTMLやPHPのコードをフォームに挿入することができます。" + +#: components/markup.inc:41 +msgid "Preview" +msgstr "プレビュー" + +#: components/markup.inc:81 +msgid "Presents a markup area of text. Does not render a field." +msgstr "マークアップされたテキストを表示。フィールドを生成しません。" + +#: components/pagebreak.inc:13 +msgid "Use caution when combining the pagebreak and file components. File components will not be submitted unless they are after the last pagebreak in the form." +msgstr "改ページとファイル項目を組み合わせるときは注意してください。最後の改ページの後にファイル項目がなければ、ファイルが送信されません。" + +#: components/pagebreak.inc:40 +msgid "Break up a multi-page form." +msgstr "複数ページにわたるフォームを区切ります。" + +#: components/select.inc:18 +msgid "A list of selectable options. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "選択可能なオプションの一覧。1行につき1つのオプションです。キーと値の組み合わせをパイプで区切って入力することもできます。例) safe_key|表示するオプション" + +#: components/select.inc:28 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "この項目にデフォルトでセットされる値。複数を選択するには、選択肢をコンマ区切りで入力してください。" + +#: components/select.inc:35 +msgid "Multiple" +msgstr "複数" + +#: components/select.inc:38 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "チェックを入れると、ユーザが複数の値を選択できるようになります。" + +#: components/select.inc:42 +msgid "Listbox" +msgstr "リストボックス" + +#: components/select.inc:45 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "チェックを入れると、項目の選択肢を、ラジオボタンやチェックボックスではなく、リストボックスで表示します。" + +#: components/select.inc:63 +msgid "The options for this select contain illegal characters (quotes or spaces). Specify your options as <em>safe_value_no_spaces</em>|<em>The Real Value</em>." +msgstr "このセレクトのオプションに無効な文字が含まれています (クオートや空白)。<em>空白なしの安全な値</em>|<em>表示する値</em>という形式でオプションを指定してください。" + +#: components/select.inc:310 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "チェックボックスやラジオボタン、セレクトメニューを作成できます。" + +#: components/textarea.inc:33 +msgid "Height" +msgstr "高さ" + +#: components/textarea.inc:35 +msgid "Height of the textfield." +msgstr "テキストフィールドの高さ" + +#: components/textarea.inc:108 +msgid "A large text area that allows for multiple lines of input." +msgstr "複数行の入力が可能なテキストエリア。" + +#: components/textfield.inc:34 +msgid "Maxlength" +msgstr "最大文字数" + +#: components/textfield.inc:36 +msgid "Maxlength of the textfield." +msgstr "テキストフィールドの最大文字数。" + +#: components/textfield.inc:109 +msgid "Basic textfield type." +msgstr "一般的なテキストフィールド。" + +#: components/time.inc:16 +msgid "Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are all valid." +msgstr "<a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU 日付入力の書式</a>にしたがいます。例えば、「now」「+2 hours」「10:30pm」などです。" + +#: components/time.inc:26 +msgid "Adjust the time according to a specific timezone. Website timezone is defined in the <a href=\"%settings\">Site Settings</a> and is the default." +msgstr "特定のタイムゾーンにしたがって時間を調整します。ウェブサイトのタイムゾーンは<a href=\"%settings\">サイトの環境設定</a>で選択し、それがデフォルトとなります。" + +#: components/time.inc:40 +msgid "Time Format" +msgstr "時刻の書式" + +#: components/time.inc:42 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "12時間表記にするか24時間表記にするか" + +#: components/time.inc:96 +msgid "hour" +msgstr "時" + +#: components/time.inc:97 +msgid "minute" +msgstr "分" + +#: components/time.inc:100 +msgid "am" +msgstr "午前" + +#: components/time.inc:100 +msgid "pm" +msgstr "午後" + +#: components/time.inc:209 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "時間と分を入力する項目を作成します。午前/午後の選択肢も追加することができます。" + diff --git a/sites/all/modules/webform/translations/nl.po b/sites/all/modules/webform/translations/nl.po new file mode 100644 index 0000000000000000000000000000000000000000..afe317e72da6e1090977013136e1d785e255096f --- /dev/null +++ b/sites/all/modules/webform/translations/nl.po @@ -0,0 +1,1620 @@ +# $Id: nl.po,v 1.5 2011/01/05 04:39:01 quicksketch Exp $ +# +# Dutch translation of Drupal (general) +# Copyright YEAR NAME <EMAIL@ADDRESS> +# Generated from files: +# webform-confirmation.tpl.php,v 1.1.2.3 2009/01/09 08:31:06 quicksketch +# webform_report.inc,v 1.17.2.14 2009/02/14 03:19:01 quicksketch +# webform-mail.tpl.php,v 1.1.2.4 2009/01/19 03:31:10 quicksketch +# webform_components.inc,v 1.9.2.28 2009/02/14 19:57:38 quicksketch +# webform.module,v 1.124.2.94 2009/02/14 08:18:14 quicksketch +# file.inc,v 1.4.2.32 2009/02/14 07:19:32 quicksketch +# markup.inc,v 1.5.2.7 2009/01/09 08:31:06 quicksketch +# webform_submissions.inc,v 1.6.2.23 2009/02/14 06:26:23 quicksketch +# webform_export.inc,v 1.1.4.5 2009/02/14 01:03:37 quicksketch +# webform.info: n/a +# webform.install,v 1.22.2.16 2009/01/19 03:00:11 quicksketch +# date.inc,v 1.15.2.17 2009/01/10 02:12:14 quicksketch +# email.inc,v 1.19.2.11 2009/01/11 03:01:48 quicksketch +# hidden.inc,v 1.12.2.10 2009/01/09 08:31:06 quicksketch +# select.inc,v 1.22.2.28 2009/02/15 23:51:36 quicksketch +# textarea.inc,v 1.12.2.12 2009/02/14 20:08:26 quicksketch +# textfield.inc,v 1.12.2.9 2009/01/11 03:01:47 quicksketch +# time.inc,v 1.16.2.9 2009/01/09 08:31:06 quicksketch +# fieldset.inc,v 1.4.2.7 2009/01/09 08:31:06 quicksketch +# grid.inc,v 1.3.2.17 2009/01/11 02:51:47 quicksketch +# pagebreak.inc,v 1.3.2.4 2009/01/09 08:31:06 quicksketch +# +msgid "" +msgstr "" +"Project-Id-Version: Webform 6.x-2.6\n" +"POT-Creation-Date: 2008-05-26 08:39+0200\n" +"PO-Revision-Date: 2009-05-24 11:58+0100\n" +"Last-Translator: Gert van de Venis <gvdvenis@gmail.com>\n" +"Language-Team: <gvdvenis@hotmail.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-Language: Dutch\n" +"X-Poedit-Country: NETHERLANDS\n" + +#: webform-confirmation.tpl.php:23 +#: webform_report.inc:154 +msgid "Go back to the form" +msgstr "Terug naar formulier" + +#: webform-mail.tpl.php:26 +msgid "Submitted on @date" +msgstr "Ingezonden op @date" + +#: webform-mail.tpl.php:29 +msgid "Submitted by user: @username [@ip_address]" +msgstr "Ingezonden door gebruiker: @username [@ip_address]" + +#: webform-mail.tpl.php:31 +msgid "Submitted by anonymous user: [@ip_address]" +msgstr "Ingezonden door anonieme gebruiker: [@ip_address]" + +#: webform-mail.tpl.php:35 +msgid "Submitted values are" +msgstr "Ingevulde gegevens zijn:" + +#: webform-mail.tpl.php:44 +msgid "The results of this submission may be viewed at:" +msgstr "Het resultaat van deze inzending kan worden bekeken op:" + +#: webform_components.inc:44;135;364 +msgid "Weight" +msgstr "Gewicht" + +#: webform_components.inc:49;135;329 +msgid "Mandatory" +msgstr "Verplicht" + +#: webform_components.inc:55;135 +msgid "E-mail" +msgstr "E-mailadres" + +#: webform_components.inc:97;235;261 +msgid "Add" +msgstr "Toevoegen" + +#: webform_components.inc:103;397 +#: webform.module:1531;1548;1669 +msgid "Submit" +msgstr "Indienen" + +#: webform_components.inc:109;255 +msgid "Publish" +msgstr "Publiceren" + +#: webform_components.inc:135 +#: webform.module:889;1362 +#: components/file.inc:556 +msgid "Name" +msgstr "Naam" + +#: webform_components.inc:135 +#: webform.module:890 +msgid "Type" +msgstr "Type" + +#: webform_components.inc:135 +#: components/markup.inc:39 +msgid "Value" +msgstr "Waarde" + +#: webform_components.inc:135 +#: webform_report.inc:99 +#: webform.module:2195 +msgid "Operations" +msgstr "Bewerkingen" + +#: webform_components.inc:140 +msgid "New component name" +msgstr "Nieuw besturingselement" + +#: webform_components.inc:196 +#: webform_report.inc:137 +#: webform.module:2206;233 +msgid "Edit" +msgstr "Bewerken" + +#: webform_components.inc:197 +msgid "Clone" +msgstr "Dupliceren" + +#: webform_components.inc:198;487 +#: webform_report.inc:138 +#: webform_submissions.inc:105 +#: webform.module:243 +msgid "Delete" +msgstr "Verwijderen" + +#: webform_components.inc:220 +msgid "No Components, add a component below." +msgstr "Geen besturingselementen, voeg een besturingselement toe." + +#: webform_components.inc:236 +msgid "When adding a new component, the name field is required." +msgstr "Bij toevoegen van een nieuw besturingselement is invullen van het naam-veld vereist." + +#: webform_components.inc:258 +msgid "Your webform has been published." +msgstr "Uw webformulier is gepubliceerd" + +#: webform_components.inc:266 +msgid "The component positions and mandatory values have been updated." +msgstr "De posities van de besturingselementen en verplichte waarden zijn bijgewerkt." + +#: webform_components.inc:271 +msgid "Edit component: @name (@type)" +msgstr "Bewerk besturingselement: @name (@type)" + +#: webform_components.inc:297 +msgid "Label" +msgstr "Label" + +#: webform_components.inc:298 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "Deze tekst wordt als toelichting onder dit besturingselement weergegeven" + +#: webform_components.inc:306 +#: webform.module:663;1362 +msgid "Description" +msgstr "Beschrijving" + +#: webform_components.inc:307 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "Een korte beschrijving van het veld bedoeld om de gebruiker op weg te helpen." + +#: webform_components.inc:313 +msgid "Advanced settings" +msgstr "Geavanceerde instellingen" + +#: webform_components.inc:322 +msgid "Field Key" +msgstr "Sleutelveld" + +#: webform_components.inc:323 +msgid "Enter a machine readable key for this form element. May contain only lowercase alphanumeric characters and underscores. This key will be used as the name attribute of the form element. This value has no effect on the way data is saved, but may be helpful if using Additional Processing or Validation code." +msgstr "Vul een machine leesbare sleutelwaarde in voor dit besturingselement. Gebruik alleen kleine alfanumerieke karakters en underscores (_). Deze sleutelwaarde zal worden gebruikt als het naam attribuut van dit besturingselement. Deze waarde heeft geen invloed op de manier waarop gegevens worden opgeslagen, maar het kan wel handig zijn om een leesbaare waarde te gebruiken indien u aanvullende verwerking of validatie in dit formulier wenst te gebruiken." + +#: webform_components.inc:331 +msgid "Check this option if the user must enter a value." +msgstr "Selecteer deze optie als de gebruiker verplicht een waarde moet invullen." + +#: webform_components.inc:337 +msgid "Include in e-mails" +msgstr "Opnemen in E-Mailberichten" + +#: webform_components.inc:339 +msgid "If checked, submitted values from this component will be included in e-mails." +msgstr "Indien geselecteerd zullen de ingevulde waarden van dit besturingselement worden opgenomen in E-Mail berichten." + +#: webform_components.inc:345 +msgid "Root" +msgstr "Basis" + +#: webform_components.inc:353 +msgid "Parent Fieldset" +msgstr "Bovenliggend onderdeel" + +#: webform_components.inc:355 +msgid "Optional. You may organize your form by placing this component inside another fieldset." +msgstr "Optioneel. Het formulier kan worden gestructureerd door dit onderdeel in een groepsvak op te nemen." + +#: webform_components.inc:366 +msgid "Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top." +msgstr "Optioneel. In het menu zullen zwaardere onderdelen naar de bodem zakken en lichtere onderdelen hoger worden gepositioneerd." + +#: webform_components.inc:378 +msgid "The webform component of type @type does not have an edit function defined." +msgstr "Het webformulieronderdeel van type @type heeft geen gedefinieerde bewerkingsfunctie." + +#: webform_components.inc:411 +msgid "The field key %field_key is invalid. Please include only lowercase alphanumeric characters and underscores." +msgstr "Veldnaam %field_key is ongeldig. Alleen kleine letters, cijfers en \"_\" zijn toegestaan." + +#: webform_components.inc:416 +msgid "The field key %field_key is already in use by the field labeled %existing_field. Please use a unique key." +msgstr "Veldnaam %field_key is al gebruikt in het veld %existing_field. Gebruik een andere naam." + +#: webform_components.inc:450 +msgid "Component %name cloned." +msgstr "Besturingselement %name is gedupliceerd." + +#: webform_components.inc:454 +msgid "Component %name updated." +msgstr "Besturingselement %name is bijgewerkt." + +#: webform_components.inc:458 +msgid "New component %name added." +msgstr "Nieuw besturingselement %name toegevoegd." + +#: webform_components.inc:479 +msgid "Delete the %name fieldset?" +msgstr "Groepsvak %name verwijderen?" + +#: webform_components.inc:480 +msgid "This will immediately delete the %name fieldset and all children elements within %name from the %webform webform. This cannot be undone." +msgstr "Deze actie zal het groepsvak %name en alle besturingselementen erin uit het webformulier %webform verwijderen. Dit kan niet ongedaan gemaakt worden." + +#: webform_components.inc:483 +msgid "Delete the %name component?" +msgstr "Besturingselement %name verwijderen?" + +#: webform_components.inc:484 +msgid "This will immediately delete the %name component from the %webform webform. This cannot be undone." +msgstr "Deze actie zal het besturingselement %name uit het webformulier %webform verwijderen. Dit kan niet ongedaan gemaakt worden." + +#: webform_components.inc:491 +msgid "Component %name deleted." +msgstr "Besturingselement %name is verwijderd." + +#: webform_export.inc:21 +msgid "Delimited text" +msgstr "Karaktergescheiden tekst" + +#: webform_export.inc:22 +msgid "A plain text file delimited by commas, tabs, or other characters." +msgstr "Een standaard tekstbestand, gescheiden door komma's, tabs of andere karakters." + +#: webform_export.inc:26 +msgid "Microsoft Excel" +msgstr "Microsoft Excel (.xls)" + +#: webform_export.inc:27 +msgid "A file readable by Microsoft Excel." +msgstr "Een bestand dat leesbaar is in Microsoft Excel." + +#: webform_report.inc:28 +msgid "Submissions for %user" +msgstr "Inzendingen van %user" + +#: webform_report.inc:58 +msgid "All" +msgstr "Alle" + +#: webform_report.inc:71 +msgid "Show !count results per page." +msgstr "Toon !count resultaten per pagina." + +#: webform_report.inc:74 +msgid "Showing all results." +msgstr "Alle resultaten worden weergegeven." + +#: webform_report.inc:77 +msgid "@total results total." +msgstr "@total inzendingen in totaal. " + +#: webform_report.inc:92;187 +msgid "#" +msgstr "#" + +#: webform_report.inc:93;188 +msgid "Submitted" +msgstr "Ingediend" + +#: webform_report.inc:96;189 +msgid "User" +msgstr "Gebruiker" + +#: webform_report.inc:97;190;398 +msgid "IP Address" +msgstr "IP Adres" + +#: webform_report.inc:135 +#: webform.module:2194;223 +msgid "View" +msgstr "Weergeven" + +#: webform_report.inc:147;248;491 +msgid "There are no submissions for this form. <a href=\"!url\">View this form</a>." +msgstr "Er zijn geen inzendingen voor dit webformulier beschikbaar <a href=\"!url\">Bekijk dit webformulier</a>." + +#: webform_report.inc:279 +msgid "Clear Form Submissions" +msgstr "Inzendingen verwijderen" + +#: webform_report.inc:283 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "Weet u zeker dat u alle inzendingen van dit formulier wilt verwijderen?" + +#: webform_report.inc:285 +#: webform.module:2207;193 +msgid "Clear" +msgstr "Leegmaken" + +#: webform_report.inc:285 +#: webform_submissions.inc:105 +msgid "Cancel" +msgstr "Annuleren" + +#: webform_report.inc:293 +msgid "Webform %title entries cleared." +msgstr "Inzendingen van webformulier %title zijn verwijderd." + +#: webform_report.inc:314 +msgid "Export format" +msgstr "Export formaat" + +#: webform_report.inc:321 +msgid "Delimited text format" +msgstr "Karaktergescheiden tekstformaat" + +#: webform_report.inc:322 +#: webform.module:1313 +msgid "This is the delimiter used in the CSV/TSV file when downloading Webform results. Using tabs in the export is the most reliable method for preserving non-latin characters. You may want to change this to another character depending on the program with which you anticipate importing results." +msgstr "Dit is het scheidingsteken in het CSV/TSV gedownloade bestand met webform resultaten. Het gebruiken van tabs in het exportbestand is over het algemeen het meest betrouwbaar aangaande het behouden van \"non-latin\" karakters. Wellicht wilt u deze standaardwaarde veranderen, afhankelijk van het programma dat u gaat gebruiken om het resultaatbestand in te lezen." + +#: webform_report.inc:325 +#: webform.module:1316 +msgid "Comma (,)" +msgstr "Komma (,)" + +#: webform_report.inc:326 +#: webform.module:1317 +msgid "Tab (\\t)" +msgstr "Tab (\\t)" + +#: webform_report.inc:327 +#: webform.module:1318 +msgid "Semicolon (;)" +msgstr "Puntkomma (;)" + +#: webform_report.inc:328 +#: webform.module:1319 +msgid "Colon (:)" +msgstr "Dubbele punt (:)" + +#: webform_report.inc:329 +#: webform.module:1320 +msgid "Pipe (|)" +msgstr "Sluisteken (|)" + +#: webform_report.inc:330 +#: webform.module:1321 +msgid "Period (.)" +msgstr "Punt (.)" + +#: webform_report.inc:331 +#: webform.module:1322 +msgid "Space ( )" +msgstr "Spatie ( )" + +#: webform_report.inc:337 +#: webform.module:2205;183 +msgid "Download" +msgstr "Download" + +#: webform_report.inc:397 +msgid "Submission Details" +msgstr "Inzendingsdetails" + +#: webform_report.inc:398 +msgid "Serial" +msgstr "Serienummer:" + +#: webform_report.inc:398 +msgid "SID" +msgstr "SID" + +#: webform_report.inc:398 +msgid "Time" +msgstr "Tijd" + +#: webform_report.inc:398 +msgid "UID" +msgstr "UID" + +#: webform_report.inc:398 +msgid "Username" +msgstr "Gebruikersnaam" + +#: webform_report.inc:470 +msgid "Q" +msgstr "Q" + +#: webform_report.inc:471 +msgid "responses" +msgstr "reacties" + +#: webform_submissions.inc:98 +msgid "Delete Form Submission" +msgstr "Inzending verwijderen" + +#: webform_submissions.inc:103 +msgid "Are you sure you want to delete this submission?" +msgstr "Weet u zeker dat u deze inzendig wilt verwijderen?" + +#: webform_submissions.inc:110 +msgid "Submission deleted." +msgstr "Inzending verwijderd." + +#: webform.module:22 +msgid "Webforms are forms and questionnaires. To add one, select <a href=\"!url\">Create content -> Webform</a>." +msgstr "Webformulieren zijn formulieren en vragenlijsten. Kies <a href=\"!url\">Inhoud toevoegen-> Webformulier</a> om een webformulier aan te maken." + +#: webform.module:25 +msgid "" +"<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will be sent. If no email address is specified, no e-mail will be sent when submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will be used to populate the return e-mail address on any sent e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that will be used to populate the subject e-mail field on any sent e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown after you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database table <i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" +"<p>Met deze module kunt u formulieren of vragenlijsten aanmaken en de inhoud ervan definiëren. Inzendingen van deze formulieren worden opgeslagen in de database en naar keuze ook per e-mail verstuurd naar een vooraf ingesteld adres.</p>\n" +" <p>Zo kunt u een formulier aanmaken:</p>\n" +" <ul>\n" +" <li>Ga naar 'Inhoud aanmaken' en voeg een webformulier toe</li>\n" +" <li>Voeg een beschrijving toe die bovenaan het formulier en als voorproefje wordt getoond.</li>\n" +" <li>Voeg een bevestiging toe, of een omleiding naar een pagaina die wordt getoond na een geslaagde inzending.</li>\n" +" <li>Voeg een of meer onderdelen toe.</li>\n" +" <li>Kies naar wens een e-mailadres waar inzendingen naartoe worden gestuurd. Als er geen e-mailadres wordt opgegeven wordt er geen e-mail verstuurd.</li>\n" +" <li>Kies naar wens een e-mailadres of verborgen veld dat wordt gebruikt als Reply-to-adres voor een verstuurde e-mail.</li>\n" +" <li>Kies naar wens een tekstveld of verborgen veld dat wordt gebruikt als onderwerp voor een verstuurde e-mail.</li>\n" +" </ul>\n" +" <p>Hulpinformatie voor het toevoegen en instellen van onderdelen wordt getoond na het toevoegen van het eerste onderdeel.</p>\n" +" <p>De inhoud van verstuurde formulieren wordt opgeslagen in de database-tabel <em>webform_submitted_data</em> als sleutel-waarde-combinaties.</p>\n" +" " + +#: webform.module:41 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "Een webformulier kan een vragenlijst zijn, een contactformulier of een aanvraagformulier. Het kan worden gebruikt om bezoekers contact te laten opnemen, te laten registreren voor een evenement, of voor een uitgebreide enquête." + +#: webform.module:44 +msgid "This page displays all the components currently configured for this webform node. You may add any number of components to the form, even multiple of the same type. To add a new component, fill in a name and select a type from the fields at the bottom of the table. Submit the form to create the new component or update any changed form values." +msgstr "Deze pagina geeft alle besturingselementen weer die voor dit webformulier zijn geconfigureerd. Er kunnen onbeperkt besturingselementen aan worden toegevoegd. Zelfs meerdere besturingselementen van hetzelfde type zijn toegestaan. Om een nieuw besturingselement toe te voegen, kan onderaan de lijst een naam worden ingevuld en het juiste type besturingselement worden geselecteerd. Een klik op de knop voegt het besturingselement vervolgens toe aan dit webformulier." + +#: webform.module:45 +msgid "Click on any existing component's name to edit its settings." +msgstr "Klik op een van de bestaande besturingselementen om de instellingen ervan te bewerken." + +#: webform.module:74 +msgid "View and edit all the available webforms on your site." +msgstr "Weergeven en bewerken van alle beschikbare webformulieren op de site." + +#: webform.module:85 +msgid "Global configuration of webform functionality." +msgstr "Algemene instellingen van de webformuliermodule." + +#: webform.module:416;80 +#: webform.info:0 +msgid "Webform" +msgstr "Webformulier" + +#: webform.module:418 +msgid "Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users." +msgstr "Een nieuw formulier of vragenlijst aanmaken. Resultaten en statistieken worden opgeslagen en zijn toegankelijk voor gebruikers met de juiste rechten." + +#: webform.module:604 +msgid "Go to form" +msgstr "Ga naar formulier" + +#: webform.module:606 +msgid "View this form." +msgstr "Bekijk dit formulier" + +#: webform.module:645 +msgid "Webform Settings" +msgstr "Webformulier instellingen" + +#: webform.module:654;2193 +msgid "Title" +msgstr "Titel" + +#: webform.module:664 +msgid "Text to be shown as teaser and before the form." +msgstr "Tekst die wordt getoond bovenaan het formulier en als teaser." + +#: webform.module:673 +msgid "Confirmation message or redirect URL" +msgstr "Bevestigingsbericht of doorstuur-URL" + +#: webform.module:674 +msgid "Message to be shown upon successful submission or a path to a redirect page. Preface message with <em>message:</em> for a simple message that does not require a page refresh. Redirect pages must start with <em>http://</em> for external sites or <em>internal:</em> for an internal path. i.e. <em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "Mededeling of pad naar een pagina die moet worden getoond na een succesvolle inzending. Laat een eenvoudige mededeling, waarbij geen pagina refresh vereist is voorafgaan door <em>message:</em>. Doorstuur pagina's moeten voorafgegaan worden <em>http://</em> voor externe pagina's of <em>internal:</em> voor een intern (Drupal) pad. Bijv. <em>http://www.voorbeeld.com</em> of <em>internal:node/10</em>." + +#: webform.module:686 +msgid "Webform access control" +msgstr "Webformulier toegangsrechten" + +#: webform.module:691 +msgid "These permissions affect which roles can submit this webform. It does not prevent access to the webform page. If needing to prevent access to the webform page entirely, use a content access module such as <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> or <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." +msgstr "Deze permissies bepalen welke gebruikersrollen dit formulier mogen inzenden. Het beperkt echter niet de toegang tot het formulier. Als u de toegang tot het dit webformulier wilt beperken, gebruik dan een content access module zoals bijv. <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> of <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." + +#: webform.module:699 +msgid "Roles that can submit this webform" +msgstr "Gebruikersrollen die dit formulier mogen inzenden." + +#: webform.module:700 +msgid "Uncheck all roles to prevent new submissions. The %authenticated role applies to any user signed into the site, regardless of other assigned roles." +msgstr "De-selecteer alle rollen om nieuwe inzendingen te verhinderen. De %authenticated rol is van toepassing op elke gebruiker die zich heeft aangemeld op de site, ongeacht eventueel aanvullend toegekende rollen." + +#: webform.module:707 +msgid "Webform mail settings" +msgstr "Webformulier E-Mail instellingen" + +#: webform.module:717 +msgid "E-mail to address" +msgstr "E-Mail naar adres" + +#: webform.module:720 +msgid "Form submissions will be e-mailed to this address. Leave blank for none. Multiple e-mail addresses may be separated by commas." +msgstr "Inzendingen worden naar dit adres gestuurd. Laat dit veld leeg om geen e-mails te sturen. Meerdere E-Mailadressen kunnen door komma's van elkaar worden gescheiden." + +#: webform.module:728 +msgid "Conditional e-mail recipients" +msgstr "Conditionele E-Mailontvangers" + +#: webform.module:729 +msgid "The settings below allow you to send e-mails to multiple recipients based off the value of a component." +msgstr "De onderstaande instellingen maken het mogelijk E-Mails aan meerdere ontvangers te versturen, gebaseerd op de waarde van een (ander) besturingselement." + +#: webform.module:753 +msgid "E-mail from name" +msgstr "Naam van afzender" + +#: webform.module:754 +msgid "After adding components to this form any email, select, or hidden form element may be selected as the sender's name for e-mails." +msgstr "Na het toevoegen van onderdelen aan dit formulier kan een E-Mail, select of verborgen veld worden gebruikt als afzendernaam voor e-mails." + +#: webform.module:758 +msgid "E-mail from address" +msgstr "E-mailadres van afzender" + +#: webform.module:759 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the sender's e-mail address." +msgstr "Nadat aan dit formulier onderdelen zijn toegevoegd kan een tekst, slect of verborgen veld worden geselecteerd als afzenders E-Mailadres." + +#: webform.module:763 +msgid "E-mail subject" +msgstr "Onderwerp van de E-Mail" + +#: webform.module:764 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the subject for e-mails." +msgstr "Na het toevoegen van onderdelen aan dit formulier kan een tekst, select, of verborgen veld worden gebruikt als onderwerpregel voor e-mails." + +#: webform.module:799 +msgid "Webform advanced settings" +msgstr "Geavanceerde webformulier instellingen" + +#: webform.module:807 +msgid "Show complete form in teaser" +msgstr "Geef het complete formulier weer in de teaser." + +#: webform.module:809 +msgid "Display the entire form in the teaser display of this node." +msgstr "Geef het complete formulier weer in de teaser weergave van deze node." + +#: webform.module:813 +msgid "Limit the number of submissions a user may send within a specified time period" +msgstr "Beperk het aantal inzendingen dat een gebruiker binnen een bepaalde periode mag insturen." + +#: webform.module:818 +msgid "Unlimited" +msgstr "Onbeperkt" + +#: webform.module:832 +msgid "ever" +msgstr "ooit" + +#: webform.module:833 +msgid "every hour" +msgstr "per uur" + +#: webform.module:834 +msgid "every day" +msgstr "elke dag" + +#: webform.module:835 +msgid "every week" +msgstr "elke week" + +#: webform.module:842 +msgid "Submit button text" +msgstr "Tekst voor verzendknop" + +#: webform.module:844 +msgid "By default the submit button on this form will have the label <em>Submit</em>. Enter a new title here to override the default." +msgstr "De standaardtekst op de verzend-knop onderaan het formulier is <em>Verzenden</em>. Vul hier eventueel een vervangende tekst in." + +#: webform.module:849 +msgid "Additional Validation" +msgstr "Aanvullende validatie" + +#: webform.module:850 +msgid "Enter PHP code to perform additional validation for this form. Include the <?php ?> tags. $form and $form_state are available variables. If validation fails, use the form_set_error function to prevent the form from being submitted. Use the same syntax as a _validate function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Voer PHP-code in om extra validatie aan dit formulier toe te voegen. Maak gebruik van de <?php ?> tags. $form en $form_state zijn beschikbare variabelen. Gebruik, als de validatie mislukt, de functie form_set_error om te voorkomen dat het formulier werkelijk wordt verstuurd. Gebruik dezelfde syntax als de _validate functie gebruikt in de <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." + +#: webform.module:858 +msgid "Additional Processing" +msgstr "Aanvullende Verwerking" + +#: webform.module:859 +msgid "Enter PHP code to perform additional processing for this form (after the validation). Include the <?php ?> tags. $form and $form_state are available variables, use the same syntax as a _submit function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Voer PHP-code in om extra verwerkingsstappen aan dit formulier toe te voegen (na de validatie). Maak gebruik van de <?php ?> tags. $form en $form_state zijn beschikbare variabelen. Gebruik dezelfde syntax als de _submit-functie gebruikt in de <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." + +#: webform.module:888 +msgid "To" +msgstr "Aan" + +#: webform.module:903 +msgid "No components yet in this webform." +msgstr "Er bevinden zich nog geen besturingselementen in dit webformulier." + +#: webform.module:918 +msgid "Custom" +msgstr "Aangepast" + +#: webform.module:918 +msgid "Component" +msgstr "Besturingselement" + +#: webform.module:929 +msgid "Default" +msgstr "Standaard" + +#: webform.module:950 +msgid "Limit to !count submission(s) !timespan" +msgstr "Beperk tot !count inzending(en) !timespan" + +#: webform.module:963;970 +msgid "The entered email address %address is not a valid address." +msgstr "Het opgegeven E-Mailadres %address is ongeldig." + +#: webform.module:1044 +msgid "The new webform %title has been created. Add new fields to your webform with the form below." +msgstr "Het nieuwe webformulier %title is aangemaakt. Voeg niewe velden aan dit webformulier to middels onderstaand formulier." + +#: webform.module:1047 +msgid "This webform is currently unpublished. After finishing your changes to the webform, use the <em>Publish</em> button below." +msgstr "Dit webformulier is op dit moment niet gepubliceerd. Als alle wijzigingen aan dit formulier gereed zijn, kan de onderstaande <em>Publiceren</em> knop gebruikt worden om het webformulier te publiceren." + +#: webform.module:1184 +msgid "Submissions for this form are closed." +msgstr "Inzenden van dit formulier is niet langer mogelijk." + +#: webform.module:1188 +msgid "You must <a href=\"!login\">login</a> or <a href=\"!register\">register</a> to view this form." +msgstr "U moet <a href=\"!login\">inloggen</a> of <a href=\"!register\">registreren</a> om dit formulier te kunnen bekijken." + +#: webform.module:1192 +msgid "You do not have permission to view this form." +msgstr "U bent niet gemachtigd om dit formulier te bekijken." + +#: webform.module:1199 +msgid "You have submitted this form the maximum number of times (@count)." +msgstr "U heeft het maximaal voor u toegestane aantal inzendingen (@count) van dit formulier bereikt." + +#: webform.module:1202;1213 +msgid "You have already submitted this form." +msgstr "U heeft dit formulier reeds ingezonden." + +#: webform.module:1205 +msgid "You may not submit another entry at this time." +msgstr "U kunt op dit moment niet nog een inzending doen." + +#: webform.module:1213;1216 +msgid "<a href=\"!url\">View your previous submissions</a>." +msgstr "<a href=\"!url\">Bekijk uw eerdere inzendingen</a>." + +#: webform.module:1242 +msgid "Available components" +msgstr "Beschikbare besturingselementen" + +#: webform.module:1245 +msgid "These are the available field types for your installation of Webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms." +msgstr "Hieronder worden de voor webformulieren beschikbare veldtypen getoond. U kunt onderdelen uitschakelen door het bijbehorende keuzevakje uit te vinken. Alleen aangevinkte onderdelen zijn beschikbaar voor bestaande en nieuwe webformulieren." + +#: webform.module:1262 +msgid "Default e-mail values" +msgstr "Standaard E-Mailadres" + +#: webform.module:1269 +msgid "From address" +msgstr "E-mailadres afzender" + +#: webform.module:1271 +msgid "The default sender address for emailed webform results; often the e-mail address of the maintainer of your forms." +msgstr "Standaard afzenderadres voor verstuurde webformulier resultaten; vaak is dit het adres van de beheerder van de formulieren." + +#: webform.module:1276 +msgid "From name" +msgstr "Naam afzender" + +#: webform.module:1278 +msgid "The default sender name which is used along with the default from address." +msgstr "Standaard afzendernaam, wordt samen met het e-mailadres weergegeven." + +#: webform.module:1283 +msgid "Default subject" +msgstr "Standaard onderwerp" + +#: webform.module:1284;2244 +msgid "Form submission from: %title" +msgstr "Formulierinzending van: %title" + +#: webform.module:1285 +msgid "The default subject line of any e-mailed results." +msgstr "De standaard onderwerpregel voor bevestigings E-Mails." + +#: webform.module:1290 +msgid "Advanced options" +msgstr "Geavanceerde opties" + +#: webform.module:1298 +msgid "Allow cookies for tracking submissions" +msgstr "Cookies gebruiken voor het volgen van inzendingen" + +#: webform.module:1300 +msgid "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, Webform also uses IP addresses and site usernames to prevent repeated submissions." +msgstr "Met <a href=\"http://nl.wikipedia.org/wiki/Cookies\">Cookies</a> kan worden voorkomen dat een gebruiker meerdere malen hetzelfde formulier verzendt. Deze functie is niet nodig om het aantal inzendingen per gebruiker te beperken, maar kan in bepaalde gevallen wel de nauwkeurigheid verhogen. Naast cookies gebruikt de webformuliermodule ook IP-adressen en gebruikersnamen om herhaalde inzendingen te voorkomen." + +#: webform.module:1305 +msgid "Default export format" +msgstr "Standaard exportformaat" + +#: webform.module:1312 +msgid "Default export delimiter" +msgstr "Standaard scheidingskarakter voor export bestanden." + +#: webform.module:1328 +msgid "Submission access control" +msgstr "Inzendingen toegangscontrole" + +#: webform.module:1330 +msgid "Select the user roles that may submit each individual webform" +msgstr "Selecteer de gebruikersrollen die elk individueel webformulier mogen inzenden." + +#: webform.module:1331 +msgid "Disable Webform submission access control" +msgstr "Schakel het webformulier toegangsbeheer uit." + +#: webform.module:1334 +msgid "By default, the configuration form for each webform allows the administrator to choose which roles may submit the form. You may want to allow users to always submit the form if you are using a separate node access module to control access to webform nodes themselves." +msgstr "Standaard stelt het beheer van elk webformulier de beheerder in staat de rollen te selecteren die dat formulier mogen inzenden. Mogelijkerwijs wilt u gebruikers altijd in staat stellen webformulieren in te zenden. Bsijvoorbeeld als u al gebruik maakt van een aparte node access module voor toegangsbeheer tot webform nodes." + +#: webform.module:1339 +msgid "Webforms debug" +msgstr "Webformulier debug" + +#: webform.module:1341 +msgid "Off" +msgstr "Uit" + +#: webform.module:1341 +msgid "Log submissions" +msgstr "Inzendingen bijhouden in logboek" + +#: webform.module:1341 +msgid "Full debug" +msgstr "Maximale debug" + +#: webform.module:1342 +msgid "Set to \"Log submissions\" to log all submissions in the watchdog. Set to \"Full debug\" to print debug info on submission." +msgstr "Kies \"Log inzendingen\" om alle inzendingen in de log bij te houden. Kies \"Volledig debuggen\" om debug-gegevens weer te geven na een inzending. " + +#: webform.module:1362 +msgid "Enabled" +msgstr "Ingeschakeld" + +#: webform.module:1401 +msgid "Submission #@sid" +msgstr "Inzending #@sid" + +#: webform.module:1421;1421 +msgid "Previous submission" +msgstr "Vorige inzending" + +#: webform.module:1424;1424 +msgid "Next submission" +msgstr "Volgende inzending" + +#: webform.module:1428 +msgid "Submission Information" +msgstr "Inzendingsinformatie" + +#: webform.module:1437 +msgid "Form: !form" +msgstr "Formulier: !form" + +#: webform.module:1440 +msgid "Submitted by !name" +msgstr "Ingezonden door !name" + +#: webform.module:1485 +msgid "Next Page >" +msgstr "Volgende pagina >" + +#: webform.module:1486 +msgid "< Previous Page" +msgstr "< Vorige pagina" + +#: webform.module:1631 +msgid "The webform component @type is not able to be displayed" +msgstr "Het besturingselement @type kan niet worden weer gegeven" + +#: webform.module:1840 +msgid "Illegal information. Data not submitted." +msgstr "Ongeldige gegevens. Inzending is niet opgeslagen." + +#: webform.module:1878 +msgid "Submission posted to %title. <a href=\"!url\">Results</a>. !details" +msgstr "Inzending verstuurd naar %title. <a href=\"!url\">Resultaten</a>. !details" + +#: webform.module:1883 +msgid "Submission updated." +msgstr "Inzending bijgewerkt." + +#: webform.module:1986 +msgid "Thank you, your submission has been received." +msgstr "Bedankt! De inzending is ontvangen." + +#: webform.module:2202;153;205 +msgid "Submissions" +msgstr "Inzendingen" + +#: webform.module:2203;163 +msgid "Analysis" +msgstr "Statistieken" + +#: webform.module:2204;173 +msgid "Table" +msgstr "Tabel" + +#: webform.module:2256;2257;2258;2259;2260;2263 +msgid "key" +msgstr "sleutel" + +#: webform.module:2267 +msgid "You may use special tokens in this field that will be replaced with dynamic values." +msgstr "U mag speciale tekenreeksen gebruiken in dit veld, die zullen worden vervangen met dynamische waarden." + +#: webform.module:2269 +msgid "You can use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables, %session[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> variables and %get[key] to create prefilled forms from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. %cookie, %request and %post also work with their respective PHP variables. For example %server[HTTP_USER_AGENT], %session[id], or %get[q]." +msgstr "U kunt ook gebruik maken van %server[key] om een PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variabele toe te voegen, %session[key] om een van de speciale PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> variabelen toe te voegen en %get[key] om vooraf ingevulde formulieren te maken op basis van de <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. Ook %cookie, %request en %post werken met hun respectivelijke PHP variabelen. (bijvoorbeeld %server[HTTP_USER_AGENT], %session[id] of %get[q])." + +#: webform.module:2271 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "Als u de profielmodule gebruikt heeft u toegang tot alle profieldata, door middel van de syntax %profile[form_name]. Als u bijvoorbeeld de profielwaarde genaamd profile_city heeft voeg dan de variabele %profile[profile_city] toe." + +#: webform.module:2275 +msgid "Token values" +msgstr "Token waardes" + +#: webform.module:323 +msgid "create webforms" +msgstr "creëer webformulieren" + +#: webform.module:323 +msgid "edit own webforms" +msgstr "eigen webformulieren bewerken" + +#: webform.module:323 +msgid "edit webforms" +msgstr "webformulieren bewerken" + +#: webform.module:323 +msgid "access webform results" +msgstr "toegang tot webformulier resultaten" + +#: webform.module:323 +msgid "clear webform results" +msgstr "webformulier resultaten wissen" + +#: webform.module:323 +msgid "access own webform submissions" +msgstr "toegang tot eigen webformulier inzendingen" + +#: webform.module:323 +msgid "edit own webform submissions" +msgstr "eigen webformulier inzendingen bewerken" + +#: webform.module:323 +msgid "edit webform submissions" +msgstr "webformulier inzendingen bewerken" + +#: webform.module:323 +msgid "use PHP for additional processing" +msgstr "gebruik PHP voor aanvullende verwerking" + +#: webform.module:70 +msgid "Webforms" +msgstr "Webformulieren" + +#: webform.module:91 +msgid "Webform confirmation" +msgstr "Webformulier-bevestiging" + +#: webform.module:100 +msgid "Configuration" +msgstr "Configuratie" + +#: webform.module:108 +msgid "Form components" +msgstr "Besturingselementen" + +#: webform.module:143 +msgid "Results" +msgstr "Resultaten" + +#: webform.module:214 +msgid "Webform submission" +msgstr "Webformulier inzending" + +#: webform.module:0 +msgid "webform" +msgstr "webformulier" + +#: webform.install:16 +msgid "Table for storing additional properties for webform nodes." +msgstr "Tabel voor het opslaan van aanvullende eigenschappen voor webformulier nodes." + +#: webform.install:19;92;195;230 +msgid "The node identifier of a webform" +msgstr "De \"node identifier\" van een webformulier" + +#: webform.install:25 +msgid "The confirmation message or URL displayed to the user after submitting a form." +msgstr "Het bevestigingsbericht of de URL die moet worden weergegeven na een inzending." + +#: webform.install:30 +msgid "Boolean value for whether the entire form should be displayed on the teaser." +msgstr "Boolean waarde die aangeeft of het complete formulier in de teaser moet worden weergegeven." + +#: webform.install:37 +msgid "The title of the submit button on the form." +msgstr "De tekst op de verzendknop onderaan het webformulier." + +#: webform.install:42 +msgid "The number of submissions a single user is allowed to submit within an interval. -1 is unlimited." +msgstr "Het aantal inzendingen dat een gebruiker mag doen binnen een bepaalde tijdsinterval. -1 betekend ongelimiteerd." + +#: webform.install:49 +msgid "The amount of time in seconds that must pass before a user can submit another submission within the set limit." +msgstr "De hoeveelheid tijd (in seconden) die moet verstrijken, voordat een gebruiker een nieuwe inzending kan doen binnen de gestelde limiet." + +#: webform.install:55 +msgid "The primary e-mail address for receiving submission results." +msgstr "Het primaire E-Mailadres waarop bevestigings E-Mails moeten worden ontvangen." + +#: webform.install:60 +msgid "The name of the sender in sent submission e-mails." +msgstr "De naam van de verzender van bevestigings E-Mails" + +#: webform.install:65 +msgid "The address of the sender in sent submission e-mails." +msgstr "Het adres van de afzender in verzonden bevestigings E-Mails." + +#: webform.install:70 +msgid "The subject of sent submission e-mails" +msgstr "Het onderwerp van verzonden bevestigings E-Mails" + +#: webform.install:75 +msgid "PHP code for additional functionality when validating a form." +msgstr "PHP code voor aanvullende functionaliteit bij het valideren van een inzending." + +#: webform.install:80 +msgid "PHP code for additional functionality when submitting a form." +msgstr "PHP code voor aanvullende functionaliteit bij het versturen van een inzending." + +#: webform.install:89 +msgid "Stores information about components for webform nodes." +msgstr "Slaat informatie op over besturingselementen van webformulier nodes." + +#: webform.install:99;244 +msgid "The identifier for this component within this node, starts at 0 for each node." +msgstr "Het identificatienummer voor dit besturingselement. Begint bij 0 voor elke nieuw webformulier node." + +#: webform.install:107 +msgid "If this component has a parent fieldset, the cid of that component." +msgstr "Als dit besturingselement onderdeel is van een groepsvak, het cid van dat besturingselement." + +#: webform.install:115 +msgid "When the form is displayed and processed, this key can be used to reference the results." +msgstr "Als het webformulier wordt weergegeven en verwerkt, kan deze sleutel worden gebruikt als referentie naar de resultaten." + +#: webform.install:120 +msgid "The label for this component." +msgstr "Het label van dit besturingselement." + +#: webform.install:125 +msgid "The field type of this component (textfield, select, hidden, etc.)." +msgstr "Het type besturingselement (tekstvak, keuzelijst, verborgen, etc.)." + +#: webform.install:130 +msgid "The default value of the component when displayed to the end-user." +msgstr "De standaardwaarde van het besturingselement, wanneer het aan de eindgebruiker wordt weergegeven." + +#: webform.install:135 +msgid "Additional information unique to the display or processing of this component." +msgstr "Aanvullende informatie, uniek voor de weergave of verwerking van dit besturingselement." + +#: webform.install:140 +msgid "Boolean flag for if this component is required." +msgstr "Boolean vlag die aangeeft of dit besturingselement vereist is." + +#: webform.install:147 +msgid "Boolean flag for if submitted values for this component will be included in sent e-mails." +msgstr "Bitwaarde die aangeeft of ingezonden gegevens van dit besturingselement worden opgenomen in verzonden E-Mailberichten." + +#: webform.install:154 +msgid "Determines the position of this component in the form." +msgstr "Bepaalt de positie van dit besturingselement in het webformulier." + +#: webform.install:165;862 +msgid "Holds access information regarding which roles are allowed to submit which webform nodes. Does not prevent access to the webform node entirely, use the {node_access} table for that purpose." +msgstr "Bevat toegangsinformatie die bepaalt welke gebruikersrollen in staat zijn welke webformulier nodes in te zenden. Deze instelling regelt niet de toegang tot webformulieren, gebruik daarvoor de {node_access} tabel voor dit doeleinde." + +#: webform.install:168;865 +msgid "The node identifier of a webform." +msgstr "De \"node identifier\" van een webformulier" + +#: webform.install:175;872 +msgid "The role identifier." +msgstr "De \"role identifier\"." + +#: webform.install:186 +msgid "Holds general information about submissions outside of field values." +msgstr "Bevat algemene informatie over inzendingen buiten de veldwaarden om." + +#: webform.install:189;237 +msgid "The unique identifier for this submission." +msgstr "De unieke aanduiding voor deze inzending." + +#: webform.install:202 +msgid "The id of the user that completed this submission." +msgstr "Het id van de gebruiker die deze inzending heeft gedaan." + +#: webform.install:209 +msgid "Timestamp of when the form was submitted." +msgstr "Tijdstip, waarop het webformulier is ingezonden." + +#: webform.install:215 +msgid "The IP address of the user that submitted the form." +msgstr "Het IP adres van de gebruiker die het webformulier heeft ingezonden." + +#: webform.install:227 +msgid "Stores all submitted field data for webform submissions." +msgstr "Bewaart alle gegevens voor webformulier inzendingen." + +#: webform.install:252 +msgid "Usually this value is 0, but if a field has multiple values (such as a time or date), it may require multiple rows in the database." +msgstr "Over het algemeen is deze waarde 0, maar als een veld meerdere waarden heeft (zoals bijv. datum en tijd), kan dat meerdere records in de database vereisen." + +#: webform.install:260 +msgid "The submitted value of this field, may be serialized for some components." +msgstr "De ingezonden waarde voor dit veld kan \"geserialiseerd\" worden voor bepaalde besturingselementen." + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "Biedt de mogelijkheid formulieren en vragenlijsten aan te maken." + +#: components/date.inc:44 +#: components/email.inc:43 +#: components/hidden.inc:38 +#: components/select.inc:55 +#: components/textarea.inc:45 +#: components/textfield.inc:46 +#: components/time.inc:41 +msgid "Default value" +msgstr "Standaard waarde" + +#: components/date.inc:46 +#: components/email.inc:45 +#: components/hidden.inc:40 +#: components/textarea.inc:47 +#: components/textfield.inc:48 +#: components/time.inc:43 +msgid "The default value of the field." +msgstr "Standaardwaarde van dit veld." + +#: components/date.inc:46 +msgid "Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid." +msgstr "Voer een datum in volgens het <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU-datum-formaat</a>. Invoer zoals today, +2 months, en Dec 9 2004 wordt geaccepteerd." + +#: components/date.inc:53 +#: components/time.inc:51 +msgid "Timezone" +msgstr "Tijdzone:" + +#: components/date.inc:55 +msgid "Adjust the date according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "De datum aanpassen aan een specifieke tijdszone. Standaard wordt de website-tijdszone gebruikt, gedefinieerd in de <a href=\"!settings\">Website-instellingen</a>." + +#: components/date.inc:56 +msgid "Website timezone" +msgstr "Tijdzone van de website." + +#: components/date.inc:56 +msgid "User timezone" +msgstr "Tijdzone van de gebruiker." + +#: components/date.inc:56 +msgid "GMT" +msgstr "GMT" + +#: components/date.inc:61 +#: components/time.inc:59 +msgid "Observe Daylight Savings" +msgstr "Zomer- en wintertijdcorrectie" + +#: components/date.inc:64 +#: components/time.inc:62 +msgid "Automatically adjust the time during daylight savings." +msgstr "De tijd automatisch aanpassen aan de zomertijd." + +#: components/date.inc:70 +msgid "Start year" +msgstr "Begin jaar:" + +#: components/date.inc:72 +msgid "The first year that is allowed to be entered." +msgstr "Het jaar dat het begin van de beperkte jaar-invoerperiode bepaalt." + +#: components/date.inc:79 +msgid "End year" +msgstr "Eind jaar:" + +#: components/date.inc:81 +msgid "The last year that is allowed to be entered." +msgstr "Het jaar dat het einde van de beperkte jaar-invoerperiode bepaalt." + +#: components/date.inc:88 +msgid "Use a textfield for year" +msgstr "Gebruik een tekstveld voor jaar" + +#: components/date.inc:90 +msgid "If checked, the generated date field will use a textfield for the year. Otherwise it will use a select list." +msgstr "Indien geselecteerd zal het gegenereerde datum veld een tekstvak voor het jaar gebruiken, zoniet dan wordt een selectielijst gebruikt." + +#: components/date.inc:184 +msgid "Month" +msgstr "Maand" + +#: components/date.inc:187 +msgid "Day" +msgstr "Dag" + +#: components/date.inc:190;206 +msgid "Year" +msgstr "Jaar" + +#: components/date.inc:223 +msgid "!name field is required." +msgstr "Het veld !name is verplicht." + +#: components/date.inc:230 +msgid "Entered !name is not a valid date." +msgstr "De ingevoerde !name is geen geldige datum." + +#: components/date.inc:237 +msgid "The entered date needs to be between the years @start and @end." +msgstr "De ingevulde datum moet liggen tussen de jaren @start en @end." + +#: components/date.inc:312 +msgid "Presents month, day, and year fields." +msgstr "Dag-, maand- en jaarvelden tonen." + +#: components/date.inc:383 +#: components/email.inc:211 +#: components/file.inc:511 +#: components/textarea.inc:179 +#: components/textfield.inc:228 +#: components/time.inc:318 +msgid "Left Blank" +msgstr "Leeg gelaten" + +#: components/date.inc:384 +#: components/email.inc:212 +#: components/textarea.inc:180 +#: components/textfield.inc:229 +#: components/time.inc:319 +msgid "User entered value" +msgstr "Gebruiker vulde de volgende waarde in" + +#: components/email.inc:54 +msgid "User email as default" +msgstr "Gebruiker E-Mail als standaard" + +#: components/email.inc:56 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "Als een gebruiker is ingelogd wordt in dit veld standaard zijn/haar geregistreerde e-mailadres ingevuld." + +#: components/email.inc:63 +#: components/file.inc:127 +#: components/textarea.inc:54 +#: components/textfield.inc:55 +msgid "Width" +msgstr "Breedte" + +#: components/email.inc:65 +#: components/textarea.inc:56 +#: components/textfield.inc:57 +msgid "Width of the textfield." +msgstr "Breedte van het tekstvak" + +#: components/email.inc:65 +#: components/file.inc:129 +#: components/textarea.inc:56;64 +#: components/textfield.inc:57 +msgid "Leaving blank will use the default size." +msgstr "Als dit leeg gelaten wordt, zal de standaardgrootte worden gebruikt." + +#: components/email.inc:71 +#: components/hidden.inc:51 +#: components/select.inc:78 +msgid "E-mail a submission copy" +msgstr "Stuur een kopie aan u zelf." + +#: components/email.inc:74 +#: components/hidden.inc:54 +#: components/select.inc:81 +msgid "Check this option if this component contains an e-mail address that should get a copy of the submission. Emails are sent individually so other emails will not be shown to the recipient." +msgstr "Selecteer deze optie als dit besturingselement een E-Mailadres bevat, waarnaar een kopie van bevestigingsberichten moet worden verstuurd. E-Mailberichten worden individueel verzonden, zodat andere E-Mailadressen niet aan de ontvanger zullen worden getoond." + +#: components/email.inc:78 +#: components/textarea.inc:77 +#: components/textfield.inc:91 +msgid "Disabled" +msgstr "Uitgeschakeld" + +#: components/email.inc:80 +#: components/textarea.inc:79 +#: components/textfield.inc:93 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "Veld alleen-lezen maken. Geschikt voor het instellen van een vaste standaardwaarde." + +#: components/email.inc:145 +msgid "%value is not a valid email address." +msgstr "het opgegeven e-mailadres %value is ongeldig." + +#: components/email.inc:178 +msgid "A textfield that automatically fills in a logged-in user's e-mail." +msgstr "Een tekstveld waarin automatisch het e-mailadres van ingelogde gebruikers wordt ingevuld." + +#: components/email.inc:213 +#: components/hidden.inc:148 +#: components/textarea.inc:181 +#: components/textfield.inc:230 +msgid "Average submission length in words (ex blanks)" +msgstr "Gemiddelde lengte van inzending in woorden (zonder spaties)" + +#: components/fieldset.inc:39 +msgid "Collapsible" +msgstr "Inklapbaar" + +#: components/fieldset.inc:41 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "Als dit groepsvak inklapbaar is kan de gebruiker het groepsvak naar wens in- of uitklappen." + +#: components/fieldset.inc:46 +msgid "Collapsed by Default" +msgstr "Standaard ingeklapt." + +#: components/fieldset.inc:48 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "Inklapbare groepsvakken zijn standaard uitgeklapt. Selecteer deze optie om het groepsvak standaard ingeklapt weer te geven." + +#: components/fieldset.inc:100 +msgid "Fieldsets allow you to organize multiple fields into groups." +msgstr "Met groepsvakken kunnen complexe webformulieren worden gestructureerd door velden te groeperen." + +#: components/file.inc:49 +msgid "Upload Filtering" +msgstr "Uploadfilters" + +#: components/file.inc:50 +msgid "Select the types of uploads you would like to allow." +msgstr "Selecteer de bestandstypen die gebruikers mogen uploaden." + +#: components/file.inc:60 +msgid "Web Images" +msgstr "Web afbeeldingen" + +#: components/file.inc:68 +msgid "Desktop Images" +msgstr "Bureaubladafbeeldingen" + +#: components/file.inc:76 +msgid "Documents" +msgstr "Documenten" + +#: components/file.inc:84 +msgid "Media" +msgstr "Media" + +#: components/file.inc:92 +msgid "Archives" +msgstr "Archieven" + +#: components/file.inc:99 +msgid "Additional Extensions" +msgstr "Aanvullende Uitbreidingen" + +#: components/file.inc:101 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "Voer een lijst in met aanvullende extensies voor dit uploadveld, gescheiden door komma's.<br /> Ingevoerde extensies worden aan de hierboven aangevinkte extensies toegevoegd." + +#: components/file.inc:109 +msgid "Max Upload Size" +msgstr "Maximale bestandsgrootte per upload" + +#: components/file.inc:111 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "Voer de maximale grootte in van een te uploaden bestand (in KB)." + +#: components/file.inc:118 +msgid "Upload Directory" +msgstr "Upload map" + +#: components/file.inc:120 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "Webformulier-uploads worden altijd bewaard in de bestandsmap van de website. Eventueel kan een submap worden opgegeven, waarin de betanden moeten worden bewaard." + +#: components/file.inc:129 +msgid "Width of the file field." +msgstr "Breedte van het bestandsveld." + +#: components/file.inc:144 +msgid "The save directory %directory could not be created. Check that the webform files directory is writtable." +msgstr "De opslag map %directory kon niet worden gemaakt. Controleer of de webformulier bestandsmap beschrijfbaar is." + +#: components/file.inc:248 +msgid "Category" +msgstr "Categorie" + +#: components/file.inc:248 +msgid "Types" +msgstr "Typen" + +#: components/file.inc:308 +#: components/time.inc:171 +msgid "%field field is required." +msgstr "Het veld %field is verplicht." + +#: components/file.inc:340 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "Bestanden met de extensie '%ext' zijn niet toegestaan. Upload een bestand met de extensie %exts." + +#: components/file.inc:345 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "Het bestand '%filename' is te groot (%filesize KB). Upload een bestand van %maxsize KB of minder." + +#: components/file.inc:366 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "Het bestand %filename kan niet worden opgeslagen. Mogelijk is de bestandsmap op de webserver niet beschrijfbaar." + +#: components/file.inc:377 +msgid "The uploaded file was unable to be saved. The destination directory does not exist." +msgstr "Het bestand %filename kan niet worden opgeslagen. De doelmap op de webserver bestaat niet." + +#: components/file.inc:428 +msgid "Uploading a new file will replace the current file." +msgstr "Het uploaden van een nieuw bestand zal het huidige bestand overschrijven." + +#: components/file.inc:463 +msgid "Allow users to submit files of the configured types." +msgstr "Gebruikers mogen bestanden van gedefinieerde typen inzenden." + +#: components/file.inc:512 +msgid "User uploaded file" +msgstr "Door gebruiker geupload bestand" + +#: components/file.inc:513 +msgid "Average uploaded file size" +msgstr "Gemiddelde grootte van geuploade bestanden" + +#: components/file.inc:556 +msgid "Filesize (KB)" +msgstr "Bestandsgrootte (KB)" + +#: components/grid.inc:42 +#: components/select.inc:44 +msgid "Options" +msgstr "Opties" + +#: components/grid.inc:44 +msgid "Options to select across the top. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "Een lijst van te mogelijke opties. Eén optie per regel. Het is mogelijk \"sleutel | waarde\" paren in te voeren, gescheiden door een sluisteken (\"|\"). Bijvoorbeeld: systeem_sleutel|Een voor bezoekers leesbare sleutel." + +#: components/grid.inc:52 +msgid "Questions" +msgstr "Vragen" + +#: components/grid.inc:54 +msgid "Questions list down the left side. One question per line." +msgstr "Vragenlijst aan de linkerkant. Een vraag per regel." + +#: components/grid.inc:62 +msgid "Randomize Options" +msgstr "Opties willekeurige plaatsen" + +#: components/grid.inc:64 +msgid "Randomizes the order of options on the top when they are displayed in the form." +msgstr "Zet de bovenste opties in willekeurige volgorde, wanneer ze in het webformulier worden weergegeven." + +#: components/grid.inc:68 +msgid "Randomize Questions" +msgstr "Vragen in willekeurige volgorde" + +#: components/grid.inc:70 +msgid "Randomize the order of the questions on the side when they are displayed in the form." +msgstr "Zet de vragen aan de zijkant in willekeurige volgorde, wanneer ze in het webformulier worden weergegeven." + +#: components/grid.inc:227 +msgid "Allows creation of grid questions, denoted by radio buttons." +msgstr "Selectievakjes, keuzerondjes of keuzelijsten." + +#: components/hidden.inc:99 +msgid "@name (hidden)" +msgstr "@name (verborgen)" + +#: components/hidden.inc:113 +msgid "A field which is not visible to the user, but is recorded with the submission." +msgstr "Een veld aan dat niet zichtbaar is voor de gebruiker maar dat wel in het formulier wordt opgenomen." + +#: components/hidden.inc:146 +msgid "Empty" +msgstr "Leeg" + +#: components/hidden.inc:147 +msgid "Non-empty" +msgstr "Niet leeg" + +#: components/markup.inc:41 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "Markup maakt het mogelijk eigen HTML of PHP code in het formulier op te nemen." + +#: components/markup.inc:63 +msgid "Preview" +msgstr "Voorbeeldweergave" + +#: components/markup.inc:103 +msgid "Displays text as HTML in the form; does not render a field." +msgstr "Geeft tekst als HTML weer in het formulier; maakt geen besturingselement aan." + +#: components/pagebreak.inc:32 +msgid "Use caution when combining the pagebreak and file components. File components will not be submitted unless they are after the last pagebreak in the form." +msgstr "Wees voorzichtig bij het combineren van paginascheidingn en betands besturingselementen. Bestandbesturingselementen worden niet verzonden, tenzij ze zich na de laatste paginascheiding in het webformulier bevinden." + +#: components/pagebreak.inc:59 +msgid "Break up a multi-page form." +msgstr "Formulier opdelen in meerdere pagina's." + +#: components/select.inc:46 +msgid "A list of selectable options. One option per line. Key-value pairs may be entered seperated by pipes, such as \"safe_key|Some readable option\". Option groups for lists and menus may be specified with <Group Name>. <> can be used to insert items at the root of the menu after specifying a group." +msgstr "Een lijst met selectiemogelijkheden. Een item per regel. Sleutel-Waarde paren kunnen worden ingevuld door ze te scheiden met een sluisteken, dit gaat alsvolgt: \"sleutelwaarde|Een leesbare selectieoptie\". Selectiemogelijkheden kunnen worden gegeroepeerd door <Groepsnamen> te specificeren; <> kunnen worden gebruikt om selectiemogelijkheden in te voegen op root-niveau van de selectielijst na het specificeren van een groep." + +#: components/select.inc:57 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "De standaardwaarde van het veld. Wanneer meerdere keuzes mogelijk zijn kunnen meerdere standaardwaarden worden ingevoerd, gescheiden door komma's." + +#: components/select.inc:64 +msgid "Multiple" +msgstr "Meerdere" + +#: components/select.inc:67 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "Selecteer deze optie als de gebruiker meerdere waarden tegelijk mag kiezen." + +#: components/select.inc:71 +msgid "Listbox" +msgstr "Keuzelijst" + +#: components/select.inc:74 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "Selecteer deze optie om het selectieveld weer te geven als keuzelijst in plaats van als keuzerondjes of keuzevakjes." + +#: components/select.inc:82 +msgid "To use the option with a select component, you must use key-value pairs seperated by pipes. i.e. user@example.com|Sample user." +msgstr "Om deze optie te gebruiken met een keuzelijst besturingselement moeten sleutel | waarde paarsgewijs worden gebruikt, waarbij sleutel en waarde door een sluisteken worden gescheiden. Bijv. gebruiker@voorbeeld.com|Sauser." + +#: components/select.inc:124 +msgid "Options within the select list must be unique. The following keys have been used multiple times:" +msgstr "Opties in de selectielijst moeten uniek zijn. De volgende sleutelwaarden zijn meerdere keren gebruikt:" + +#: components/select.inc:325 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "Maakt het creëren van selectievakjes, keuzerondjes of keuzelijsten mogelijk." + +#: components/textarea.inc:62 +msgid "Height" +msgstr "Hoogte" + +#: components/textarea.inc:64 +msgid "Height of the textfield." +msgstr "Hoogte van het tekstveld." + +#: components/textarea.inc:70 +msgid "Resizable" +msgstr "Veldameting aanpasbaar" + +#: components/textarea.inc:71 +msgid "Make this field resizable by the user." +msgstr "Stel de gebruiker in staat de grootte van het veld aan te passen." + +#: components/textarea.inc:146 +msgid "A large text area that allows for multiple lines of input." +msgstr "Een groot tekstvak waarin meerdere regels tekst kunnen worden ingevoerd." + +#: components/textfield.inc:64 +msgid "Maxlength" +msgstr "Maximale lengte" + +#: components/textfield.inc:66 +msgid "Maxlength of the textfield." +msgstr "Maximale toegestaan aantal tekens in het tekstvak." + +#: components/textfield.inc:73 +msgid "Label placed to the left of the textfield" +msgstr "Tekstlabel dat links van het tekstveld moet worden geplaatst" + +#: components/textfield.inc:75 +msgid "Examples: $, #, -." +msgstr "Voorbeelden: $, #, -." + +#: components/textfield.inc:82 +msgid "Label placed to the right of the textfield" +msgstr "Label dat rechts van het tekstveld moet worden geplaatst" + +#: components/textfield.inc:84 +msgid "Examples: lb, kg, %." +msgstr "Voorbeelden: lb, kg, %." + +#: components/textfield.inc:195 +msgid "Basic textfield type." +msgstr "Standaard tekstvak type." + +#: components/time.inc:43 +msgid "Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are all valid." +msgstr "Accepteert een tijdnotatie volgens het <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU-datum-formaat</a>. Invoer zoals now, +2 hours, en 10:30pm wordt geaccepteerd." + +#: components/time.inc:53 +msgid "Adjust the time according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "De tijd aanpassen aan een specifieke tijdszone. De standaard gebruikte tijdzone is de website-tijdszone is gedefinieerd in de <a href=\"!settings\">Website instellingen</a>." + +#: components/time.inc:67 +msgid "Time Format" +msgstr "Tijdformaat" + +#: components/time.inc:69 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Tijdaanduiding in 12- of 24-uurs formaat." + +#: components/time.inc:123 +msgid "hour" +msgstr "een uur" + +#: components/time.inc:124 +msgid "minute" +msgstr "een minuut" + +#: components/time.inc:127 +msgid "am" +msgstr "am" + +#: components/time.inc:127 +msgid "pm" +msgstr "pm" + +#: components/time.inc:179 +msgid "Entered %name is not a valid time." +msgstr "De ingevoerde %name is geen geldige tijdnotatie." + +#: components/time.inc:250 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "Uur- en minuutvelden weergeven. am/pm-velden zijn optioneel." + diff --git a/sites/all/modules/webform/translations/pl.po b/sites/all/modules/webform/translations/pl.po new file mode 100644 index 0000000000000000000000000000000000000000..fe74ae43eea349a8aa0da836eae26025546e25cf --- /dev/null +++ b/sites/all/modules/webform/translations/pl.po @@ -0,0 +1,1478 @@ +# LANGUAGE translation of Drupal (webform.inc) +# Generated from files: +# webform.pot,v 1.1.2.1 2007/06/13 03:05:25 quicksketch +msgid "" +msgstr "" +"Project-Id-Version: Polish translation of Webforms\n" +"POT-Creation-Date: 2009-02-27 23:13+0100\n" +"PO-Revision-Date: 2009-03-01 17:48+0100\n" +"Last-Translator: Radosław Ługowicz\n" +"Language-Team: netmachina\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: webform-confirmation.tpl.php:23 +#: webform_report.inc:154 +msgid "Go back to the form" +msgstr "Wróć do formularza" + +#: webform-mail.tpl.php:26 +msgid "Submitted on @date" +msgstr "Wypełnione @date" + +#: webform-mail.tpl.php:29 +msgid "Submitted by user: @username [@ip_address]" +msgstr "Wypełnione przez: @username [@ip_address]" + +#: webform-mail.tpl.php:31 +msgid "Submitted by anonymous user: [@ip_address]" +msgstr "Wypełnione anonimowo: [@ip_address]" + +#: webform-mail.tpl.php:35 +#, fuzzy +msgid "Submitted values are" +msgstr "Odpowiedzi na pytania to" + +#: webform-mail.tpl.php:44 +msgid "The results of this submission may be viewed at:" +msgstr "Odpowiedzi można obejrzeć:" + +#: webform_components.inc:44;135;364 +msgid "Weight" +msgstr "Waga" + +#: webform_components.inc:49;135;329 +msgid "Mandatory" +msgstr "Wymagane" + +#: webform_components.inc:55;135 +msgid "E-mail" +msgstr "E-Mail" + +#: webform_components.inc:97;235;261 +msgid "Add" +msgstr "Dodaj" + +#: webform_components.inc:103;397 +#: webform.module:1531;1548;1669 +msgid "Submit" +msgstr "Wyślij" + +#: webform_components.inc:109;255 +msgid "Publish" +msgstr "Publikuj" + +#: webform_components.inc:135 +#: webform.module:889;1362 +#: components/file.inc:556 +msgid "Name" +msgstr "Nazwa" + +#: webform_components.inc:135 +#: webform.module:890 +msgid "Type" +msgstr "Typ" + +#: webform_components.inc:135 +#: components/markup.inc:39 +msgid "Value" +msgstr "Wartość" + +#: webform_components.inc:135 +#: webform_report.inc:99 +#: webform.module:2195 +msgid "Operations" +msgstr "Operacje" + +#: webform_components.inc:140 +msgid "New component name" +msgstr "Nazwa nowego komponentu" + +#: webform_components.inc:196 +#: webform_report.inc:137 +#: webform.module:2206;233 +msgid "Edit" +msgstr "Edycja" + +#: webform_components.inc:197 +msgid "Clone" +msgstr "Kopia" + +#: webform_components.inc:198;487 +#: webform_report.inc:138 +#: webform_submissions.inc:105 +#: webform.module:243 +msgid "Delete" +msgstr "Usuń" + +#: webform_components.inc:220 +msgid "No Components, add a component below." +msgstr "Brak komponentów, dodać nowy poniżej." + +#: webform_components.inc:236 +msgid "When adding a new component, the name field is required." +msgstr "Podczas dodawania nowego komponentu, nazwa jest wymagana." + +#: webform_components.inc:258 +msgid "Your webform has been published." +msgstr "Formularz został opublikowany." + +#: webform_components.inc:266 +msgid "The component positions and mandatory values have been updated." +msgstr "Pozycje komponentów oraz wymagane pola zostały zaktualizowane." + +#: webform_components.inc:271 +msgid "Edit component: @name (@type)" +msgstr "Edytuj komponent: @name (@type)" + +#: webform_components.inc:297 +msgid "Label" +msgstr "Etykieta" + +#: webform_components.inc:298 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "To pole jest używane jako etykieta opisująca dany element formularza." + +#: webform_components.inc:306 +#: webform.module:663;1362 +msgid "Description" +msgstr "Opis" + +#: webform_components.inc:307 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "Krótki opis pola, używany jako pomoc w zrozumieniu pytania." + +#: webform_components.inc:313 +msgid "Advanced settings" +msgstr "Dodatkowe opcje" + +#: webform_components.inc:322 +msgid "Field Key" +msgstr "Pole kluczowe" + +#: webform_components.inc:323 +msgid "Enter a machine readable key for this form element. May contain only lowercase alphanumeric characters and underscores. This key will be used as the name attribute of the form element. This value has no effect on the way data is saved, but may be helpful if using Additional Processing or Validation code." +msgstr "Nazwa maszynowa pola (nie wyświetlana). Może zawierać jedynie małe litery, cyfry i podkreślniki." + +#: webform_components.inc:331 +msgid "Check this option if the user must enter a value." +msgstr "Zaznacz opcję, jeśli użytkownik będzie musiał wprowadzić wartość." + +#: webform_components.inc:337 +msgid "Include in e-mails" +msgstr "Załącz w wiadomości e-mail" + +#: webform_components.inc:339 +msgid "If checked, submitted values from this component will be included in e-mails." +msgstr "Jeśli zaznaczone, informacje z odpowiedzi w tym komponencie będą zawarte w wiadomości e-mail." + +#: webform_components.inc:345 +msgid "Root" +msgstr "Główny" + +#: webform_components.inc:353 +msgid "Parent Fieldset" +msgstr "Grupa zawierająca" + +#: webform_components.inc:355 +msgid "Optional. You may organize your form by placing this component inside another fieldset." +msgstr "Opcjonalne. Możesz umieszczać odpowiedzi poszeregowane w grupach." + +#: webform_components.inc:366 +msgid "Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top." +msgstr "Opcjonalne. Elementy menu będą sortowane po wadze." + +#: webform_components.inc:378 +msgid "The webform component of type @type does not have an edit function defined." +msgstr "Komponen formularza typu @type nie posiada funkcji edycji." + +# not literally +#: webform_components.inc:411 +msgid "The field key %field_key is invalid. Please include only lowercase alphanumeric characters and underscores." +msgstr "Klucz pola %field_key jest zły. Prosze podać jedynie małe litery, cyfry oraz podkreślniki." + +#: webform_components.inc:416 +msgid "The field key %field_key is already in use by the field labeled %existing_field. Please use a unique key." +msgstr "Klucz pola %field_key jest już używany przez %existing_field. Proszę podać inny, unikalny klucz." + +#: webform_components.inc:450 +msgid "Component %name cloned." +msgstr "Komponent %name został skopiowany." + +#: webform_components.inc:454 +msgid "Component %name updated." +msgstr "Komponent %name został zaktualizowany." + +#: webform_components.inc:458 +msgid "New component %name added." +msgstr "Komponent %name został dodany." + +#: webform_components.inc:479 +msgid "Delete the %name fieldset?" +msgstr "Usunąć grupę %name?" + +# not literally +#: webform_components.inc:480 +msgid "This will immediately delete the %name fieldset and all children elements within %name from the %webform webform. This cannot be undone." +msgstr "Ta operacja spowoduje usunięcie grupy %name oraz wszystkie elementy wewnątrz %name z formularza %webform. Operacja nie będzie mogła być cofnięta." + +#: webform_components.inc:483 +msgid "Delete the %name component?" +msgstr "Chcesz na pewno usunąć %name?" + +#: webform_components.inc:484 +msgid "This will immediately delete the %name component from the %webform webform. This cannot be undone." +msgstr "Ta operacja spowoduje usunięcie komponentu %name z formularza %webform. Operacja nie może zostać cofnięta." + +#: webform_components.inc:491 +msgid "Component %name deleted." +msgstr "Komponent %name został usunięty." + +#: webform_export.inc:21 +msgid "Delimited text" +msgstr "Podzielony tekst" + +#: webform_export.inc:22 +msgid "A plain text file delimited by commas, tabs, or other characters." +msgstr "Zwykły tekst podzielony przecinkami, tabulacjami lub innymi znakami." + +#: webform_export.inc:26 +msgid "Microsoft Excel" +msgstr "Microsoft Excel" + +#: webform_export.inc:27 +msgid "A file readable by Microsoft Excel." +msgstr "Plik odczytywany przez Microsoft Excel." + +#: webform_report.inc:28 +msgid "Submissions for %user" +msgstr "Odpowiedzi użytkownika %user" + +#: webform_report.inc:58 +msgid "All" +msgstr "Wszystkie" + +#: webform_report.inc:71 +msgid "Show !count results per page." +msgstr "Pokaż !count wpisów na stronie." + +#: webform_report.inc:74 +msgid "Showing all results." +msgstr "Pokaż wszystkie wyniki." + +#: webform_report.inc:77 +msgid "@total results total." +msgstr "Razem @total wyników." + +#: webform_report.inc:92;187 +msgid "#" +msgstr "Nr" + +#: webform_report.inc:93;188 +msgid "Submitted" +msgstr "Wysłano" + +#: webform_report.inc:96;189 +msgid "User" +msgstr "Użytkownik" + +#: webform_report.inc:97;190;398 +msgid "IP Address" +msgstr "Adres IP" + +#: webform_report.inc:135 +#: webform.module:2194;223 +msgid "View" +msgstr "Zobacz" + +#: webform_report.inc:147;248;491 +msgid "There are no submissions for this form. <a href=\"!url\">View this form</a>." +msgstr "Brak wpisów dla formularza. <a href=\"!url\">Zobacz formularz</a>." + +#: webform_report.inc:279 +msgid "Clear Form Submissions" +msgstr "Wyczyść wszystkie odpowiedzi formularza" + +#: webform_report.inc:283 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "Czy na pewno chcesz usunąć wszystkie odpowiedzi formularza?" + +#: webform_report.inc:285 +#: webform.module:2207;193 +msgid "Clear" +msgstr "Wyczyść" + +#: webform_report.inc:285 +#: webform_submissions.inc:105 +msgid "Cancel" +msgstr "Anuluj" + +#: webform_report.inc:293 +msgid "Webform %title entries cleared." +msgstr "Odpowiedzi formularza %title zostały wyczyszczone." + +#: webform_report.inc:314 +msgid "Export format" +msgstr "Format exportu" + +#: webform_report.inc:321 +msgid "Delimited text format" +msgstr "Podzielony tekst" + +#: webform_report.inc:322 +#: webform.module:1313 +msgid "This is the delimiter used in the CSV/TSV file when downloading Webform results. Using tabs in the export is the most reliable method for preserving non-latin characters. You may want to change this to another character depending on the program with which you anticipate importing results." +msgstr "" + +#: webform_report.inc:325 +#: webform.module:1316 +msgid "Comma (,)" +msgstr "Przecinek (,)" + +#: webform_report.inc:326 +#: webform.module:1317 +msgid "Tab (\\t)" +msgstr "Tabulator (\\t)" + +#: webform_report.inc:327 +#: webform.module:1318 +msgid "Semicolon (;)" +msgstr "Średnik (;)" + +#: webform_report.inc:328 +#: webform.module:1319 +msgid "Colon (:)" +msgstr "Dwukropek (:)" + +#: webform_report.inc:329 +#: webform.module:1320 +msgid "Pipe (|)" +msgstr "Linia (|)" + +#: webform_report.inc:330 +#: webform.module:1321 +msgid "Period (.)" +msgstr "Kropka (.)" + +#: webform_report.inc:331 +#: webform.module:1322 +msgid "Space ( )" +msgstr "Spacja ( )" + +#: webform_report.inc:337 +#: webform.module:2205;183 +msgid "Download" +msgstr "Pobierz" + +#: webform_report.inc:397 +msgid "Submission Details" +msgstr "Informacje o wpisie" + +# ? +#: webform_report.inc:398 +msgid "Serial" +msgstr "Numer seryjny" + +#: webform_report.inc:398 +msgid "SID" +msgstr "SID" + +#: webform_report.inc:398 +msgid "Time" +msgstr "Czas" + +#: webform_report.inc:398 +msgid "UID" +msgstr "UID" + +#: webform_report.inc:398 +msgid "Username" +msgstr "Użytkownik" + +#: webform_report.inc:470 +msgid "Q" +msgstr "P" + +#: webform_report.inc:471 +msgid "responses" +msgstr "Odpowiedzi" + +#: webform_submissions.inc:98 +msgid "Delete Form Submission" +msgstr "Usuń odpowiedź." + +#: webform_submissions.inc:103 +msgid "Are you sure you want to delete this submission?" +msgstr "Czy na pewno chcesz usunąć tą odpowiedź?" + +#: webform_submissions.inc:110 +msgid "Submission deleted." +msgstr "Odpowiedź została usunięta." + +#: webform.module:22 +msgid "Webforms are forms and questionnaires. To add one, select <a href=\"!url\">Create content -> Webform</a>." +msgstr "Webformularze to formularze oraz kwestionariusze. Pod <a href=\"!url\">tym adresem</a> możesz dodać nowy formularz." + +#: webform.module:25 +msgid "" +"<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will be sent. If no email address is specified, no e-mail will be sent when submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will be used to populate the return e-mail address on any sent e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that will be used to populate the subject e-mail field on any sent e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown after you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database table <i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" +"<p>Mit diesem Modul können Formulare oder Fragebögen erstellt werden. Formulareingaben werden in der Datenbank gespeichert und können optional an eine vordefinierte E-Mailadresse gesendet werden.</p>\n" +"<p>So erstellen Sie ein neues Formuar:</p>\n" +"<ul>\n" +" <li>Gehen Sie zu \"Inhalt erstellen -> Webform\" und erstellen Sie ein neues Formular.<li>\n" +" <li>Fügen Sie eine Beschreibung ein. Diese wird als Teaser und oberhalb des des Formulars angezeigt.</li>\n" +" <li>Fügen Sie eine Bestätigungsnachricht ein, die nach erfolgreicher Eingabe angezeigt wird oder geben Sie einen Seite an, zu der weitergeleitet werden soll.</li>\n" +" <li>Fügen Sie eine oder mehr Komponenten zum Formular.</li>\n" +" <li>Optional kann eine E-Mailadresse definiert werden, an welche die Eingaben gesendet werden sollen.</li>\n" +" <li>Optional kann eine E-Mailkomponente ausgewählt werden, die als Absenderadresse jeder versandten Email verwendet wird.</li>\n" +" <li>Optional kann ein Textfeld ausgewählt werden, das für den Betreff jeder E-Mail versendet wird.</li>\n" +"</ul>\n" +"<p>Hilfe zum Hinzfügen und zur Konfiguration der einzelnen Komponenten ist erhältlich nach dem Hinzufügen der ersten Komponente.</p>\n" +"<p>Die Benutzereingaben werden in der Datenbanktabelle <i>webform_submitted_data</i> als Schlüssel-Werte-Paare gespeichert.</p>" + +#: webform.module:41 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "Formularz może być kwestionariuszem, formularzem kontaktowym czy zapytaniem. Może służyć do kontaktu z klientem, rejestracji na wydarzenie lub wypełnienie skomplikowanej ankiety." + +#: webform.module:44 +msgid "This page displays all the components currently configured for this webform node. You may add any number of components to the form, even multiple of the same type. To add a new component, fill in a name and select a type from the fields at the bottom of the table. Submit the form to create the new component or update any changed form values." +msgstr "" + +#: webform.module:45 +msgid "Click on any existing component's name to edit its settings." +msgstr "Kliknij na nazwie istniejącego komponentu, aby edytować jego opcje." + +#: webform.module:416;80 +#: webform.info:0 +msgid "Webform" +msgstr "Formularz" + +#: webform.module:418 +msgid "Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users." +msgstr "Stwórz nowy formularz lub kwestionariusz dostępny dla użtkowników. Odpowiedzi i wyniki ankiety będą dostępne dla uprawnionych użytkowników." + +#: webform.module:604 +msgid "Go to form" +msgstr "Idź do formularza" + +#: webform.module:606 +msgid "View this form." +msgstr "Zobacz formularz." + +#: webform.module:645 +msgid "Webform Settings" +msgstr "Ustawienia formularza" + +#: webform.module:654;2193 +msgid "Title" +msgstr "Tytuł" + +#: webform.module:664 +msgid "Text to be shown as teaser and before the form." +msgstr "Tekst wyświetlany przed pytaniami, jako opis formularza." + +#: webform.module:673 +msgid "Confirmation message or redirect URL" +msgstr "Tekst potwierdzający przyjęcie lub adres (URL) przekierowania po wypełnieniu" + +#: webform.module:674 +msgid "Message to be shown upon successful submission or a path to a redirect page. Preface message with <em>message:</em> for a simple message that does not require a page refresh. Redirect pages must start with <em>http://</em> for external sites or <em>internal:</em> for an internal path. i.e. <em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "Wiadomość wyświetlana po wypełnieniu całego formularza lub link do strony, na jaką klient ma być przekierowany. Linki do przekierowania muszą zaczynać się <em>http://</em> do stron zewnętrznych lub <em>internal:</em> do wewnętrznych linków. Np. <em>http://www.example.com</em> or <em>internal:node/10</em>" + +#: webform.module:686 +msgid "Webform access control" +msgstr "Prawa dostępu do formularza" + +#: webform.module:691 +msgid "These permissions affect which roles can submit this webform. It does not prevent access to the webform page. If needing to prevent access to the webform page entirely, use a content access module such as <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> or <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." +msgstr "Prawa dostępu ustalają, jakie role mogą wysyłać odpowiedź na formularz. Nie blokują dostępu do ankiety." + +#: webform.module:699 +msgid "Roles that can submit this webform" +msgstr "Role, które mogą wysyłać wypełniony formularz" + +#: webform.module:700 +msgid "Uncheck all roles to prevent new submissions. The %authenticated role applies to any user signed into the site, regardless of other assigned roles." +msgstr "Odznacz wszystkie role, aby zablokować możliwość wysyłania ankiety." + +#: webform.module:707 +msgid "Webform mail settings" +msgstr "Ustawienia e-mail" + +#: webform.module:717 +msgid "E-mail to address" +msgstr "Adres e-mail wysyłki ankiety" + +#: webform.module:720 +msgid "Form submissions will be e-mailed to this address. Leave blank for none. Multiple e-mail addresses may be separated by commas." +msgstr "Wypełnione ankiety będą wysłane e-mailem na ten adres. Zostaw puste pole, aby nie był wysłany. Można podać więcej adresów, oddzielonych przecinkami." + +#: webform.module:728 +msgid "Conditional e-mail recipients" +msgstr "Opcjonalny adres e-mail" + +#: webform.module:729 +msgid "The settings below allow you to send e-mails to multiple recipients based off the value of a component." +msgstr "Opcja umożliwia wybranie adresu e-mail, na który będzie wysłana odpowiedź w zależności od jednej z odpowiedzi." + +#: webform.module:753 +msgid "E-mail from name" +msgstr "Adres e-mail nadawcy wiadomości" + +#: webform.module:754 +msgid "After adding components to this form any email, select, or hidden form element may be selected as the sender's name for e-mails." +msgstr "Po przygotowaniu ankiety, jedno z pól formularza może być użyte jako nazwa nadawcy wiadomości." + +#: webform.module:758 +msgid "E-mail from address" +msgstr "Adres e-mail nadawcy" + +#: webform.module:759 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the sender's e-mail address." +msgstr "Po przygotowaniu ankiety, jedno z pól formularza może być użyte jako adres e-mail nadawcy wiadomości." + +#: webform.module:763 +msgid "E-mail subject" +msgstr "Tytuł wysyłanego e-maila" + +#: webform.module:764 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the subject for e-mails." +msgstr "Tytuł e-maila może być ustawiony jednym z wypełnionych pól w formularzu" + +#: webform.module:799 +msgid "Webform advanced settings" +msgstr "Dodatkowe opcje formularza" + +#: webform.module:807 +msgid "Show complete form in teaser" +msgstr "Pokaż cały formularz w zajawce" + +#: webform.module:809 +msgid "Display the entire form in the teaser display of this node." +msgstr "Pokaż cały formularz w zajawce segmentu." + +#: webform.module:813 +msgid "Limit the number of submissions a user may send within a specified time period" +msgstr "Limituj liczbę wysłanych formularzy w okresie czasu" + +#: webform.module:818 +msgid "Unlimited" +msgstr "Nieograniczone" + +#: webform.module:832 +msgid "ever" +msgstr "tylko raz" + +#: webform.module:833 +msgid "every hour" +msgstr "raz na godzinę" + +#: webform.module:834 +msgid "every day" +msgstr "raz na dzień" + +#: webform.module:835 +msgid "every week" +msgstr "raz w tygodniu" + +#: webform.module:842 +msgid "Submit button text" +msgstr "Napis na przycisku potwierdzającym wypełnienie formularza" + +#: webform.module:844 +msgid "By default the submit button on this form will have the label <em>Submit</em>. Enter a new title here to override the default." +msgstr "" + +#: webform.module:849 +msgid "Additional Validation" +msgstr "Dodatkowa walidacja" + +#: webform.module:850 +#, fuzzy +msgid "Enter PHP code to perform additional validation for this form. Include the <?php ?> tags. $form and $form_state are available variables. If validation fails, use the form_set_error function to prevent the form from being submitted. Use the same syntax as a _validate function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "" + +#: webform.module:858 +msgid "Additional Processing" +msgstr "Dodatkowe przetwarzanie" + +#: webform.module:859 +#, fuzzy +msgid "Enter PHP code to perform additional processing for this form (after the validation). Include the <?php ?> tags. $form and $form_state are available variables, use the same syntax as a _submit function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "" + +#: webform.module:888 +msgid "To" +msgstr "Do" + +#: webform.module:903 +msgid "No components yet in this webform." +msgstr "Brak komponentów w formularzu." + +#: webform.module:918 +msgid "Custom" +msgstr "Własne" + +#: webform.module:918 +msgid "Component" +msgstr "Komponent" + +#: webform.module:929 +msgid "Default" +msgstr "Domyślny" + +#: webform.module:950 +msgid "Limit to !count submission(s) !timespan" +msgstr "Limituj wypełnienione formularze do !count na !timespan" + +#: webform.module:963;970 +msgid "The entered email address %address is not a valid address." +msgstr "Podany adres email: %address nie jest poprawny." + +#: webform.module:1044 +msgid "The new webform %title has been created. Add new fields to your webform with the form below." +msgstr "Nowy formularz %title został stworzony. Dodaj nowe pola do formularza poniżej." + +#: webform.module:1047 +msgid "This webform is currently unpublished. After finishing your changes to the webform, use the <em>Publish</em> button below." +msgstr "Formularz jest aktualnie nieopublikowany. Po zakończeniu przygotowania formularza, użyj <em>Publikuj</em> poniżej." + +#: webform.module:1184 +msgid "Submissions for this form are closed." +msgstr "Nie można już wypełnić formularza." + +#: webform.module:1188 +msgid "You must <a href=\"!login\">login</a> or <a href=\"!register\">register</a> to view this form." +msgstr "Musisz mieć konto, aby zobaczyć formularz." + +#: webform.module:1192 +msgid "You do not have permission to view this form." +msgstr "Nie masz praw do obejrzenia formularza." + +#: webform.module:1199 +msgid "You have submitted this form the maximum number of times (@count)." +msgstr "Przekroczyłes limit wypełnień formularza (@count)." + +#: webform.module:1202;1213 +msgid "You have already submitted this form." +msgstr "Wypełniłeś już wcześniej ten formularz." + +#: webform.module:1205 +msgid "You may not submit another entry at this time." +msgstr "Nie możesz wypełnić teraz formularza." + +#: webform.module:1213;1216 +msgid "<a href=\"!url\">View your previous submissions</a>." +msgstr "<a href=\"!url\">Zobacz Twoje wcześniejsze wpisy</a>." + +#: webform.module:1242 +msgid "Available components" +msgstr "Dostępne komponenty" + +#: webform.module:1245 +msgid "These are the available field types for your installation of Webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms." +msgstr "To są dostępne typy pól na Twoim formularzu. Możesz w każdej chwili wyłączyć komponent odznaczając odpowiadający checkbox. Tylko zaznaczone komponenty będą wyświetlone na dostępnych lub nowych formularzach." + +#: webform.module:1262 +msgid "Default e-mail values" +msgstr "Domyślne adresy e-mail" + +#: webform.module:1269 +msgid "From address" +msgstr "Adres nadawcy" + +#: webform.module:1271 +msgid "The default sender address for emailed webform results; often the e-mail address of the maintainer of your forms." +msgstr "Ten adres nadawcy będzie domyślnym adresem wysyłającym potwierdzenia wypełnienia formularza." + +#: webform.module:1276 +msgid "From name" +msgstr "Nazwa nadawcy" + +#: webform.module:1278 +msgid "The default sender name which is used along with the default from address." +msgstr "Wpisana wartość pojawi się w e-mailu jako nazwa nadawcy." + +#: webform.module:1283 +msgid "Default subject" +msgstr "Domyślny temat e-maila" + +#: webform.module:1284;2244 +msgid "Form submission from: %title" +msgstr "Wypełniony formularz: %title" + +#: webform.module:1285 +msgid "The default subject line of any e-mailed results." +msgstr "Wpisana wartość będzie tematem każdego e-maila potwierdzającego." + +#: webform.module:1290 +msgid "Advanced options" +msgstr "Dodatkowe opcje" + +# not literally, english sounds illogical +#: webform.module:1298 +msgid "Allow cookies for tracking submissions" +msgstr "Użyj ciasteczek do blokowania użytkowników" + +#: webform.module:1300 +msgid "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, Webform also uses IP addresses and site usernames to prevent repeated submissions." +msgstr "" + +#: webform.module:1305 +msgid "Default export format" +msgstr "Domyślny format exportu" + +#: webform.module:1312 +msgid "Default export delimiter" +msgstr "Domyślny rozdzielnik exportu" + +#: webform.module:1328 +msgid "Submission access control" +msgstr "Prawa dostępu do wypełniania" + +#: webform.module:1330 +msgid "Select the user roles that may submit each individual webform" +msgstr "Wybierz role, które mogą odpowiadać na formularze" + +#: webform.module:1331 +msgid "Disable Webform submission access control" +msgstr "Wyłącz sprawdzanie praw dostępu do formularzy" + +#: webform.module:1334 +msgid "By default, the configuration form for each webform allows the administrator to choose which roles may submit the form. You may want to allow users to always submit the form if you are using a separate node access module to control access to webform nodes themselves." +msgstr "" + +#: webform.module:1339 +msgid "Webforms debug" +msgstr "Webformular-Fehlersuche" + +#: webform.module:1341 +msgid "Off" +msgstr "Wyłączony" + +#: webform.module:1341 +msgid "Log submissions" +msgstr "Loguj subskrypcje" + +#: webform.module:1341 +msgid "Full debug" +msgstr "Pełny debug" + +#: webform.module:1342 +msgid "Set to \"Log submissions\" to log all submissions in the watchdog. Set to \"Full debug\" to print debug info on submission." +msgstr "Użyj logowania subskrypcji do umieszczania wpisów w logach drupala. Pełny debug wyświetli komunikat za każdą subskrypcją." + +#: webform.module:1362 +msgid "Enabled" +msgstr "Włączony" + +#: webform.module:1401 +msgid "Submission #@sid" +msgstr "Wpis nr @sid" + +#: webform.module:1421;1421 +msgid "Previous submission" +msgstr "Poprzedni wpis" + +#: webform.module:1424;1424 +msgid "Next submission" +msgstr "Następny wpis" + +#: webform.module:1428 +msgid "Submission Information" +msgstr "Informacje o wpisie" + +#: webform.module:1437 +msgid "Form: !form" +msgstr "Formularz: !form" + +#: webform.module:1440 +msgid "Submitted by !name" +msgstr "Dodany przez !name" + +#: webform.module:1485 +msgid "Next Page >" +msgstr "Następna strona >" + +#: webform.module:1486 +msgid "< Previous Page" +msgstr "< Poprzednia strona" + +#: webform.module:1631 +msgid "The webform component @type is not able to be displayed" +msgstr "Nie można wyświetlić komponentu o typie @type" + +#: webform.module:1840 +msgid "Illegal information. Data not submitted." +msgstr "Złe dane, fromularz nie został wysłany." + +#: webform.module:1878 +msgid "Submission posted to %title. <a href=\"!url\">Results</a>. !details" +msgstr "Wpis wysłany do %title. <a href=\"!url\">Wyniki</a>. !details" + +#: webform.module:1883 +msgid "Submission updated." +msgstr "Wpis zaktualizowany." + +#: webform.module:1986 +msgid "Thank you, your submission has been received." +msgstr "Dziękujemy, otrzymaliśmy Twój wpis." + +#: webform.module:2202;153;205 +msgid "Submissions" +msgstr "Wpisy" + +#: webform.module:2203;163 +msgid "Analysis" +msgstr "Analizy" + +#: webform.module:2204;173 +msgid "Table" +msgstr "Tabele" + +#: webform.module:2256;2257;2258;2259;2260;2263 +msgid "key" +msgstr "Klucz" + +#: webform.module:2267 +msgid "You may use special tokens in this field that will be replaced with dynamic values." +msgstr "Możesz użyć tokenów, aby automatycznie wypełnić określone pola." + +#: webform.module:2269 +#, fuzzy +msgid "You can use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables, %session[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> variables and %get[key] to create prefilled forms from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. %cookie, %request and %post also work with their respective PHP variables. For example %server[HTTP_USER_AGENT], %session[id], or %get[q]." +msgstr "" + +#: webform.module:2271 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "" + +#: webform.module:2275 +msgid "Token values" +msgstr "Wartości tokenów" + +#: webform.module:323 +msgid "create webforms" +msgstr "stwórz formularze" + +#: webform.module:323 +msgid "edit own webforms" +msgstr "edytuj własne formularze" + +#: webform.module:323 +msgid "edit webforms" +msgstr "edytuj formularze" + +#: webform.module:323 +msgid "access webform results" +msgstr "dostęp do odpowiedzi" + +#: webform.module:323 +msgid "clear webform results" +msgstr "czyszczenie odpowiedzi" + +#: webform.module:323 +msgid "access own webform submissions" +msgstr "dostęp do własnych odpowiedzi" + +#: webform.module:323 +msgid "edit own webform submissions" +msgstr "edycja własnych odpowiedzi" + +#: webform.module:323 +msgid "edit webform submissions" +msgstr "edycja odpowiedzi" + +#: webform.module:323 +msgid "use PHP for additional processing" +msgstr "używanie PHP do przetwarzania formularza" + +#: webform.module:70 +msgid "Webforms" +msgstr "Formularze" + +#: webform.module:74 +#, fuzzy +msgid "View and edit all the available webforms on your site." +msgstr "Oglądaj i edytuj wszystkie formularze na stronie." + +#: webform.module:85 +msgid "Global configuration of webform functionality." +msgstr "Globalna konfiguracja formularzy" + +#: webform.module:91 +msgid "Webform confirmation" +msgstr "Potwierdzneia formularzy" + +#: webform.module:100 +msgid "Configuration" +msgstr "Konfiguracja" + +#: webform.module:108 +msgid "Form components" +msgstr "Komponenty formularzy" + +#: webform.module:143 +msgid "Results" +msgstr "Wyniki" + +#: webform.module:214 +msgid "Webform submission" +msgstr "Odpowiedzi formularzy" + +#: webform.module:0 +msgid "webform" +msgstr "formularz" + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "Udostępnij tworzenie formularzy i kwestionariuszy." + +#: components/date.inc:44 +#: components/email.inc:43 +#: components/hidden.inc:38 +#: components/select.inc:55 +#: components/textarea.inc:45 +#: components/textfield.inc:46 +#: components/time.inc:41 +msgid "Default value" +msgstr "Domyślna wartość" + +#: components/date.inc:46 +#: components/email.inc:45 +#: components/hidden.inc:40 +#: components/textarea.inc:47 +#: components/textfield.inc:48 +#: components/time.inc:43 +msgid "The default value of the field." +msgstr "Domyślna wartość pola." + +#: components/date.inc:46 +msgid "Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid." +msgstr "" + +#: components/date.inc:53 +#: components/time.inc:51 +msgid "Timezone" +msgstr "Strefa czasowa" + +#: components/date.inc:55 +#, fuzzy +msgid "Adjust the date according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "" + +#: components/date.inc:56 +msgid "Website timezone" +msgstr "Strefa czasowa strony" + +#: components/date.inc:56 +msgid "User timezone" +msgstr "Strefa czasowa użytkownika" + +#: components/date.inc:56 +msgid "GMT" +msgstr "GMT" + +#: components/date.inc:61 +#: components/time.inc:59 +msgid "Observe Daylight Savings" +msgstr "Sommerzeit beachten" + +#: components/date.inc:64 +#: components/time.inc:62 +msgid "Automatically adjust the time during daylight savings." +msgstr "" + +#: components/date.inc:70 +msgid "Start year" +msgstr "Rok początkowy" + +#: components/date.inc:72 +msgid "The first year that is allowed to be entered." +msgstr "Pierwszy rok, w którym można użyć." + +#: components/date.inc:79 +msgid "End year" +msgstr "Rok końcowy" + +#: components/date.inc:81 +msgid "The last year that is allowed to be entered." +msgstr "Ostatni rok, w kŧórym można użyć." + +#: components/date.inc:88 +msgid "Use a textfield for year" +msgstr "Użyj pola tekstowego do wpisania roku" + +#: components/date.inc:90 +msgid "If checked, the generated date field will use a textfield for the year. Otherwise it will use a select list." +msgstr "Jeśli zaznaczony, wygenerowane pole daty będzie używało pola tekstowego roku. W innym wypadku zostanie użyta wartość z listy." + +#: components/date.inc:184 +msgid "Month" +msgstr "Miesiąc" + +#: components/date.inc:187 +msgid "Day" +msgstr "Dzień" + +#: components/date.inc:190;206 +msgid "Year" +msgstr "Rok" + +#: components/date.inc:223 +msgid "!name field is required." +msgstr "Pole !name jest wymagane." + +# BUG: English is not context sensitive +#: components/date.inc:230 +#, fuzzy +msgid "Entered !name is not a valid date." +msgstr "Podana !name nie jest poprawną datą." + +#: components/date.inc:237 +msgid "The entered date needs to be between the years @start and @end." +msgstr "Podana data musi zawierać się w latach od @start do @end." + +#: components/date.inc:312 +msgid "Presents month, day, and year fields." +msgstr "Pokazuje pola: miesiąc, dzień i rok." + +#: components/date.inc:383 +#: components/email.inc:211 +#: components/file.inc:511 +#: components/textarea.inc:179 +#: components/textfield.inc:228 +#: components/time.inc:318 +msgid "Left Blank" +msgstr "Zostaw wolne" + +#: components/date.inc:384 +#: components/email.inc:212 +#: components/textarea.inc:180 +#: components/textfield.inc:229 +#: components/time.inc:319 +msgid "User entered value" +msgstr "Użytkownik podał wartość" + +#: components/email.inc:54 +msgid "User email as default" +msgstr "E-mail użytkownika jako domyślny" + +#: components/email.inc:56 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "Ustawia tą wartość jako e-mail użytkownika, jesli się zaloguje." + +#: components/email.inc:63 +#: components/file.inc:127 +#: components/textarea.inc:54 +#: components/textfield.inc:55 +msgid "Width" +msgstr "Szerokość" + +#: components/email.inc:65 +#: components/textarea.inc:56 +#: components/textfield.inc:57 +msgid "Width of the textfield." +msgstr "Szerokość pola tekstowego." + +#: components/email.inc:65 +#: components/file.inc:129 +#: components/textarea.inc:56;64 +#: components/textfield.inc:57 +msgid "Leaving blank will use the default size." +msgstr "Pozostawiając puste, system użyje domyślnej szerokości." + +# not literally +#: components/email.inc:71 +#: components/hidden.inc:51 +#: components/select.inc:78 +msgid "E-mail a submission copy" +msgstr "E-mail z kopią odpowiedzi" + +#: components/email.inc:74 +#: components/hidden.inc:54 +#: components/select.inc:81 +msgid "Check this option if this component contains an e-mail address that should get a copy of the submission. Emails are sent individually so other emails will not be shown to the recipient." +msgstr "Zaznacz, jeśli adres e-mail powinien otrzymać kopię odpowiedzi." + +#: components/email.inc:78 +#: components/textarea.inc:77 +#: components/textfield.inc:91 +msgid "Disabled" +msgstr "Wyłączone" + +#: components/email.inc:80 +#: components/textarea.inc:79 +#: components/textfield.inc:93 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "Zaznacz, aby pole stało się nie edytowalne. Przydatne, aby ustawić domyślną, niezmienną wartość." + +#: components/email.inc:145 +msgid "%value is not a valid email address." +msgstr "%value nie jest poprawnym adresem e-mail." + +#: components/email.inc:178 +msgid "A textfield that automatically fills in a logged-in user's e-mail." +msgstr "Pole tekstowe, wypełniające się automatycznie adresem e-mail zalogowanej osoby." + +#: components/email.inc:213 +#: components/hidden.inc:148 +#: components/textarea.inc:181 +#: components/textfield.inc:230 +msgid "Average submission length in words (ex blanks)" +msgstr "Przybliżona długość wpisu, w słowach (bez spacji)" + +#: components/fieldset.inc:39 +msgid "Collapsible" +msgstr "Zwijane" + +#: components/fieldset.inc:41 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "Zaznacz, jeśli grupa ma być zwijana." + +#: components/fieldset.inc:46 +msgid "Collapsed by Default" +msgstr "Zwijane domyślnie" + +#: components/fieldset.inc:48 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "Grupy domyslnie są otwarte, zaznacz aby zmienić na zamknięte." + +#: components/fieldset.inc:100 +msgid "Fieldsets allow you to organize multiple fields into groups." +msgstr "Grupy pozwalają dzielić pola formularza." + +#: components/file.inc:49 +msgid "Upload Filtering" +msgstr "Filtry wysyłania plików" + +#: components/file.inc:50 +#, fuzzy +msgid "Select the types of uploads you would like to allow." +msgstr "Zaznacz, jakie typy plików mogą być załączone do formularza." + +#: components/file.inc:60 +msgid "Web Images" +msgstr "Obrazki internetowe" + +#: components/file.inc:68 +msgid "Desktop Images" +msgstr "Tła pulpitu" + +#: components/file.inc:76 +msgid "Documents" +msgstr "Dokumenty" + +#: components/file.inc:84 +msgid "Media" +msgstr "Inne media" + +#: components/file.inc:92 +msgid "Archives" +msgstr "Archiwa" + +#: components/file.inc:99 +msgid "Additional Extensions" +msgstr "Inne rozszerzenia" + +#: components/file.inc:101 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "Podaj rozszerzenia oddzielone przecinkami." + +#: components/file.inc:109 +#, fuzzy +msgid "Max Upload Size" +msgstr "Maksymalna wielkośc wiadomości" + +#: components/file.inc:111 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "Podaj maksymalną wielkośc pliku (ów) w KB" + +#: components/file.inc:118 +#, fuzzy +msgid "Upload Directory" +msgstr "Folder składowania plików" + +#: components/file.inc:120 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "Możesz podać własny folder, w którym przechowywane będą pliki." + +#: components/file.inc:129 +msgid "Width of the file field." +msgstr "Szerokość pola pliku." + +# not literally +#: components/file.inc:144 +msgid "The save directory %directory could not be created. Check that the webform files directory is writtable." +msgstr "" + +#: components/file.inc:248 +msgid "Category" +msgstr "Kategoria" + +#: components/file.inc:248 +msgid "Types" +msgstr "Typy" + +#: components/file.inc:308 +#: components/time.inc:171 +msgid "%field field is required." +msgstr "Pole %field jest wymagane." + +#: components/file.inc:340 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "Pliki z rozszerzeniem `%ext` są niedozwolone. Możesz umieszczać tylko pliki z rozszerzeniami %exts." + +#: components/file.inc:345 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "Plik %filename jest za wielki (%filesize KB). Pliki mogą mieć maksymalną wielkość %maxsize KB." + +#: components/file.inc:366 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "Niemożliwe było zapisanie pliku %filename. Możliwe, że folder jest nie do zapisu." + +#: components/file.inc:377 +msgid "The uploaded file was unable to be saved. The destination directory does not exist." +msgstr "Nie można było zapisać pliku, folder nie istnieje." + +#: components/file.inc:428 +msgid "Uploading a new file will replace the current file." +msgstr "Zapisanie aktualnego pliku nadpisze stary plik." + +#: components/file.inc:463 +msgid "Allow users to submit files of the configured types." +msgstr "Zezwól użytkownikom na umieszczanie plików o konfigurowalnych typach." + +#: components/file.inc:512 +msgid "User uploaded file" +msgstr "Plik uzytkownika" + +#: components/file.inc:513 +msgid "Average uploaded file size" +msgstr "Średnia wielkość pliku" + +#: components/file.inc:556 +msgid "Filesize (KB)" +msgstr "Wielkość (KB)" + +#: components/grid.inc:42 +#: components/select.inc:44 +msgid "Options" +msgstr "Opcje" + +#: components/grid.inc:44 +#, fuzzy +msgid "Options to select across the top. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "" + +#: components/grid.inc:52 +msgid "Questions" +msgstr "Pytania" + +#: components/grid.inc:54 +msgid "Questions list down the left side. One question per line." +msgstr "Lista pytań, jedno w każdej linii." + +#: components/grid.inc:62 +msgid "Randomize Options" +msgstr "Losuj odpowiedzi" + +#: components/grid.inc:64 +msgid "Randomizes the order of options on the top when they are displayed in the form." +msgstr "Losowo posortuj odpowiedzi na formularzu." + +#: components/grid.inc:68 +msgid "Randomize Questions" +msgstr "Losuj pytania" + +#: components/grid.inc:70 +msgid "Randomize the order of the questions on the side when they are displayed in the form." +msgstr "Losowo posortuj pytania na formularzu." + +#: components/grid.inc:227 +msgid "Allows creation of grid questions, denoted by radio buttons." +msgstr "Zezwala na tworzenie siatki pytań, wybieranych polami radio." + +#: components/hidden.inc:99 +msgid "@name (hidden)" +msgstr "@name (ukryty)" + +#: components/hidden.inc:113 +msgid "A field which is not visible to the user, but is recorded with the submission." +msgstr "Pole niewidoczne dla uzytkownika, ale zapisywane podczas wypełniania." + +#: components/hidden.inc:146 +msgid "Empty" +msgstr "Puste" + +#: components/hidden.inc:147 +msgid "Non-empty" +msgstr "Niewypełnione" + +#: components/markup.inc:41 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "Zaznacz, jeśli zezwalasz użytkownikom wpisać kod HTML lub PHP." + +#: components/markup.inc:63 +msgid "Preview" +msgstr "Podgląd" + +#: components/markup.inc:103 +msgid "Displays text as HTML in the form; does not render a field." +msgstr "Wyświetla tekst jako HTML w formularzu." + +#: components/pagebreak.inc:32 +msgid "Use caution when combining the pagebreak and file components. File components will not be submitted unless they are after the last pagebreak in the form." +msgstr "" + +# not literally +#: components/pagebreak.inc:59 +msgid "Break up a multi-page form." +msgstr "Stwórz wielo stronnicowy formularz." + +#: components/select.inc:46 +msgid "A list of selectable options. One option per line. Key-value pairs may be entered seperated by pipes, such as \"safe_key|Some readable option\". Option groups for lists and menus may be specified with <Group Name>. <> can be used to insert items at the root of the menu after specifying a group." +msgstr "" + +#: components/select.inc:57 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "Domyślna wartość dla pola. Dla wielu opcji, użyj przecinka do ich rozdzielenia." + +#: components/select.inc:64 +msgid "Multiple" +msgstr "Wiele" + +#: components/select.inc:67 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "Zaznacz tą opcję, aby użytkownik mógł wybrać więcej niż jedną odpowiedź." + +#: components/select.inc:71 +msgid "Listbox" +msgstr "Lista" + +#: components/select.inc:74 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "Zaznacz tą opcję, jesli uzytkownik powinien wybrać odpowiedź z listy a nie z elementów radio czy checkbox." + +#: components/select.inc:82 +msgid "To use the option with a select component, you must use key-value pairs seperated by pipes. i.e. user@example.com|Sample user." +msgstr "" + +#: components/select.inc:124 +msgid "Options within the select list must be unique. The following keys have been used multiple times:" +msgstr "Opcje na liście muszą być unikalne. Poniższe opcje zostały użyte więcej niż raz:" + +#: components/select.inc:325 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "Umożliwia stworzenie checkboxów, elementów radio i wyborów z menu." + +#: components/textarea.inc:62 +msgid "Height" +msgstr "Wysokość" + +#: components/textarea.inc:64 +msgid "Height of the textfield." +msgstr "Wysokość pola tekstowego." + +# not literally +#: components/textarea.inc:70 +msgid "Resizable" +msgstr "Rozszerzalne" + +# not literally +#: components/textarea.inc:71 +msgid "Make this field resizable by the user." +msgstr "Umożliw zmianę rozmiaru pola." + +#: components/textarea.inc:146 +msgid "A large text area that allows for multiple lines of input." +msgstr "Pole tekstowe umożliwia wpisanie wielu linii tekstu." + +#: components/textfield.inc:64 +msgid "Maxlength" +msgstr "Maksymalna długość" + +#: components/textfield.inc:66 +msgid "Maxlength of the textfield." +msgstr "Maksymalna długość pola tekstowego." + +#: components/textfield.inc:73 +msgid "Label placed to the left of the textfield" +msgstr "Opis pola, umieszczony po lewej stronie" + +#: components/textfield.inc:75 +msgid "Examples: $, #, -." +msgstr "Np: $, #, -." + +#: components/textfield.inc:82 +msgid "Label placed to the right of the textfield" +msgstr "Opis pola umieszczony po prawej stronie" + +#: components/textfield.inc:84 +msgid "Examples: lb, kg, %." +msgstr "Np: lb, kg, %." + +#: components/textfield.inc:195 +msgid "Basic textfield type." +msgstr "Typ pola tekstowego." + +#: components/time.inc:43 +msgid "Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are all valid." +msgstr "Akceptuje format czasu <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">z tej listy</a>. Np: '+2 hours' czy 10:30pm'." + +#: components/time.inc:53 +msgid "Adjust the time according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "" + +#: components/time.inc:67 +msgid "Time Format" +msgstr "Format czasu" + +#: components/time.inc:69 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Format czasu, 12 lub 24 godzinny." + +#: components/time.inc:123 +msgid "hour" +msgstr "godzina" + +#: components/time.inc:124 +msgid "minute" +msgstr "minuta" + +#: components/time.inc:127 +msgid "am" +msgstr "am" + +#: components/time.inc:127 +msgid "pm" +msgstr "pm" + +# BUG: English is not context sensitive +#: components/time.inc:179 +#, fuzzy +msgid "Entered %name is not a valid time." +msgstr "Wpisane %name nie jest poprawnym czasem." + +#: components/time.inc:250 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "Pokazuje uzytkownikowi pola godziny i minuty. Opcjonalnie pola am/pm." + diff --git a/sites/all/modules/webform/translations/ru.po b/sites/all/modules/webform/translations/ru.po new file mode 100644 index 0000000000000000000000000000000000000000..e00603dce3b93b89a2fb7b18932b283da3473365 --- /dev/null +++ b/sites/all/modules/webform/translations/ru.po @@ -0,0 +1,959 @@ +msgid "" +msgstr "" +"Project-Id-Version: Webform Drupal 5.1\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2007-05-28 16:32+0300\n" +"Last-Translator: Yurg <y@gomankov.ru>\n" +"Language-Team: Gomankov <ygomankov@gmail.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Russian\n" +"X-Poedit-Country: RUSSIAN FEDERATION\n" + +#: webform.inc:17 +#: webform.module:473 +msgid "Title" +msgstr "Заголовок" + +#: webform.inc:18 +#: webform_report.inc:39 +msgid "View" +msgstr "Просмотр" + +#: webform.inc:20 +#: webform_report.inc:29 +#: ;32 +msgid "Operations" +msgstr "Операции" + +#: webform.inc:28 +#: webform.module:282 +msgid "submissions" +msgstr "Результаты заполнения" + +#: webform.inc:29 +#: webform.module:287 +msgid "analysis" +msgstr "Анализировать" + +#: webform.inc:30 +#: webform.module:292 +msgid "table" +msgstr "Таблица" + +#: webform.inc:31 +#: webform.module:297 +msgid "download" +msgstr "Скачать" + +#: webform.inc:32 +msgid "edit" +msgstr "Редактировать" + +#: webform.inc:33 +#: webform.module:302 +msgid "clear" +msgstr "Очистить" + +#: webform.inc:49 +msgid "Clear Form Submissions" +msgstr "Очистить результаты заполнения форм" + +#: webform.inc:53 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "Уверены, что хотите удалить результаты?" + +#: webform.inc:55 +msgid "Clear" +msgstr "Очистить" + +#: webform.inc:55 +#: ;84 +msgid "Cancel" +msgstr "Отмена" + +#: webform.inc:65 +msgid "Webform %title entries cleared." +msgstr "Результаты заполнения %title удалены." + +#: webform.inc:77 +msgid "Delete Form Submission" +msgstr "Удалить результаты заполнения" + +#: webform.inc:82 +msgid "Are you sure you want to delete this submission?" +msgstr "Уверены, что хотите удалить эту запись," + +#: webform.inc:84 +#: webform_report.inc:42 +msgid "Delete" +msgstr "Удалить" + +#: webform.inc:94 +msgid "Submission deleted." +msgstr "Удалено." + +#: webform.inc:154 +msgid "Submitted on" +msgstr "Дата заполнения" + +#: webform.inc:158 +msgid "Submitted by user" +msgstr "Заполнено пользователем" + +#: webform.inc:161 +msgid "Submitted by anonymous user" +msgstr "Заполнено анонимно" + +#: webform.inc:193 +msgid "Submitted values are" +msgstr "Ответы: " + +#: webform.inc:197 +msgid "The results of this submission may be viewed at:" +msgstr "Ответы могут быть просмотрены тут:" + +#: webform.inc:67 +#: webform.module:274 +#: ;307;144;980;1109;1117;1199;1217;0 +msgid "webform" +msgstr "форма" + +#: webform_report.inc:26 +#: ;62 +msgid "#" +msgstr "#" + +#: webform_report.inc:27 +msgid "Submitted" +msgstr "Отправлено" + +#: webform_report.inc:63 +msgid "Time" +msgstr "Время" + +#: webform_report.inc:64 +msgid "IP Address" +msgstr "IP адрес" + +#: webform_report.inc:208 +msgid "Q" +msgstr "Вопр." + +#: webform_report.inc:209 +msgid "responses" +msgstr "ответов" + +#: webform.module:25 +msgid "Webforms are forms and questionnaires. To add one select <strong>create content -> webform</strong>. Below you can set different security and debug options." +msgstr "С помощью Опросника можно создавать тесты, опросы, формы для отправки и т.д. Ниже можно сделать некоторые предварительные настройки." + +#: webform.module:28 +msgid "" +"<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will be sent. If no email address is specified, no e-mail will be sent when submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will be used to populate the return e-mail address on any sent e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that will be used to populate the subject e-mail field on any sent e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown after you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database table <i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" + +#: webform.module:44 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "Можно использовать для создания анкет, тестов, форм обратной связи и т.д." + +#: webform.module:47 +msgid "Available variables are: %username, %useremail, %site, %date." +msgstr "Доступные операторы: %username, %useremail, %site, %date." + +#: webform.module:48 +msgid "You can also use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables and %get[key] to create prefilled forms from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a> (e.g. %server[HTTP_USER_AGENT] or %get[id])." +msgstr "Можно использовать %server[key] для добавления PHP-команд <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> и %get[key] чтобы создать формы с предварительно заполненным полем <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a> (т.е. %server[HTTP_USER_AGENT] или %get[id])." + +#: webform.module:50 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "Если используется модуль <em> profile </em>, vможн подставлять данные из полей модуля, используя синтаксис %profile[form_name]. Например, если в профайлах есть поле profile_city, просто добавьте параметр %profile[profile_city]." + +#: webform.module:75 +#: ;243;260 +msgid "Webform" +msgstr "Опросник" + +#: webform.module:77 +msgid "Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users." +msgstr "Создайте новую форму или опросник. Результаты заполнения и статистика будет записана и передана для просмотра пользователям с соответствующими правами доступа. " + +#: webform.module:168 +msgid "Available Components" +msgstr "Доступные компоненты" + +#: webform.module:171 +msgid "Below is a list of supported field types available for webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms." +msgstr "Список поддерживаемых типов полей в опроснике. Можно отключить любое из них, просто убрав соответствующую галочку. Только отмеченные компоненты будут доступны в существующих или вновь создаваемых формах опросника." + +#: webform.module:188 +msgid "Advanced Options" +msgstr "Продвинутые настройки" + +#: webform.module:196 +msgid "Allow Cookies for Tracking Submissions" +msgstr "Разрешить записывать действия пользователя в cookie." + +#: webform.module:198 +msgid "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, webform also uses IP addresses and site usernames to prevent repeated submissions." +msgstr "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> используются для записи и предотвращения многочисленных отправок формы одним и тем же полльзователем.Эта настройка работает независимо от механизма ограничения количества заполнений, но в некоторых случаях может повысить аккуратность регулятора отправок. Помимо cookies, опросник также использует запись IP- адресов для предотвращения множественных отправок." + +#: webform.module:203 +msgid "Webforms Debug" +msgstr "Отладка опросника" + +#: webform.module:206 +msgid "Set this option to \"Log submissions\" to log all submissions in the watchdog. Set it to \"Full debug\" to print debug info on submission. You probably want to leave this option on \"OFF\"." +msgstr "Включите \"Log submissions\" чтобы записывать все заполнения формы в логи системы. Включите \"Full debug\" чтобы выводить служебные сообщения в ходе заполнения прямо на экран. Эту опцию лучше выставить в \"OFF\"." + +#: webform.module:222 +#: ;777;859 +msgid "Name" +msgstr "Название" + +#: webform.module:222 +#: ;481;867 +msgid "Description" +msgstr "Описание" + +#: webform.module:222 +msgid "Enabled" +msgstr "Вкл." + +#: webform.module:250 +msgid "Webforms" +msgstr "Опросники" + +#: webform.module:253 +msgid "View and edit all the available webforms on your site." +msgstr "Просмотр всех опросников" + +#: webform.module:264 +msgid "Global configuration of webform functionality." +msgstr "Глобальные настройки системы опросников" + +#: webform.module:278 +#: ;1217 +msgid "Results" +msgstr "Результаты" + +#: webform.module:326 +msgid "Go to form" +msgstr "Пререйти к форме" + +#: webform.module:328 +msgid "View this form." +msgstr "просмотреть эту форму." + +#: webform.module:349 +#: ;433;533 +msgid "Delete Selected" +msgstr "Удалить отмеченное" + +#: webform.module:359 +#: ;927 +msgid "Done" +msgstr "Готово" + +#: webform.module:387 +msgid "The form component has been changed. Remember to press Submit on the bottom of this form to save your changes." +msgstr "Компонент формы был изменён. Обязательно нажмите кнопку внизу формы, чтобы изменения вступили в силу." + +#: webform.module:389 +#: ;446;969;1007 components/markup.inc:38 +msgid "Preview" +msgstr "Просмотр" + +#: webform.module:417 +#: ;554 +msgid "Add" +msgstr "Добавить" + +#: webform.module:425 +#: ;538;795 +msgid "Edit Selected" +msgstr "Редактировать отмеченное" + +#: webform.module:438 +msgid "Field deleted, form must be submitted to save changes" +msgstr "Поле удалено, нужно сохранить форму, чтобы имзенения вступили в силу." + +#: webform.module:441 +msgid "A component must be selected to delete" +msgstr "Нужно выбрать компонент для удаления." + +#: webform.module:445 +#: ;1060 +msgid "Submit" +msgstr "Отправить" + +#: webform.module:450 +msgid "Submission limit must be a number" +msgstr "Ограничитель отправок должен быть числом" + +#: webform.module:466 +msgid "Webform Settings" +msgstr "Настройки Опросников" + +#: webform.module:482 +msgid "Text to be shown as teaser and before the form." +msgstr "Текст перед полями опросника." + +#: webform.module:491 +msgid "Confirmation message or redirect URL" +msgstr "Сообщение с подтверждением заполнения или ссылка, на которую будет переправлен пользователь, после заполнения опросника. " + +#: webform.module:492 +msgid "Message to be shown upon successful submission or a path to a redirect page. Redirect pages must start with <em>http://</em> for external sites or <em>internal:</em> for an internal path. i.e. <em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "Сообщение с подтверждением заполнения или ссылка, на которую будет переправлен пользователь, после заполнения опросника. Ссылку обязательно начните с символов <em>http://</em>для внешних ссылок или <em>internal:</em> для внутренних.то есть <em>http://www.example.com</em> или <em>internal:node/10</em>" + +#: webform.module:506 +msgid "Components" +msgstr "компоненты" + +#: webform.module:546 +msgid "Add a new component" +msgstr "Добавить новый компонент" + +#: webform.module:549 +msgid "Each component adds a new field to the form. Any number components (even of the same type) may be added to the form. Select a component type to add above." +msgstr "Каждый компонент добавляет новое поле к форме. К форме может быть добавлено любое количество полей для заполнения, даже одинаковых." + +#: webform.module:563 +msgid "Mail Settings" +msgstr "Настройки отправок по email" + +#: webform.module:571 +msgid "E-mail to address" +msgstr "Кому" + +#: webform.module:573 +msgid "Form submissions will be e-mailed to this address. Leave blank for none." +msgstr "Результаты заполнения будут отправлены на этот email. Оставьте пустое поле, чтобы результаты не отправлялись." + +#: webform.module:577 +#: ;578 +msgid "Default" +msgstr "По-умолчанию" + +#: webform.module:594 +msgid "E-mail from address" +msgstr "От кого" + +#: webform.module:597 +msgid "After adding components to this form, any email or hidden form element may be selected as the sender for e-mails." +msgstr "После добавления компонентов \"скрытое поле\" или \"email\", можно сделать содержимое добавленных полей темой отправляемого письма." + +#: webform.module:603 +msgid "E-mail subject" +msgstr "Тема письма" + +#: webform.module:606 +msgid "After adding components to this form, any textfield or hidden form element may be selected as the subject line for e-mails." +msgstr "После добавления компонентов \"скрытое поле\" или \"email\", можно сделать содержимое добавленных полей темой отправляемого письма." + +#: webform.module:616 +msgid "Advanced Settings" +msgstr "Расширенные настройки" + +#: webform.module:624 +msgid "Limit the number of submissions a user may send within a specified time period" +msgstr "Ограничить количество заполнений опросника, которые может сделать отвечающий в единицу времени." + +#: webform.module:643 +msgid "Limit to " +msgstr "Оглраничить до" + +#: webform.module:651 +msgid "submission(s)" +msgstr "отправок" + +#: webform.module:662 +msgid "ever" +msgstr "каждый (период времени)" + +#: webform.module:663 +msgid "every hour" +msgstr "каждый час" + +#: webform.module:664 +msgid "every day" +msgstr "каждый день" + +#: webform.module:665 +msgid "every week" +msgstr "каждая неделя" + +#: webform.module:677 +msgid "Enter PHP code to perform additional validation for this form. Include the <?php ?> tags. $form_id and $form_values are available variables. If validation fails, use the form_set_error function to prevent the form from being submitted. Use the same syntax as a _validate function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Использовать php для дополнительной обработки. Включите <?php ?> в код. Доступные операторы: $form_id и $form_values" + +#: webform.module:686 +msgid "Enter PHP code to perform additional processing for this form (after the validation). Include the <?php ?> tags. $form_id and $form_values are available variables, use the same syntax as a _submit function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Использовать php для дополнительной обработки. Включите <?php ?> в код. Доступные операторы: $form_id и $form_values" + +#: webform.module:705 +msgid "Redirect POST Values" +msgstr "Перенаправлять POST - запросы" + +#: webform.module:706 +msgid "Forward the contents of the POST array to the redirect URL. Use this option for custom processing of the form information. No processing will be done by webform. The confirmation option above MUST be a full redirect URL for this option to have an effect." +msgstr "Перенаправлять POST - запросы" + +#: webform.module:778 +msgid "Type" +msgstr "Тип" + +#: webform.module:779 +#: components/markup.inc:16 +msgid "Value" +msgstr "Значение" + +#: webform.module:780 +#: ;876 +msgid "Mandatory" +msgstr "Обязательное поле?" + +#: webform.module:781 +#: ;902 +msgid "Weight" +msgstr "Вес" + +#: webform.module:800 +msgid "Component not found" +msgstr "компонент не найден" + +#: webform.module:840 +msgid "Field Details" +msgstr "Детали" + +#: webform.module:860 +msgid "Name of the field. This is used as a descriptive label and as the key when saving data in the database." +msgstr "Имя поля. Используется пр ипоказе пользователям и при сохранении в БД." + +#: webform.module:869 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "Короткое описание/подсказка пользователю, как заполнить это поле." + +#: webform.module:878 +msgid "Check this option if the user must enter a value." +msgstr "Если хотите сделать это поле обязательным, установите галочку тут." + +#: webform.module:891 +msgid "Parent Fieldset" +msgstr "Родительский набор полей" + +#: webform.module:893 +msgid "Optional. You may organize your form by placing this component inside another fieldset." +msgstr "Опционально. Вы можете группировать компоненты в логические наборы, группируя их." + +#: webform.module:904 +msgid "Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top." +msgstr "Опционально. Более тяженлые пункты опустятся вниз, лёгкие - будут показаны сверху." + +#: webform.module:916 +#: ;1084 +msgid "The webform component" +msgstr "Компонент формы" + +#: webform.module:916 +msgid " does not have an edit function defined" +msgstr " не имеет настроек редактирования" + +#: webform.module:980 +msgid "Unauthorized webform access attempt" +msgstr " Аааа!!!! Держи его!!! Несанкционированная попытка доступа к Опроснику." + +#: webform.module:1084 +msgid "is not able to be displayed" +msgstr "не получилось отобразить" + +#: webform.module:1109 +msgid "The authenticated user <a href=\"%userURL\">%username</a> attempted to submit more entries than allowed on the <a href=\"%webformURL\">%webformTitle</a> webform" +msgstr "Зарегистрированный пользователь<a href=\"%userURL\">%username</a> пытался отправить форму <a href=\"%webformURL\">%webformTitle</a> больше раз, чем это разрешено в настройках. " + +#: webform.module:1117 +msgid "An anonymous user with IP address %ip attempted to submit more entries than allowed on the <a href=\"%webformURL\">%webformTitle</a> webform" +msgstr "Пользователь с IP-адресом %ip пытался отправить форму бОльшее количество раз, чем разрешено в настройках <a href=\"%webformURL\">%webformTitle</a>" + +#: webform.module:1125 +msgid "You have submitted the maximum number of entries. Check submission guidelines." +msgstr "Вы отправили ответы максимально разрешенное количество раз." + +#: webform.module:1173 +msgid "Form submission from: " +msgstr "Результат заполнения от:" + +#: webform.module:1199 +msgid "Possible spam attempt from @remote_addr" +msgstr "Кажется, попытка заспамить (ответить неразрешенное количество раз) опросник от: @remote_addr" + +#: webform.module:1200 +msgid "Illegal information. Data not submitted." +msgstr "Неверная информация. Данные не приняты." + +#: webform.module:1217 +msgid "Submission posted to " +msgstr "Есть новое заполнение" + +#: webform.module:1268 +msgid "No node with the id '%nid' could be found" +msgstr "Не найдено страницы с таким '%nid'" + +#: webform.module:1280 +msgid "Go back to the form" +msgstr "Вернуться к форме" + +#: webform.module:66 +msgid "create webforms" +msgstr "создавать опросники" + +#: webform.module:66 +msgid "edit own webforms" +msgstr "редактировать созданные опросники" + +#: webform.module:66 +msgid "edit webforms" +msgstr "редактировать все опросники" + +#: webform.module:66 +msgid "access webform results" +msgstr "доступ к результатам заполнения опросника" + +#: webform.module:66 +msgid "clear webform results" +msgstr "удаление результатов опросника" + +#: webform.module:66 +msgid "use PHP for additional processing" +msgstr "использовать PHP для дополнительной обработки." + +#: webform.install:117 +msgid "Webform module installed module tables successfully." +msgstr "Модуль Опросников установлен успешно." + +#: webform.install:120 +msgid "The installation of webform module was unsuccessful." +msgstr "Модуль Опросников установить не удалось :(" + +#: components/date.inc:15 +#: components/hidden.inc:15 +#: components/select.inc:25 +#: components/textarea.inc:15 +#: components/textfield.inc:15 +#: components/time.inc:15 +msgid "Default value" +msgstr "Значение по-умолчанию" + +#: components/date.inc:17 +#: components/hidden.inc:17 +#: components/textarea.inc:17 +#: components/textfield.inc:17 +#: components/time.inc:17 +msgid "The default value of the field." +msgstr "Значение поля по-умолчанию" + +#: components/date.inc:17 +msgid "Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid." +msgstr "Можно ввести любую дату в любом формате (см. примеры на <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a> ). Можно вводить, например, дату, как \"сегодня\", \"+2 дня\" или \"9 декабря 2004 года\" (всё без кавычек)." + +#: components/date.inc:24 +#: components/time.inc:25 +msgid "Timezone" +msgstr "Часовой пояс" + +#: components/date.inc:26 +msgid "Adjust the date according to a specific timezone. Website timezone is defined in the <a href=\"%settings\">Site Settings</a> and is the default." +msgstr "Настройки времени согласно глобальным настройкам часовых поясов сайта. Глобально время для сайта настраивается в <a href=\"%settings\">Настройках сайта</a>." + +#: components/date.inc:32 +#: components/time.inc:33 +msgid "Observe Daylight Savings" +msgstr "Просмотр отправок за день" + +#: components/date.inc:35 +#: components/time.inc:36 +msgid "Automatically adjust the time during daylight savings." +msgstr "Автоматически подстраивать время при сохранениях и отправках" + +#: components/date.inc:70 +msgid "month" +msgstr "месяц" + +#: components/date.inc:70 +msgid "January" +msgstr "Январь" + +#: components/date.inc:70 +msgid "February" +msgstr "Февраль" + +#: components/date.inc:70 +msgid "March" +msgstr "март" + +#: components/date.inc:70 +msgid "April" +msgstr "Апрель" + +#: components/date.inc:70 +msgid "May" +msgstr "Май" + +#: components/date.inc:70 +msgid "June" +msgstr "Июнь" + +#: components/date.inc:70 +msgid "July" +msgstr "Июль" + +#: components/date.inc:70 +msgid "August" +msgstr "Август" + +#: components/date.inc:70 +msgid "September" +msgstr "Сентябрь" + +#: components/date.inc:70 +msgid "October" +msgstr "Октябрь" + +#: components/date.inc:70 +msgid "November" +msgstr "Ноябрь" + +#: components/date.inc:70 +msgid "December" +msgstr "Декабрь" + +#: components/date.inc:71 +msgid "day" +msgstr "день" + +#: components/date.inc:87 +#: components/time.inc:102 +msgid "This field is required." +msgstr "Обязательное поле" + +#: components/date.inc:126 +msgid " field required" +msgstr " обяязательно" + +#: components/date.inc:139 +msgid "Entered %name is not a valid date" +msgstr "Введено неверное значение %name" + +#: components/date.inc:187 +msgid "Presents month, day, and year fields." +msgstr "Поля дней, месяцев и лет" + +#: components/date.inc:241 +#: components/email.inc:135 +#: components/file.inc:308 +#: components/textarea.inc:130 +#: components/textfield.inc:131 +#: components/time.inc:243 +msgid "Left Blank" +msgstr "Оставить пустым" + +#: components/date.inc:242 +#: components/email.inc:136 +#: components/textarea.inc:131 +#: components/textfield.inc:132 +#: components/time.inc:244 +msgid "User entered value" +msgstr "Значение, вводимое пользователем" + +#: components/email.inc:15 +msgid "User email as default" +msgstr "emzil пользователя по-умолчанию" + +#: components/email.inc:18 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "В это поле автоматически пишется email зарегистрированного поетителя. Для анонимных размещений не играет роли." + +#: components/email.inc:23 +msgid "CC submission to this email" +msgstr "Отправлять копию на этот адрес email " + +#: components/email.inc:26 +msgid "Check this option if the email specified in this component should get a CC submission." +msgstr "На введенный в это поле email можно тправлять копии результатов заполнения опросника." + +#: components/email.inc:27 +msgid "Note that this opens the risk that the form can be used to send emails to any address and might be missused as a spam gateway." +msgstr "Обратите внимание! Эта настройка открывает возможность для спаммеров отправлять письма на любые адреса и может быть использована для спаммерских рассылок." + +#: components/email.inc:31 +#: components/textarea.inc:24 +#: components/textfield.inc:24 +msgid "Width" +msgstr "Ширина" + +#: components/email.inc:33 +#: components/textarea.inc:26 +#: components/textfield.inc:26 +msgid "Width of the textfield." +msgstr "Ширина текстового поля" + +#: components/email.inc:80 +msgid "%value is not a valid email address." +msgstr "Введён неверный адрес: '%value'. Исправьте адрес email. " + +#: components/email.inc:105 +msgid "A textfield that automatically fills in logged-in users e-mail." +msgstr "Поле для ввода email" + +#: components/email.inc:137 +#: components/hidden.inc:101 +#: components/textarea.inc:132 +#: components/textfield.inc:133 +msgid "Average submission length in words (ex blanks)" +msgstr "Среднее количество слов в отправленном тексте ( включая пробелы)" + +#: components/fieldset.inc:15 +msgid "Collapsible" +msgstr "Сворачиваемое" + +#: components/fieldset.inc:17 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "Если отмечено, набор можно сворачивать или разворачивать нажатием на ссылку в заголовке набора" + +#: components/fieldset.inc:22 +msgid "Collapsed by Default" +msgstr "Сворачиваемое по-умолчанию" + +#: components/fieldset.inc:24 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "Сворачиваемые наборы по-умолчанию развёрнуты. Поставьте галочку тут, если хотите, чтобы наборы полей были по-умолчанию свёрнуты." + +#: components/fieldset.inc:74 +msgid "Fieldsets allow you to organize complex webforms into groups of fields." +msgstr "Наборы полей помогают организовать поля в логические группы." + +#: components/file.inc:18 +msgid "Select the types of uploads you would like to allow." +msgstr "Выберите тип отправлений файлов, который вы хотите позволить." + +#: components/file.inc:22 +msgid "Web Images" +msgstr "Картинки и фотографии для интернета" + +#: components/file.inc:28 +msgid "Desktop Images" +msgstr "Картинки больших размеров" + +#: components/file.inc:34 +msgid "Documents" +msgstr "ДОкументы" + +#: components/file.inc:40 +msgid "Media" +msgstr "Медиа-файлы" + +#: components/file.inc:46 +msgid "Archives" +msgstr "Архивы" + +#: components/file.inc:52 +msgid "Additional Extensions" +msgstr "Другие файлы" + +#: components/file.inc:54 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "Ведите список позволенных расширений файлов через запятую. Эти расширения будут добавлены к вышеуказанному списку." + +#: components/file.inc:61 +msgid "Max Upload Size" +msgstr "Макс. размер файла" + +#: components/file.inc:63 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "Введите максимально разрешенный размер файла (в Килобайтах)" + +#: components/file.inc:70 +msgid "Upload Directory" +msgstr "Папка для размещения файлов" + +#: components/file.inc:72 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "Файлы опросника всегда сохраняются в папке /files/ Вашего сайта. Вы можете указать папку внутри /files/ для того, чтобы отделить файлы опросника от остальных" + +#: components/file.inc:154 +msgid "Category" +msgstr "Категория" + +#: components/file.inc:154 +msgid "Types" +msgstr "Типы" + +#: components/file.inc:198 +msgid "%field field is required." +msgstr "Необходимо указать %field." + +#: components/file.inc:231 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "Файлы с расширением '%ext' нельзя загружать, пожалуйста, загружайте файлы с позволенными расширениями: %exts." + +#: components/file.inc:236 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "Файл '%filename' слишком большой (%filesize KB). Пожалуйста, загружайте файлы размером %maxsize KB или меньше." + +#: components/file.inc:253 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "Файл %filename не удалось загрузить. Папка назначения закрыта для записи." + +#: components/file.inc:259 +msgid "The uploaded file %filename was unable to be saved. The destination directory does not exist." +msgstr "Файл %filename не удалось загрузить. Папка назначения отсутствует или не определена в настройках." + +#: components/file.inc:309 +msgid "User uploaded file" +msgstr "Пфайлы, загруженные пользователями" + +#: components/file.inc:310 +msgid "Average uploaded file size" +msgstr "Средний размер загружаемых файлов" + +#: components/hidden.inc:69 +msgid "Create a field which is not visible to the user, but is recorded with the submission." +msgstr "Создаёт невидимое для пользователя поле." + +#: components/hidden.inc:99 +msgid "Empty" +msgstr "Пустое" + +#: components/hidden.inc:100 +msgid "Non-empty" +msgstr "Не пустое" + +#: components/markup.inc:18 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "Разметка - разрешен HTML или PHP в этом поле." + +#: components/markup.inc:73 +msgid "Presents a markup area of text. Does not render a field." +msgstr "Поле для ввода символов разметки. Не записывает значения в базу, служит для оформления." + +#: components/select.inc:15 +msgid "Options" +msgstr "Варианты" + +#: components/select.inc:17 +msgid "A list of selectable options. One option per line." +msgstr "Введите минимум одно значение. Каждое значение должно быть введено с новой строки" + +#: components/select.inc:27 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "Значение поля по-умолчанию. Для множества значений, разделяйте введённые значения запятой" + +#: components/select.inc:34 +msgid "Multiple" +msgstr "Множественный выбор" + +#: components/select.inc:37 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "Чтобы позволить пользователю отмечать несколько значений, поставьте галочку здесь." + +#: components/select.inc:41 +msgid "Listbox" +msgstr "Выпадающий список" + +#: components/select.inc:44 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "Чтобы показывать значения в виде выпадающего списка, поставьте галочку здесь" + +#: components/select.inc:219 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "Позволяет создавать поля с галочками, радиокнопки или выпадающий список значений" + +#: components/textarea.inc:32 +msgid "Height" +msgstr "Высота" + +#: components/textarea.inc:34 +msgid "Height of the textfield." +msgstr "Высота текстового поля (в рядах)" + +#: components/textarea.inc:40 +#: components/textfield.inc:42 +msgid "Disabled" +msgstr "Выкл." + +#: components/textarea.inc:42 +#: components/textfield.inc:44 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "Запретить редактирование. Полезно для ввода и показа значения по-умолчанию" + +#: components/textarea.inc:100 +msgid "A large text area that allows for multiple lines of input." +msgstr "Большое текстовое поле, куда можно вводить значения в несколько рядов" + +#: components/textfield.inc:33 +msgid "Maxlength" +msgstr "Максимальная длина" + +#: components/textfield.inc:35 +msgid "Maxlength of the textfield." +msgstr "Максимальная длина поля" + +#: components/textfield.inc:101 +msgid "Basic textfield type." +msgstr "Базовое текстовое поле" + +#: components/time.inc:17 +msgid "Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are all valid." +msgstr "Можно ввести любую дату в любом формате (см. примеры на <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a> ). Можно вводить, например, дату, как \"сегодня\", \"+2 дня\" или \"9 декабря 2004 года\" (всё без кавычек)." + +#: components/time.inc:27 +msgid "Adjust the time according to a specific timezone. Website timezone is defined in the <a href=\"%settings\">Site Settings</a> and is the default." +msgstr "Настройки времени согласно глобальным настройкам часовых поясов сайта. Глобально время для сайта настраивается в <a href=\"%settings\">Настройках сайта</a>." + +#: components/time.inc:41 +msgid "Time Format" +msgstr "Формат времени" + +#: components/time.inc:43 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Формат вывода времени: 24-часовой или 12-часовой" + +#: components/time.inc:88 +msgid "hour" +msgstr "час" + +#: components/time.inc:89 +msgid "minute" +msgstr "минута" + +#: components/time.inc:92 +msgid "am" +msgstr "am" + +#: components/time.inc:92 +msgid "pm" +msgstr "pm" + +#: components/time.inc:135 +msgid " field is required" +msgstr " обябзательное поле" + +#: components/time.inc:193 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "Поля для ввода времени в формате \"часы\" и \"минуты\". Дополнительно можно ввести am/pm значения для времени." + diff --git a/sites/all/modules/webform/translations/sk.po b/sites/all/modules/webform/translations/sk.po new file mode 100644 index 0000000000000000000000000000000000000000..dbb4bc7dba5b551dba4d9bc28eb9794a68d76254 --- /dev/null +++ b/sites/all/modules/webform/translations/sk.po @@ -0,0 +1,2009 @@ +# Slovak translation of webform (6.x-2.4) +# Copyright (c) 2009 by the Slovak translation team +# Generated from files: +# email.inc,v 1.19.2.11 2009/01/11 03:01:48 quicksketch +# textarea.inc,v 1.12.2.9 2009/01/11 03:01:47 quicksketch +# textfield.inc,v 1.12.2.9 2009/01/11 03:01:47 quicksketch +# webform.module,v 1.124.2.85 2009/01/11 07:38:50 quicksketch +# webform_report.inc,v 1.17.2.12 2009/01/10 01:55:02 quicksketch +# webform_components.inc,v 1.9.2.27 2009/01/11 08:08:24 quicksketch +# webform_submissions.inc,v 1.6.2.21 2009/01/10 02:45:23 quicksketch +# webform-confirmation.tpl.php,v 1.1.2.3 2009/01/09 08:31:06 quicksketch +# webform-mail.tpl.php,v 1.1.2.3 2009/01/09 08:31:06 quicksketch +# file.inc,v 1.4.2.28 2009/01/10 01:32:19 quicksketch +# markup.inc,v 1.5.2.7 2009/01/09 08:31:06 quicksketch +# webform_export.inc,v 1.1.4.4 2009/01/09 08:31:06 quicksketch +# webform/webform.info: n/a +# webform.install,v 1.22.2.15 2009/01/09 08:31:06 quicksketch +# date.inc,v 1.15.2.17 2009/01/10 02:12:14 quicksketch +# hidden.inc,v 1.12.2.10 2009/01/09 08:31:06 quicksketch +# select.inc,v 1.22.2.25 2009/01/11 22:58:41 quicksketch +# time.inc,v 1.16.2.9 2009/01/09 08:31:06 quicksketch +# fieldset.inc,v 1.4.2.7 2009/01/09 08:31:06 quicksketch +# grid.inc,v 1.3.2.17 2009/01/11 02:51:47 quicksketch +# pagebreak.inc,v 1.3.2.4 2009/01/09 08:31:06 quicksketch +# +msgid "" +msgstr "" +"Project-Id-Version: webform (6.x-2.4)\n" +"POT-Creation-Date: 2009-01-15 20:52+0100\n" +"PO-Revision-Date: 2009-01-15 20:36+0100\n" +"Language-Team: Slovak\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=((n==1)?(0):(((n>=2)&&(n<=4))?(1):2));\n" + +#: components/email.inc:78; components/textarea.inc:69; components/textfield.inc:91 +msgid "Disabled" +msgstr "Nedostupné" + +#: webform.module:1343 +msgid "Enabled" +msgstr "Povolené" + +#: webform_report.inc:58 +msgid "All" +msgstr "Všetky" + +#: webform_components.inc:135; webform.module:888 +msgid "Type" +msgstr "Typ" + +#: webform_components.inc:198,487; webform_report.inc:138; webform_submissions.inc:105; webform.module:243 +msgid "Delete" +msgstr "Odstrániť" + +#: webform_components.inc:135; webform_report.inc:99; webform.module:2159 +msgid "Operations" +msgstr "Operácie" + +#: webform_components.inc:196; webform_report.inc:137; webform.module:2170,233 +msgid "Edit" +msgstr "Upraviť" + +#: webform_report.inc:285; webform.module:2171,193 +msgid "Clear" +msgstr "Vyčistiť" + +#: webform_report.inc:135; webform.module:2158,223 +msgid "View" +msgstr "Zobraziť" + +#: webform-confirmation.tpl.php:23; webform_report.inc:154 +msgid "Go back to the form" +msgstr "Vrátiť sa na formulár" + +#: webform-mail.tpl.php:26 +msgid "Submitted on @date" +msgstr "Odoslané @date" + +#: webform-mail.tpl.php:29 +msgid "Submitted by user: @username [@ip_address]" +msgstr "Odoslané používateľom: @username [@ip_address]" + +#: webform-mail.tpl.php:31 +msgid "Submitted by anonymous user: [@ip_address]" +msgstr "Odoslané anonymným používateľom: [@ip_address]" + +#: webform-mail.tpl.php:34 +msgid "Submitted values are" +msgstr "Odoslané hodnoty sú" + +#: webform-mail.tpl.php:42 +msgid "The results of this submission may be viewed at:" +msgstr "" +"Výsledky z tohto odoslaného formulára môžete zobraziť na " +"stránke:" + +#: webform_components.inc:44,135,364 +msgid "Weight" +msgstr "Váha" + +#: webform_components.inc:49,135,329 +msgid "Mandatory" +msgstr "Povinné" + +#: webform_components.inc:55,135 +msgid "E-mail" +msgstr "E-mail" + +#: webform_components.inc:97,235,261 +msgid "Add" +msgstr "Pridať" + +#: webform_components.inc:103,397; webform.module:1507,1524,1645 +msgid "Submit" +msgstr "Odoslať" + +#: webform_components.inc:109,255 +msgid "Publish" +msgstr "Publikovať" + +#: webform_components.inc:135; webform.module:887,1343; components/file.inc:553 +msgid "Name" +msgstr "Názov" + +#: webform_components.inc:135; components/markup.inc:39 +msgid "Value" +msgstr "Hodnota" + +#: webform_components.inc:140 +msgid "New component name" +msgstr "Meno pre nový komponent" + +#: webform_components.inc:197 +msgid "Clone" +msgstr "Klonovať" + +#: webform_components.inc:220 +msgid "No Components, add a component below." +msgstr "Nie sú vložené žiadne komponenty, pridajte ich nižšie." + +#: webform_components.inc:236 +msgid "When adding a new component, the name field is required." +msgstr "Ak pridávate nový komponent, musíte zadať meno poľa." + +#: webform_components.inc:258 +msgid "Your webform has been published." +msgstr "Váš webformulár bol publikovaný." + +#: webform_components.inc:266 +msgid "The component positions and mandatory values have been updated." +msgstr "Pozície komponentov a povinné hodnoty boli aktualizované." + +#: webform_components.inc:271 +msgid "Edit component: @name (@type)" +msgstr "Úpava komponentu: @name (@type)" + +#: webform_components.inc:297 +msgid "Label" +msgstr "Popis" + +#: webform_components.inc:298 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "" +"Vysvetľujúce označenie, ktoré sa vo formulári zobrazí nad " +"prvkom." + +#: webform_components.inc:306; webform.module:663,1343 +msgid "Description" +msgstr "Popis" + +#: webform_components.inc:307 +msgid "" +"A short description of the field used as help for the user when he/she " +"uses the form." +msgstr "" +"Krátky popis tohto poľa, ktorý sa použije ako pomôcka pre " +"používateľa, ktorý bude pole vypĺňať." + +#: webform_components.inc:313 +msgid "Advanced settings" +msgstr "Pokročilé nastavenia" + +#: webform_components.inc:322 +msgid "Field Key" +msgstr "Kľúč poľa" + +#: webform_components.inc:323 +msgid "" +"Enter a machine readable key for this form element. May contain only " +"lowercase alphanumeric characters and underscores. This key will be " +"used as the name attribute of the form element. This value has no " +"effect on the way data is saved, but may be helpful if using " +"Additional Processing or Validation code." +msgstr "" +"Zadajte strojovo čitateľný kľúč pre tento prvok formulára. " +"Môže obsahovať iba malé alfanumerické znaky a podčiarkovník. " +"Tento kľúč bude použitý ako meno atribútu tohto prvku. Táto " +"hodnota nemá síce vplyv na spôsob, akým sa dáta uložia, ale " +"môže byť užitočná ak používate dodatočné overenie alebo " +"dodatočné spracovanie kódu." + +#: webform_components.inc:331 +msgid "Check this option if the user must enter a value." +msgstr "Zaškrtnite túto možnosť ak používateľ musí zadať hodnotu." + +#: webform_components.inc:337 +msgid "Include in e-mails" +msgstr "Zahrnúť do emailov" + +#: webform_components.inc:339 +msgid "" +"If checked, submitted values from this component will be included in " +"e-mails." +msgstr "" +"Ak je zaškrtnuté, odoslané hodnoty z tohto komponentu formulára " +"budú zaradené do emailov." + +#: webform_components.inc:345 +msgid "Root" +msgstr "Najvyššia úroveň" + +#: webform_components.inc:353 +msgid "Parent Fieldset" +msgstr "Nadradené zoskupenie polí" + +#: webform_components.inc:355 +msgid "" +"Optional. You may organize your form by placing this component inside " +"another fieldset." +msgstr "" +"Voliteľné. Môžete usporiadať formulár tak, že tento komponent " +"umiestnite do iného zoskupenia polí." + +#: webform_components.inc:366 +msgid "" +"Optional. In the menu, the heavier items will sink and the lighter " +"items will be positioned nearer the top." +msgstr "" +"Voliteľné. V menu sa položky s väčšou váhou prepadnú dole a s " +"menšou váhou sa umiestnia vyššie." + +#: webform_components.inc:378 +msgid "" +"The webform component of type @type does not have an edit function " +"defined." +msgstr "" +"Komponent webformulára typu @type nemá zadefinovanú funkciu pre " +"úpravu." + +#: webform_components.inc:411 +msgid "" +"The field key %field_key is invalid. Please include only lowercase " +"alphanumeric characters and underscores." +msgstr "" +"Kľúč poľa %field_key je neplatný. Prosím použite iba malé " +"písmená, čísla a podčiarkovník." + +#: webform_components.inc:416 +msgid "" +"The field key %field_key is already in use by the field labeled " +"%existing_field. Please use a unique key." +msgstr "" +"Kľúč poľa %field_key je už použitý pri inom poli označenom " +"%existing_field. Prosím zadajte jedinečný kľúč." + +#: webform_components.inc:450 +msgid "Component %name cloned." +msgstr "Komponent %name bol vyklonovaný." + +#: webform_components.inc:454 +msgid "Component %name updated." +msgstr "Komponent %name bol aktualizovaný." + +#: webform_components.inc:458 +msgid "New component %name added." +msgstr "Nový komponent %name bol pridaný." + +#: webform_components.inc:479 +msgid "Delete the %name fieldset?" +msgstr "Odstrániť zoskupenie polí %name?" + +#: webform_components.inc:480 +msgid "" +"This will immediately delete the %name fieldset and all children " +"elements within %name from the %webform webform. This cannot be " +"undone." +msgstr "" +"Tento krok odstráni zoskupenie polí %name a všetky prvky, ktoré " +"sú umiestnené na %name z webformulára %webform. Tento krok sa nedá " +"vrátiť." + +#: webform_components.inc:483 +msgid "Delete the %name component?" +msgstr "Odstrániť komponent %name?" + +#: webform_components.inc:484 +msgid "" +"This will immediately delete the %name component from the %webform " +"webform. This cannot be undone." +msgstr "" +"Tento krok odstráni komponent %name z webformulára %webform. Tento " +"krok sa nedá vrátiť." + +#: webform_components.inc:491 +msgid "Component %name deleted." +msgstr "Komponent %name bol odstránený." + +#: webform_export.inc:21 +msgid "Delimited text" +msgstr "Oddelený text" + +#: webform_export.inc:22 +msgid "A plain text file delimited by commas, tabs, or other characters." +msgstr "" +"Obyčajný textový súbor, v ktorom sú hodnoty oddelené čiarkami, " +"tabulátormi alebo inými hodnotami." + +#: webform_export.inc:26 +msgid "Microsoft Excel" +msgstr "Microsoft Excel" + +#: webform_export.inc:27 +msgid "A file readable by Microsoft Excel." +msgstr "Súbor čitateľný pomocou Microsoft Excelu." + +#: webform_report.inc:28 +msgid "Submissions for %user" +msgstr "Odoslania dát pre %user" + +#: webform_report.inc:71 +msgid "Show !count results per page." +msgstr "Počet výsledkov na jednej stránke !count." + +#: webform_report.inc:74 +msgid "Showing all results." +msgstr "Zobrazenie všetkých výsledkov." + +#: webform_report.inc:77 +msgid "@total results total." +msgstr "Celkový počet vyýsledkov @total." + +#: webform_report.inc:92,187 +msgid "#" +msgstr "#" + +#: webform_report.inc:93,188 +msgid "Submitted" +msgstr "Odoslané" + +#: webform_report.inc:96,189 +msgid "User" +msgstr "Používateľ" + +#: webform_report.inc:97,190,398 +msgid "IP Address" +msgstr "IP adresa" + +#: webform_report.inc:147,248,490 +msgid "" +"There are no submissions for this form. <a href=\"!url\">View this " +"form</a>." +msgstr "" +"Tento formulár ešte nebol vyplnený a odoslaný. <a " +"href=\"!url\">Prezrite si tento formulár</a>." + +#: webform_report.inc:279 +msgid "Clear Form Submissions" +msgstr "Vyčistiť odoslania formulára" + +#: webform_report.inc:283 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "Naozaj chcete odstrániť všetky odoslania tohto formulára?" + +#: webform_report.inc:285; webform_submissions.inc:105 +msgid "Cancel" +msgstr "Zrušiť" + +#: webform_report.inc:293 +msgid "Webform %title entries cleared." +msgstr "Položky webformulára %title boli zmazané." + +#: webform_report.inc:314 +msgid "Export format" +msgstr "Formát exportu" + +#: webform_report.inc:321 +msgid "Delimited text format" +msgstr "Formát oddeleného textu" + +#: webform_report.inc:322; webform.module:1305 +msgid "" +"This is the delimiter used in the CSV/TSV file when downloading " +"Webform results. Using tabs in the export is the most reliable method " +"for preserving non-latin characters. You may want to change this to " +"another character depending on the program with which you anticipate " +"importing results." +msgstr "" +"Toto je oddeľovač použitý v CSV/TSV súbore, pri sťahovaní " +"výsledkov z webformulára. Použitie tabulátora je " +"najspoľahlivejšia metóda, pri ktorej sa zachovajú interpunkčné " +"znaky. Môžete ho však zmeniť na taký oddeľovací znak, aký " +"vyžaduje program, do ktorého chcete výsledky naimportovať." + +#: webform_report.inc:325; webform.module:1308 +msgid "Comma (,)" +msgstr "čiarka (,)" + +#: webform_report.inc:326; webform.module:1309 +msgid "Tab (\\t)" +msgstr "tabulátor (\\t)" + +#: webform_report.inc:327; webform.module:1310 +msgid "Semicolon (;)" +msgstr "bodkočiarka (;)" + +#: webform_report.inc:328; webform.module:1311 +msgid "Colon (:)" +msgstr "dvojbodka (:)" + +#: webform_report.inc:329; webform.module:1312 +msgid "Pipe (|)" +msgstr "zvyslý oddelovač (|)" + +#: webform_report.inc:330; webform.module:1313 +msgid "Period (.)" +msgstr "bodka (.)" + +#: webform_report.inc:331; webform.module:1314 +msgid "Space ( )" +msgstr "medzera ( )" + +#: webform_report.inc:337; webform.module:2169,183 +msgid "Download" +msgstr "Stiahnuť" + +#: webform_report.inc:397 +msgid "Submission Details" +msgstr "Detaily odoslania" + +#: webform_report.inc:398 +msgid "Serial" +msgstr "Sériový" + +#: webform_report.inc:398 +msgid "SID" +msgstr "SID" + +#: webform_report.inc:398 +msgid "Time" +msgstr "Čas" + +#: webform_report.inc:398 +msgid "UID" +msgstr "UID" + +#: webform_report.inc:398 +msgid "Username" +msgstr "Používateľské meno" + +#: webform_report.inc:469 +msgid "Q" +msgstr "Ot." + +#: webform_report.inc:470 +msgid "responses" +msgstr "odpovede" + +#: webform_submissions.inc:98 +msgid "Delete Form Submission" +msgstr "Odstrániť odoslané udaje formulára" + +#: webform_submissions.inc:103 +msgid "Are you sure you want to delete this submission?" +msgstr "Naozaj chcete odstrániť toto odoslanie?" + +#: webform_submissions.inc:110 +msgid "Submission deleted." +msgstr "Odoslanie zmazané." + +#: webform.module:22 +msgid "" +"Webforms are forms and questionnaires. To add one, select <a " +"href=\"!url\">Create content -> Webform</a>." +msgstr "" +"Webformuláre sú formuláre a dotazníky. Ak chcete jeden pridať, " +"označte <a href=\"!url\">Vytvoriť obsah -> Webformulár</a>." + +#: webform.module:25 +msgid "" +"<p>This module lets you create forms or questionnaires and define " +"their content. Submissions from these forms are stored in the database " +"and optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the " +"actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be " +"displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will " +"be sent. If no email address is specified, no e-mail will be sent when " +"submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will " +"be used to populate the return e-mail address on any sent " +"e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that " +"will be used to populate the subject e-mail field on any sent " +"e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown " +"after you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database " +"table <i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" +"<p>Tento modul vám umožňuje vytvárať formuláre alebo dotazníky " +"a definovať ich komponenty. Odoslané dáta z týchto formulárov " +"sú uložené do databázy a voliteľne môžu byť aj odosielané " +"emailom na preddefinovanú adresu.</p>\r\n" +" <p>Postup ako vytvori webformulár:</p>\r\n" +" <ul>\r\n" +" <li>Vhoďte na Vytvoriť obsah a vyberte webformulár</li>\r\n" +" <li>Zadajte popis, ktorý sa má zobraziť v náhľade a nad " +"aktuálnym formulárom.</li>\r\n" +" <li>Zadajte potvrdzujúcu správu alebo URL adresu kde " +"stránky, ktorá sa má zobraziť po úspešnom odoslaní dát z " +"formulára.</li>\r\n" +" <li>Pridajte na formulár jednu alebo viac komponent.</li>\r\n" +" <li>Voliteľne môžete zadať i emailovú adresu, na ktorú sa " +"majú vyplnené dáta odosielať. Ak nie je zadaná emailova adresa, " +"nebudú sa odosielať žiadny email po odoslaní vyplneného " +"formulára.</li>\r\n" +" <li>Voliteľne môžete vybrať komponent email (alebo hidden), " +"z ktorého môžete získať návratové adresy.</li>\r\n" +" <li>Voliteľne môžete vybrať textfield (alebo hidden) do z " +"ktorého môžete získať predmety pre emaily.</li>\r\n" +" </ul>\r\n" +" <p>Pomoc pri pridávaní a konfigurovaní komponentov sa " +"zobrazí po vytvorení vášho prvého komponentu.</p>\r\n" +" <p>Obsahy vyplnených polí formulára sú uložené v " +"databázovej tabuľke <i>webform_submitted_data</i> ako páry " +"kľúčových hodnôt.</p>\n" +" " + +#: webform.module:41 +msgid "" +"A webform can be a questionnaires, contact or request forms. It can be " +"used to let visitors make contact, register for a event or to enable a " +"complex survey." +msgstr "" +"Webformulár môže byť dotazníkom, kontaktným formulárom alebo " +"formulárom na získanie požiadaviek. Môže byť použitý na " +"komplexný prieskum, na to, aby vás návštevníci kontaktovali alebo " +"aby sa zaregistrovali na udalosť." + +#: webform.module:44 +msgid "" +"This page displays all the components currently configured for this " +"webform node. You may add any number of components to the form, even " +"multiple of the same type. To add a new component, fill in a name and " +"select a type from the fields at the bottom of the table. Submit the " +"form to create the new component or update any changed form values." +msgstr "" +"Táto stránka zobrazuje všetky komponenty, ktoré sú vložené do " +"tohto webformulára. Môžete pridať akýkoľvek počet komponentov " +"dokonca aj viacero z toho istého typu. Ak chcete pridať nový " +"komponent, v tabuľke nižšie vyplnte jeho meno a vyberte jeho typ. " +"Aby sa nové komponenty vytvorili, alebo aby sa prejavili zmeny, " +"nezabudnite formulár odoslať." + +#: webform.module:45 +msgid "Click on any existing component's name to edit its settings." +msgstr "Kliknutím na meno existujúcej komponenty upravíte jej nastavenia." + +#: webform.module:74 +msgid "View and edit all the available webforms on your site." +msgstr "" +"Prehliadanie a úprava všetkých webformulárov dostupných na vašej " +"stránke." + +#: webform.module:85 +msgid "Global configuration of webform functionality." +msgstr "Globálne nastavenie funkcionalít webformulára." + +#: webform.module:416,80; webform.info:0 +msgid "Webform" +msgstr "Webformulár" + +#: webform.module:418 +msgid "" +"Create a new form or questionnaire accessible to users. Submission " +"results and statistics are recorded and accessible to privileged " +"users." +msgstr "" +"Vytvorí nový formulár alebo dotazník dostupný pre " +"používateľov. Odoslané odpovede a štatistiky sú zaznamenané a " +"dostupné pre privilegovaných používateľov." + +#: webform.module:604 +msgid "Go to form" +msgstr "Prejsť do formulára" + +#: webform.module:606 +msgid "View this form." +msgstr "Zobraziť formulár." + +#: webform.module:645 +msgid "Webform Settings" +msgstr "Nastavenia webformulára" + +#: webform.module:654,2157 +msgid "Title" +msgstr "Názov" + +#: webform.module:664 +msgid "Text to be shown as teaser and before the form." +msgstr "Text, ktorý sa zobrazí ako náhľad a tiež pred formulárom." + +#: webform.module:673 +msgid "Confirmation message or redirect URL" +msgstr "Potvrdzujúca správa alebo URL adresa pre presmerovanie" + +#: webform.module:674 +msgid "" +"Message to be shown upon successful submission or a path to a redirect " +"page. Redirect pages must start with <em>http://</em> for external " +"sites or <em>internal:</em> for an internal path. i.e. " +"<em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "" +"Správa alebo presmerovaná stránka, ktorá sa zobrazí po úspešnom " +"odoslaní údajov. Adresa presmerovanej stránky sa musí začínať " +"<em>http://</em>, ak ide o externú stránku alebo <em>internal:</em>, " +"ak ide o vnútornú stránku. Napr.: <em>http://www.priklad.sk</em> " +"alebo <em>internal:node/10</em>" + +#: webform.module:686 +msgid "Webform access control" +msgstr "Riadenie prístupu k webformuláru" + +#: webform.module:691 +msgid "" +"These permissions affect which roles can submit this webform. It does " +"not prevent access to the webform page. If needing to prevent access " +"to the webform page entirely, use a content access module such as <a " +"href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> " +"or <a href=\"http://drupal.org/project/node_privacy_byrole\">Node " +"Privacy by Role</a>." +msgstr "" +"Tieto oprávnenia sa vzťahujú na kategórie používateľov, ktoré " +"budú môcť odosielať údaje z tohto webformulára. To im ale " +"nezabráni vstúpiť na stránku s formulárom. Ak potrebujete " +"zabrániť prístupu na stránku s formulárom, použite modul na " +"riadenie prístupu k obsahu ako napríklad <a " +"href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> " +"alebo <a href=\"http://drupal.org/project/node_privacy_byrole\">Node " +"Privacy by Role</a>." + +#: webform.module:698 +msgid "Roles that can submit this webform" +msgstr "" +"Kategórie používateľov, ktoré môžu odosielať tento " +"webformulár" + +#: webform.module:699 +msgid "" +"Uncheck all roles to prevent new submissions. The %authenticated role " +"applies to any user signed into the site, regardless of other assigned " +"roles." +msgstr "" +"Ak chcete zabrániť ďalšiemu odosielaniu údajov, zrušte " +"zaškrtnutie všetkých kategórií. Kategória %authenticated sa " +"aplikuje na každého prihláseného používateľa, aj napriek " +"ostatným označeným kategóriám." + +#: webform.module:706 +msgid "Webform mail settings" +msgstr "Mailové nastavenia webformulára" + +#: webform.module:716 +msgid "E-mail to address" +msgstr "Odmailovať na adresu" + +#: webform.module:718 +msgid "" +"Form submissions will be e-mailed to this address. Leave blank for " +"none. Multiple e-mail addresses may be separated by commas." +msgstr "" +"Odoslané údaje formulárov budú odmailované na túto adresu. " +"Ponechajte pole prázdne ak nechcete zadať nič. Viacero emailových " +"adries môžete oddeliť čiarkami." + +#: webform.module:726 +msgid "Conditional e-mail recipients" +msgstr "Podmienený adresáti emailov" + +#: webform.module:727 +msgid "" +"The settings below allow you to send e-mails to multiple recipients " +"based off the value of a component." +msgstr "" +"Nastavenia nižšie vám dovolia odoslať emaily viacerým adresátom " +"podľa toho, aká je hodnota komponenty." + +#: webform.module:751 +msgid "E-mail from name" +msgstr "Email od" + +#: webform.module:752 +msgid "" +"After adding components to this form any email, select, or hidden form " +"element may be selected as the sender's name for e-mails." +msgstr "" +"Potom, ako pridáte na tento formulár komponenty, ktorýkoľvek, " +"email, výberové pole alebo skryté pole spomedzi prvkov formulára " +"môže byť použité ako meno odosielateľa emailov." + +#: webform.module:756 +msgid "E-mail from address" +msgstr "Email z adresy" + +#: webform.module:757 +msgid "" +"After adding components to this form any textfield, select, or hidden " +"form element may be selected as the sender's e-mail address." +msgstr "" +"Potom, ako pridáte na tento formulár komponenty, ktorýkoľvek, " +"email, výberové pole alebo skryté pole spomedzi prvkov formulára " +"môže byť použité ako adresa odosielateľa emailov." + +#: webform.module:761 +msgid "E-mail subject" +msgstr "Predmet e-mailu" + +#: webform.module:762 +msgid "" +"After adding components to this form any textfield, select, or hidden " +"form element may be selected as the subject for e-mails." +msgstr "" +"Potom, ako pridáte na tento formulár komponenty, ktorýkoľvek, " +"email, výberové pole alebo skryté pole spomedzi prvkov formulára " +"môže byť použité ako predmet emailov." + +#: webform.module:797 +msgid "Webform advanced settings" +msgstr "Rozšírené nastavenia webformulára" + +#: webform.module:805 +msgid "Show complete form in teaser" +msgstr "Zobraziť celý formulár v náhľade" + +#: webform.module:807 +msgid "Display the entire form in the teaser display of this node." +msgstr "Zobrazí celý obsah formulára v náhľade tohto uzla." + +#: webform.module:811 +msgid "" +"Limit the number of submissions a user may send within a specified " +"time period" +msgstr "" +"Obmedzenie počtu odoslaní, ktoré môže používateľ urobiť za " +"určitý čas" + +#: webform.module:816 +msgid "Unlimited" +msgstr "Neobmedzené" + +#: webform.module:830 +msgid "ever" +msgstr "vždy" + +#: webform.module:831 +msgid "every hour" +msgstr "každú hodinu" + +#: webform.module:832 +msgid "every day" +msgstr "každý deň" + +#: webform.module:833 +msgid "every week" +msgstr "každý týždeň" + +#: webform.module:840 +msgid "Submit button text" +msgstr "Text na tlačítku pre odoslanie" + +#: webform.module:842 +msgid "" +"By default the submit button on this form will have the label " +"<em>Submit</em>. Enter a new title here to override the default." +msgstr "" +"Normálne má tlačítko na odoslanie nápis <em>Odoslať</em>. " +"Zadajte sem nové označenie, ktoré nahradí predvolený nápis." + +#: webform.module:847 +msgid "Additional Validation" +msgstr "Dodatočné overenie" + +#: webform.module:848 +msgid "" +"Enter PHP code to perform additional validation for this form. Include " +"the <?php ?> tags. $form and $form_state are available " +"variables. If validation fails, use the form_set_error function to " +"prevent the form from being submitted. Use the same syntax as a " +"_validate function used in the <a " +"href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms " +"API</a>." +msgstr "" +"Zadajte PHP kód, ktorý má vykonať dodatočnú kontrolu tohto " +"formulára. Zapíšte i značky <?php ?>. použiť môžete " +"premenné $form_id a $form_values. Ak overenie zlyhá, použite " +"funkciu form_set_error aby ste zabránili odoslaniu formulára. " +"Použite rovnakú syntax ako pri funkcii _validate použitú vo <a " +"href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms " +"API</a>." + +#: webform.module:856 +msgid "Additional Processing" +msgstr "Dodatočné spracovanie" + +#: webform.module:857 +msgid "" +"Enter PHP code to perform additional processing for this form (after " +"the validation). Include the <?php ?> tags. $form and " +"$form_state are available variables, use the same syntax as a _submit " +"function used in the <a " +"href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms " +"API</a>." +msgstr "" +"Zadajte PHP kód, ktorý má vykonať dodatočné spracovanie tohto " +"formulára. Zapíšte i značky <?php ?>. použiť môžete " +"premenné $form_id a $form_values. Použite rovnakú syntax ako pri " +"funkcii _submit použitú vo <a " +"href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms " +"API</a>." + +#: webform.module:886 +msgid "To" +msgstr "Komu" + +#: webform.module:901 +msgid "No components yet in this webform." +msgstr "Žiadne komponenty ešte nie sú v tomto webformulári." + +#: webform.module:916 +msgid "Custom" +msgstr "Vlastná" + +#: webform.module:916 +msgid "Component" +msgstr "Komponent" + +#: webform.module:927 +msgid "Default" +msgstr "Predvolené" + +#: webform.module:948 +msgid "Limit to !count submission(s) !timespan" +msgstr "Obmedziť !count odoslania !timespan" + +#: webform.module:961,968 +msgid "The entered email address %address is not a valid address." +msgstr "Zadaná emailová adresa %address nie je platnou adresou." + +#: webform.module:1042 +msgid "" +"The new webform %title has been created. Add new fields to your " +"webform with the form below." +msgstr "" +"Nový weformulár %title bol vytvorený. Pridajte do neho nové polia " +"z ponuky nižšie." + +#: webform.module:1045 +msgid "" +"This webform is currently unpublished. After finishing your changes to " +"the webform, use the <em>Publish</em> button below." +msgstr "" +"Tento webformulár teraz nie je publikovaný. Po skončení " +"upravovania webformulára, použite tlačidlo <em>Publikovať</em>." + +#: webform.module:1176 +msgid "Submissions for this form are closed." +msgstr "Možnosť odosielať tento formulár bola ukončená." + +#: webform.module:1180 +msgid "" +"You must <a href=\"!login\">login</a> or <a " +"href=\"!register\">register</a> to view this form." +msgstr "" +"AK chcete zobraziť tento formulár, musíte sa <a " +"href=\"!login\">prihlásiť</a> alebo <a " +"href=\"!register\">zaregistrovať</a>." + +#: webform.module:1184 +msgid "You do not have permission to view this form." +msgstr "Nemáte oprávnenie pre zobrazenie tohto formulára." + +#: webform.module:1191 +msgid "You have submitted this form the maximum number of times (@count)." +msgstr "Už ste tento formulár odoslali maximálny počet krát (@count)." + +#: webform.module:1194,1205 +msgid "You have already submitted this form." +msgstr "Teto formulár ste už vyplnili a odoslali." + +#: webform.module:1197 +msgid "You may not submit another entry at this time." +msgstr "Teraz nemôžete odoslať inú hodnotu." + +#: webform.module:1205,1208 +msgid "<a href=\"!url\">View your previous submissions</a>." +msgstr "<a href=\"!url\">Zobraziť vaše predcházajúce odoslania</a>." + +#: webform.module:1234 +msgid "Available components" +msgstr "Dostupné komponenty" + +#: webform.module:1237 +msgid "" +"These are the available field types for your installation of Webform. " +"You may disable any of these components by unchecking its " +"corresponding box. Only checked components will be available in " +"existing or new webforms." +msgstr "" +"Toto sú dostupné typy polí vo vašej inštalácií Webform. " +"Ktorýkoľvek z týchto komponentov môžete vypnúť zrušením " +"zaškrtnutia prislúchajúceho políčka. V existujúcich a nových " +"webformulároch budú dostupné iba zaškrtnuté komponenty." + +#: webform.module:1254 +msgid "Default e-mail values" +msgstr "Predvolené emailové hodnoty" + +#: webform.module:1261 +msgid "From address" +msgstr "Adresa odosielateľa" + +#: webform.module:1263 +msgid "" +"The default sender address for emailed webform results; often the " +"e-mail address of the maintainer of your forms." +msgstr "" +"Predvolená adresa odosielateľa pre odoslané dáta z webformulára; " +"často je to adresa tvorcu webformulára." + +#: webform.module:1268 +msgid "From name" +msgstr "Meno odosielateľa" + +#: webform.module:1270 +msgid "" +"The default sender name which is used along with the default from " +"address." +msgstr "" +"Predvolené meno odosielateľa bude použité spolu s adresou " +"odosielateľa." + +#: webform.module:1275 +msgid "Default subject" +msgstr "Predvolený predmet" + +#: webform.module:1276,2208 +msgid "Form submission from: %title" +msgstr "Vyplnený formulár z: %title" + +#: webform.module:1277 +msgid "The default subject line of any e-mailed results." +msgstr "Predvolený predmet hociktorých odoslaných výsledkov." + +#: webform.module:1282 +msgid "Advanced options" +msgstr "Pokročilé nastavenia" + +#: webform.module:1290 +msgid "Allow cookies for tracking submissions" +msgstr "Zapne sledovanie odosielania pomocou cookies" + +#: webform.module:1292 +msgid "" +"<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can " +"be used to help prevent the same user from repeatedly submitting a " +"webform. This feature is not needed for limiting submissions per user, " +"though it can increase accuracy in some situations. Besides cookies, " +"Webform also uses IP addresses and site usernames to prevent repeated " +"submissions." +msgstr "" +"<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> " +"môžu byť použité na to, aby ten istý používateľ neodoslal " +"webformulár viackrát. Táto funkcionalita nie je povinná, pretože " +"v niektorých prípadoch sa viacnásobným odoslaním môže zvýšiť " +"presnosť. Okrem cookies, Webformormulár tiež používa IP adresy a " +"mená používateľov, aby zabránil viacnásobnému odoslaniu." + +#: webform.module:1297 +msgid "Default export format" +msgstr "Základný formát exportu" + +#: webform.module:1304 +msgid "Default export delimiter" +msgstr "Základný oddelovací znak v exporte" + +#: webform.module:1320 +msgid "Webforms debug" +msgstr "Ladenie webformulárov" + +#: webform.module:1322 +msgid "Off" +msgstr "Vypnúť" + +#: webform.module:1322 +msgid "Log submissions" +msgstr "Zaznamenať odoslania" + +#: webform.module:1322 +msgid "Full debug" +msgstr "Podrobné ladenie" + +#: webform.module:1323 +msgid "" +"Set to \"Log submissions\" to log all submissions in the watchdog. Set " +"to \"Full debug\" to print debug info on submission." +msgstr "" +"Nastavte \"Zaznamenať odoslania\", ak chcete zaznamenať všetky " +"odoslania pomocou Watchdogu. Nastavte \"Podrobné ladenie\", ak chcete " +"vypísať ladiace informácie o každom odoslaní." + +#: webform.module:1382 +msgid "Submission #@sid" +msgstr "Odoslanie #@sid" + +#: webform.module:1402 +msgid "Previous submission" +msgstr "Predchádzajúce odoslanie" + +#: webform.module:1405 +msgid "Next submission" +msgstr "Nasledujúce odoslanie" + +#: webform.module:1409 +msgid "Submission Information" +msgstr "Informácie o odoslaní" + +#: webform.module:1418 +msgid "Form: !form" +msgstr "Formulár: !form" + +#: webform.module:1421 +msgid "Submitted by !name" +msgstr "Odoslané !name" + +#: webform.module:1466 +msgid "Next Page >" +msgstr "nasledujúca stránka >" + +#: webform.module:1467 +msgid "< Previous Page" +msgstr "< predchádzajúca stránka" + +#: webform.module:1607 +msgid "The webform component @type is not able to be displayed" +msgstr "Komponent webformulára @type nie je možné zobraziť." + +#: webform.module:1816 +msgid "Illegal information. Data not submitted." +msgstr "Ilegálna informácia. Dáta nebudú odoslané." + +#: webform.module:1854 +msgid "Submission posted to %title. <a href=\"!url\">Results</a>. !details" +msgstr "" +"Odoslania dát poslané do %title. <a href=\"!url\">Výsledky</a>. " +"!details" + +#: webform.module:1859 +msgid "Submission updated." +msgstr "Odoslané dáta boli aktualizované." + +#: webform.module:1948 +msgid "Thank you, your submission has been received." +msgstr "Ďakujeme, vaše odoslanie údajov bolo prijaté." + +#: webform.module:2166,153,205 +msgid "Submissions" +msgstr "Odoslania" + +#: webform.module:2167,163 +msgid "Analysis" +msgstr "Analýzy" + +#: webform.module:2168,173 +msgid "Table" +msgstr "Tabuľka" + +#: webform.module:2220,2221,2222,2223,2224,2227 +msgid "key" +msgstr "kľúč" + +#: webform.module:2231 +msgid "" +"You may use special tokens in this field that will be replaced with " +"dynamic values." +msgstr "" +"V tomto poli môžete použiť špeciálne tokeny, ktoré budú " +"nahradené dynamickými hodnotami." + +#: webform.module:2233 +msgid "" +"You can use %server[key] to add any of the special PHP <a " +"href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> " +"variables, %session[key] to add any of the special PHP <a " +"href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> " +"variables and %get[key] to create prefilled forms from the <a " +"href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. " +"%cookie, %request and %post also work with their respective PHP " +"variables. For example %server[HTTP_USER_AGENT], %session[id], or " +"%get[q]." +msgstr "" +"Ak chcete pridať špeciálne PHP premenné <a " +"href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> " +"môžete použiť %server[kľúč] . Ak chcete pridať špeciálne PHP " +"premenné <a " +"href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> " +"použite %session[kľúč]. Ak chcete vytvoriť predvyplnené " +"formuláre z <a " +"href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a> " +"použite %get[kľúč]. Tokeny %cookie, %request a %post tiež " +"pracujú s ich príslušnými PHP premennými. Napríklad " +"%server[HTTP_USER_AGENT], %session[id] alebo %get[q]." + +#: webform.module:2235 +msgid "" +"If you are using the profiles module, you can also access all profile " +"data using the syntax %profile[form_name]. If you for example have a " +"profile value named profile_city, add the variable " +"%profile[profile_city]." +msgstr "" +"Ak používate modul Profiles, môžete tiež pristupovať ku " +"všetkým dätam profilu použití syntaxe %profile[meno_formulara]. " +"Ak máte napríklad hodnotu s názvom profil_mesto, pridajte premennú " +"%profile[profil_mesto]." + +#: webform.module:2239 +msgid "Token values" +msgstr "Hodnoty tokenov" + +#: webform.module:323 +msgid "create webforms" +msgstr "vytvárať webformuláre" + +#: webform.module:323 +msgid "edit own webforms" +msgstr "upraviť vlastné webformuláre" + +#: webform.module:323 +msgid "edit webforms" +msgstr "upravovať webformuláre" + +#: webform.module:323 +msgid "access webform results" +msgstr "prístup k odoslaným údajom" + +#: webform.module:323 +msgid "clear webform results" +msgstr "vymazať odoslané údaje" + +#: webform.module:323 +msgid "access own webform submissions" +msgstr "prístup k vlastným odoslaným údajom" + +#: webform.module:323 +msgid "edit own webform submissions" +msgstr "upraviť vlastné odoslané údaje" + +#: webform.module:323 +msgid "edit webform submissions" +msgstr "upraviť odoslané údaje" + +#: webform.module:323 +msgid "use PHP for additional processing" +msgstr "použiť PHP pre dodatočné spracovanie" + +#: webform.module:70 +msgid "Webforms" +msgstr "Webformuláre" + +#: webform.module:91 +msgid "Webform confirmation" +msgstr "Potvrdenie webformulára" + +#: webform.module:100 +msgid "Configuration" +msgstr "Konfigurácia" + +#: webform.module:108 +msgid "Form components" +msgstr "Komponenty formulára" + +#: webform.module:143 +msgid "Results" +msgstr "Výsledky" + +#: webform.module:214 +msgid "Webform submission" +msgstr "Odoslanie webformulára" + +#: webform.module:0 +msgid "webform" +msgstr "webformulár" + +#: webform.install:16 +msgid "Table for storing additional properties for webform nodes." +msgstr "" +"Tabuľka pre ukladanie dodatočných vlastností webformulárových " +"uzlov." + +#: webform.install:19,97,203,238 +msgid "The node identifier of a webform" +msgstr "Identifikátor uzla webformulára" + +#: webform.install:25 +msgid "" +"The confirmation message or URL displayed to the user after submitting " +"a form." +msgstr "" +"Potvrdzujúca správa alebo URL adresa stránky, ktorá sa zobrazí " +"používateľovi po odoslaní formulára." + +#: webform.install:30 +msgid "" +"Boolean value for whether the entire form should be displayed on the " +"teaser." +msgstr "" +"Logická hodnota pre to, či má byť celý obsah formulára " +"zobrazený v náhľade." + +#: webform.install:37 +msgid "The title of the submit button on the form." +msgstr "Nápis na tlačidle pre odoslanie formulára." + +#: webform.install:43 +msgid "" +"The number of submissions a single user is allowed to submit within an " +"interval. -1 is unlimited." +msgstr "" +"Počet odoslaní jedného formulára z intervalu, ktoré môže " +"používateľ vykonať. -1 znamená neobmedzene." + +#: webform.install:50 +msgid "" +"The amount of time in seconds that must pass before a user can submit " +"another submission within the set limit." +msgstr "" +"Časové obdobie v sekundách podľa nastaveného limitu, ktoré musí " +"uplynúť pred tým, ako používateľ môže znova odoslať " +"formulár." + +#: webform.install:56 +msgid "The primary e-mail address for receiving submission results." +msgstr "Primárna emailová adresa pre prijímanie výsledkov dát." + +#: webform.install:62 +msgid "The name of the sender in sent submission e-mails." +msgstr "Meno odosielateľa v odosielaných emailoch s vyplnenými formulármi." + +#: webform.install:68 +msgid "The address of the sender in sent submission e-mails." +msgstr "" +"Adresa odosielateľa v odosielaných emailoch s vyplnenými " +"formulármi." + +#: webform.install:74 +msgid "The subject of sent submission e-mails" +msgstr "Predmet odosielaných emailov s vyplnenými formulármi" + +#: webform.install:80 +msgid "PHP code for additional functionality when validating a form." +msgstr "PHP kód pre dodatočné funkcie pri overovaní formulárov." + +#: webform.install:85 +msgid "PHP code for additional functionality when submitting a form." +msgstr "PHP kód pre dodatočné funkcie pri odosielaní formulárov." + +#: webform.install:94 +msgid "Stores information about components for webform nodes." +msgstr "Uchováva informácie o komponentoch pre uzly webformulára." + +#: webform.install:104,252 +msgid "" +"The identifier for this component within this node, starts at 0 for " +"each node." +msgstr "" +"Identifikátor pre tento komponent vrámci tohto uzla, začína 0 pre " +"každý uzol." + +#: webform.install:112 +msgid "If this component has a parent fieldset, the cid of that component." +msgstr "" +"cid tohto komponentu, ak je tento komponent rodičovským zoskupením " +"polí." + +#: webform.install:120 +msgid "" +"When the form is displayed and processed, this key can be used to " +"reference the results." +msgstr "" +"Pri zobrazení a spracovaní formulára môže byť tento kľúč " +"použitý na odkázanie sa na výsledky." + +#: webform.install:126 +msgid "The label for this component." +msgstr "Označenie pre tento komponent." + +#: webform.install:132 +msgid "The field type of this component (textfield, select, hidden, etc.)." +msgstr "Typ poľa tohto komponentu (textfield, select, hidden, atď.)." + +#: webform.install:138 +msgid "The default value of the component when displayed to the end-user." +msgstr "" +"Predvolená hodnota komponenty pri zobrazovaní koncovému " +"používateľovi." + +#: webform.install:143 +msgid "" +"Additional information unique to the display or processing of this " +"component." +msgstr "" +"Dodatočné informácie, jedinečné pri zobrazení a spracovaní " +"tohto komponentu." + +#: webform.install:148 +msgid "Boolean flag for if this component is required." +msgstr "Logický príznak toho, či je hodnota pre tento komponent povinná." + +#: webform.install:155 +msgid "" +"Boolean flag for if submitted values for this component will be " +"included in sent e-mails." +msgstr "" +"Logický príznak toho, či bude odoslaná hodnota tohto komponentu " +"odoslaná emailom" + +#: webform.install:162 +msgid "Determines the position of this component in the form." +msgstr "Určuje pozíciu komponentu na formulári." + +#: webform.install:173,870 +msgid "" +"Holds access information regarding which roles are allowed to submit " +"which webform nodes. Does not prevent access to the webform node " +"entirely, use the {node_access} table for that purpose." +msgstr "" +"Použitím tabuľky {node_access} uchováva informácie o prístupe " +"týkajúcich sa toho, ktoré kategórie používateľov, majú " +"povolené odosielať dáta z jednotlivých uzlov webformulárov." + +#: webform.install:176,873 +msgid "The node identifier of a webform." +msgstr "Identifikátor uzla webformulára." + +#: webform.install:183,880 +msgid "The role identifier." +msgstr "Identifikátor kategórie používateľov." + +#: webform.install:194 +msgid "Holds general information about submissions outside of field values." +msgstr "" +"Uchováva základné informácie o odoslaniach mimo dovolený rozsah " +"hodnôt polí." + +#: webform.install:197,245 +msgid "The unique identifier for this submission." +msgstr "Jedinečný identifikátor pre toto odoslanie." + +#: webform.install:210 +msgid "The id of the user that completed this submission." +msgstr "ID používateľa, ktorý dokončil toto odoslanie." + +#: webform.install:217 +msgid "Timestamp of when the form was submitted." +msgstr "Časová pečiatka kedy bol formulár odoslaný." + +#: webform.install:223 +msgid "The IP address of the user that submitted the form." +msgstr "IP adresa používateľa, ktorý odoslal formulár." + +#: webform.install:235 +msgid "Stores all submitted field data for webform submissions." +msgstr "Uchováva všetky odoslané dáta polí z vyplneného formulára." + +#: webform.install:260 +msgid "" +"Usually this value is 0, but if a field has multiple values (such as a " +"time or date), it may require multiple rows in the database." +msgstr "" +"Zvyčajne je táto hodnota 0, ale ak má pole viacero hodnôt (ako " +"napríklad čas alebo dátum), môže vyžadovať viacero riadkov v " +"databáze." + +#: webform.install:268 +msgid "" +"The submitted value of this field, may be serialized for some " +"components." +msgstr "" +"Odoslané hodnoty z tohto poľa môžu byť prepojené s ďalšími " +"komponentami." + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "Umožňuje vytváranie formulárov a dotazníkov." + +#: components/date.inc:44; components/email.inc:43; components/hidden.inc:38; components/select.inc:54; components/textarea.inc:44; components/textfield.inc:46; components/time.inc:41 +msgid "Default value" +msgstr "Predvolená hodnota" + +#: components/date.inc:46; components/email.inc:45; components/hidden.inc:40; components/textarea.inc:46; components/textfield.inc:48; components/time.inc:43 +msgid "The default value of the field." +msgstr "Predvolená hodnota poľa." + +#: components/date.inc:46 +msgid "" +"Accepts any date in any <a " +"href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU " +"Date Input Format</a>. Strings such as today, +2 months, and Dec 9 " +"2004 are all valid." +msgstr "" +"Akceptuje ktorýkoľvek formát zo <a " +"href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">vstupných " +"dátumových formátov GNU</a>. Reťazce ako today, +2 months a Dec 9 " +"2004 sú tiež platné." + +#: components/date.inc:53; components/time.inc:51 +msgid "Timezone" +msgstr "Časové pásmo" + +#: components/date.inc:55 +msgid "" +"Adjust the date according to a specific timezone. Website timezone is " +"defined in the <a href=\"!settings\">Site Settings</a> and is the " +"default." +msgstr "" +"Prispôsobí dátum podľa časového pásma. Časové pásmo webu je " +"definované na stránke <a href=\"!settings\">Nastavenia webu</a> a je " +"predvolené." + +#: components/date.inc:56 +msgid "Website timezone" +msgstr "Časové pásmo webu" + +#: components/date.inc:56 +msgid "User timezone" +msgstr "Časové pásmo používateľa" + +#: components/date.inc:56 +msgid "GMT" +msgstr "GMT" + +#: components/date.inc:61; components/time.inc:59 +msgid "Observe Daylight Savings" +msgstr "Zohľadniť letný čas" + +#: components/date.inc:64; components/time.inc:62 +msgid "Automatically adjust the time during daylight savings." +msgstr "Automaticky prispôsobí čas počas letného obdobia." + +#: components/date.inc:70 +msgid "Start year" +msgstr "Prvý rok" + +#: components/date.inc:72 +msgid "The first year that is allowed to be entered." +msgstr "Prvý rok, ktorý sa môže zadať" + +#: components/date.inc:79 +msgid "End year" +msgstr "Posledný rok" + +#: components/date.inc:81 +msgid "The last year that is allowed to be entered." +msgstr "Posledný rok, ktorý sa môže zadať." + +#: components/date.inc:88 +msgid "Use a textfield for year" +msgstr "Pre rok použiť textové pole" + +#: components/date.inc:90 +msgid "" +"If checked, the generated date field will use a textfield for the " +"year. Otherwise it will use a select list." +msgstr "" +"Ak je zaškrtnuté, na zadávanie sa použije textové pole, v " +"opačnom prípade sa použije výberové pole." + +#: components/date.inc:184 +msgid "Month" +msgstr "Mesiac" + +#: components/date.inc:187 +msgid "Day" +msgstr "Deň" + +#: components/date.inc:190,206 +msgid "Year" +msgstr "Rok" + +#: components/date.inc:223 +msgid "!name field is required." +msgstr "Pole !name je povinné." + +#: components/date.inc:230 +msgid "Entered !name is not a valid date." +msgstr "!name nie je správny dátum." + +#: components/date.inc:237 +msgid "The entered date needs to be between the years @start and @end." +msgstr "Zadaný dátum musí byť medzi rokmi @start a @end." + +#: components/date.inc:312 +msgid "Presents month, day, and year fields." +msgstr "Predstavuje polia deň, mesiac a rok." + +#: components/date.inc:383; components/email.inc:211; components/file.inc:508; components/textarea.inc:170; components/textfield.inc:228; components/time.inc:318 +msgid "Left Blank" +msgstr "Nevyplnených" + +#: components/date.inc:384; components/email.inc:212; components/textarea.inc:171; components/textfield.inc:229; components/time.inc:319 +msgid "User entered value" +msgstr "Pužívateľmi zadaných hodnôt" + +#: components/email.inc:54 +msgid "User email as default" +msgstr "Predvyplniť emailom používateľa" + +#: components/email.inc:56 +msgid "" +"Set the default value of this field to the user email, if he/she is " +"logged in." +msgstr "Vyplní toto pole používateľovým emailom, ak je prihlásený." + +#: components/email.inc:63; components/file.inc:127; components/textarea.inc:53; components/textfield.inc:55 +msgid "Width" +msgstr "Šírka" + +#: components/email.inc:65; components/textarea.inc:55; components/textfield.inc:57 +msgid "Width of the textfield." +msgstr "Šírka textového poľa." + +#: components/email.inc:65; components/file.inc:129; components/textarea.inc:55,63; components/textfield.inc:57 +msgid "Leaving blank will use the default size." +msgstr "Ak necháte pole prázdne, použije sa predvolený rozmer." + +#: components/email.inc:71; components/hidden.inc:51; components/select.inc:77 +msgid "E-mail a submission copy" +msgstr "Odmailovať kópiu formulára" + +#: components/email.inc:74; components/hidden.inc:54; components/select.inc:80 +msgid "" +"Check this option if this component contains an e-mail address that " +"should get a copy of the submission. Emails are sent individually so " +"other emails will not be shown to the recipient." +msgstr "" +"Zaškrtnite túto voľbu ak tento komponent bude obsahovať emailovú " +"adresu, na ktorú sa má odoslať kópia vyplneného formulára. " +"Emaily sú odosielané jednotlivo, preto ostatné emaily nebudú " +"adresátovi zobrazené." + +#: components/email.inc:80; components/textarea.inc:71; components/textfield.inc:93 +msgid "" +"Make this field non-editable. Useful for setting an unchangeable " +"default value." +msgstr "" +"Urobí toto pole needitovateľným. To je užitočné ak chcete " +"nastaviť nezmeniteľnú predvolenú hodnotu." + +#: components/email.inc:145 +msgid "%value is not a valid email address." +msgstr "%value nie je platná e-mailová adresa." + +#: components/email.inc:178 +msgid "A textfield that automatically fills in a logged-in user's e-mail." +msgstr "" +"Textové pole, ktoré sa automaticky vyplní emailom prihláseného " +"používateľa." + +#: components/email.inc:213; components/hidden.inc:148; components/textarea.inc:172; components/textfield.inc:230 +msgid "Average submission length in words (ex blanks)" +msgstr "Priemerná dĺžka odoslaných údajov v slovách (okrem prázdnych)" + +#: components/fieldset.inc:39 +msgid "Collapsible" +msgstr "Zbaliteľné" + +#: components/fieldset.inc:41 +msgid "" +"If this fieldset is collapsible, the user may open or close the " +"fieldset." +msgstr "" +"Ak je toto zoskupenie polí označené ako zbaliteľné, používateľ " +"bude môcť zoskupenie roztvoriť a zatvoriť." + +#: components/fieldset.inc:46 +msgid "Collapsed by Default" +msgstr "Predvolene nechať zbalené" + +#: components/fieldset.inc:48 +msgid "" +"Collapsible fieldsets are \"open\" by default. Select this option to " +"default the fieldset to \"closed.\"" +msgstr "" +"Zbaliteľné zoskupenia polí sú na začiatku roztvorené. " +"Zaškrtnite toto pole ak chcete aby bolo v počiatočnom stave " +"zatvorené." + +#: components/fieldset.inc:100 +msgid "Fieldsets allow you to organize multiple fields into groups." +msgstr "Zoskupenie polí umožňuje zoskupiť viaceré polia do skupín." + +#: components/file.inc:49 +msgid "Upload Filtering" +msgstr "Filtrovanie nahrávania" + +#: components/file.inc:50 +msgid "Select the types of uploads you would like to allow." +msgstr "Vyberte typy súborov, ktoré chcete dovoliť nahrávať." + +#: components/file.inc:60 +msgid "Web Images" +msgstr "Webové obrázky" + +#: components/file.inc:68 +msgid "Desktop Images" +msgstr "Desktopové obrázky" + +#: components/file.inc:76 +msgid "Documents" +msgstr "Dokumenty" + +#: components/file.inc:84 +msgid "Media" +msgstr "Médiá" + +#: components/file.inc:92 +msgid "Archives" +msgstr "Archívy" + +#: components/file.inc:99 +msgid "Additional Extensions" +msgstr "Ďalšie prípony" + +#: components/file.inc:101 +msgid "" +"Enter a list of additional file extensions for this upload field, " +"seperated by commas.<br /> Entered extensions will be appended to " +"checked items above." +msgstr "" +"Zadajte zoznam ďalších typov súborov oddelených čiarkami. <br /> " +"Zadané prípony budú pridané k zaškrtnutým položkám vyššie." + +#: components/file.inc:109 +msgid "Max Upload Size" +msgstr "Maximálna veľkosť" + +#: components/file.inc:111 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "" +"Zadajte maximálnu možnú veľkosť súboru, ktorý môže " +"používateľ nahrať (v kB)." + +#: components/file.inc:118 +msgid "Upload Directory" +msgstr "Priečinok pre nahrané súbory" + +#: components/file.inc:120 +msgid "" +"Webform uploads are always saved in the site files directory. You may " +"optionally specify a subfolder to store your files." +msgstr "" +"Nahrávky do webformulára sa vždy ukladajú do webového priečinka " +"files. Voliteľne môžete určiť podpriečinok pre ukladanie " +"súborov z tohto poľa." + +#: components/file.inc:129 +msgid "Width of the file field." +msgstr "Šírka súborového poľa." + +#: components/file.inc:144 +msgid "" +"The save directory %directory could not be created. Check that the " +"webform files directory is writtable." +msgstr "" +"Priečinok pre ukladanie %directory sa nedá vytvoriť. Overte či má " +"priečinok webform v priečinku files nastavené právo na zápis." + +#: components/file.inc:247 +msgid "Category" +msgstr "Kategória" + +#: components/file.inc:247 +msgid "Types" +msgstr "Typy" + +#: components/file.inc:306; components/time.inc:171 +msgid "%field field is required." +msgstr "Pole %field je povinné." + +#: components/file.inc:337 +msgid "" +"Files with the '%ext' extension are not allowed, please upload a file " +"with a %exts extension." +msgstr "" +"Súbory s príponou '%ext' nie sú dovolené, môžete nahrať súbory " +"s príponami %exts." + +#: components/file.inc:342 +msgid "" +"The file '%filename' is too large (%filesize KB). Please upload a file " +"%maxsize KB or smaller." +msgstr "" +"Súbor '%filename' je príliš veľký (%filesize KB). Môžete " +"nahrať súbor s veľkosťou %maxsize KB alebo menší." + +#: components/file.inc:363 +msgid "" +"The uploaded file %filename was unable to be saved. The destination " +"directory may not be writable." +msgstr "" +"Nahrávaný súbor %filename sa nedá uložiť. Do cieľového " +"priečinka sa asi nedá zapisovať." + +#: components/file.inc:374 +msgid "" +"The uploaded file was unable to be saved. The destination directory " +"does not exist." +msgstr "" +"Nahrávaný súbor sa nepodarilo uložiť. Cieľový priečinok " +"neexistuje." + +#: components/file.inc:425 +msgid "Uploading a new file will replace the current file." +msgstr "Nahranie nového súboru s prepísaním starého." + +#: components/file.inc:460 +msgid "Allow users to submit files of the configured types." +msgstr "Umožňuje používateľom posielať súbory zadefinovaných typov." + +#: components/file.inc:509 +msgid "User uploaded file" +msgstr "Pužívateľmi nahraných súborov" + +#: components/file.inc:510 +msgid "Average uploaded file size" +msgstr "Priemerná veľkosť nahratých súborov" + +#: components/file.inc:553 +msgid "Filesize (KB)" +msgstr "Veľkosť súboru (KB)" + +#: components/grid.inc:42; components/select.inc:44 +msgid "Options" +msgstr "Nastavenia" + +#: components/grid.inc:44 +msgid "" +"Options to select across the top. One option per line. Key-value pairs " +"may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "" +"Možnosti zobrazené hore. Zadajte každú možnosť do nového " +"riadka. Páry kľúčových hodnôt je možné zadať pomocou " +"zvislého oddeľovača. Napr.: safe_key|nejaká možnosť" + +#: components/grid.inc:52 +msgid "Questions" +msgstr "Otázky" + +#: components/grid.inc:54 +msgid "Questions list down the left side. One question per line." +msgstr "Otázky zobrazené vľavo. Zadajte každú otázku na nový riadok." + +#: components/grid.inc:62 +msgid "Randomize Options" +msgstr "Premiešať možnosti" + +#: components/grid.inc:64 +msgid "" +"Randomizes the order of options on the top when they are displayed in " +"the form." +msgstr "Premieša poradie možností v hornej časti zobrazenej mriežky" + +#: components/grid.inc:68 +msgid "Randomize Questions" +msgstr "Premiešať otázky" + +#: components/grid.inc:70 +msgid "" +"Randomize the order of the questions on the side when they are " +"displayed in the form." +msgstr "Premieša poradie otázok v ľavej časti zobrazenej mriežky" + +#: components/grid.inc:227 +msgid "Allows creation of grid questions, denoted by radio buttons." +msgstr "" +"Umožňuje vytvoriť mriežku otázok, v ktorej sa odpoveď vyberá " +"pomocou prepínacích tlačidiel." + +#: components/hidden.inc:99 +msgid "@name (hidden)" +msgstr "@name (skryté)" + +#: components/hidden.inc:113 +msgid "" +"A field which is not visible to the user, but is recorded with the " +"submission." +msgstr "Pole, ktoré nie je viditeľné pre používateľa, ale je nahrané." + +#: components/hidden.inc:146 +msgid "Empty" +msgstr "Prázdnych" + +#: components/hidden.inc:147 +msgid "Non-empty" +msgstr "Neprázdnych" + +#: components/markup.inc:41 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "Umožňuje zadať vlastný HTML kód alebo PHP logiku do formulára." + +#: components/markup.inc:63 +msgid "Preview" +msgstr "Náhľad" + +#: components/markup.inc:103 +msgid "Displays text as HTML in the form; does not render a field." +msgstr "Zobrazí text ako HTML na formulári; nevytvára pole." + +#: components/pagebreak.inc:32 +msgid "" +"Use caution when combining the pagebreak and file components. File " +"components will not be submitted unless they are after the last " +"pagebreak in the form." +msgstr "" +"Varovanie: pri kombinovaní zalomenia strany s komponentom na " +"nahrávanie súborov, súbor nebude odoslaný ak sa nenachádza " +"komponenta pre nahrávanie súboru nenachádza až za posledným " +"zalomením strany." + +#: components/pagebreak.inc:59 +msgid "Break up a multi-page form." +msgstr "Zalomí viacstránkový formulár." + +#: components/select.inc:46 +msgid "" +"A list of selectable options. One option per line. Key-value pairs may " +"be entered seperated by pipes, such as \"safe_key|Some readable " +"option\". Option groups for lists and menus may be specified with " +"<Group Name>. <> can be used to insert items at the root " +"of the menu after specifying a group." +msgstr "" +"Zoznam vyberateľných možností. Zadajte každú možnosť na nový " +"riadok. Páry kľúčov môžu byť zadané pomocou zvislého " +"oddeľovača ako napr.: \"safe_key|Nejaká možnosť\". Zoskupenie " +"možností pre zoznamy a menu môže byť špecifikované pomocou " +"<Meno zoskupenia>. <> môže byť použité pre " +"najvyššiu úroveň menu po zadefinovaní zoskupení." + +#: components/select.inc:56 +msgid "" +"The default value of the field. For multiple selects use commas to " +"separate multiple defaults." +msgstr "" +"Predvolená hodnota tohto poľa. Ak chcete označiť viacero hodnôt, " +"uveďte viaceré predvolené hodnoty oddelené čiarkami." + +#: components/select.inc:63 +msgid "Multiple" +msgstr "Viacero naraz" + +#: components/select.inc:66 +msgid "" +"Check this option if the user should be allowed to choose multiple " +"values." +msgstr "" +"Zaškrtnite túto možnosť ak používateľ môže vybrať viacero " +"hodnôt." + +#: components/select.inc:70 +msgid "Listbox" +msgstr "Výberový zoznam" + +#: components/select.inc:73 +msgid "" +"Check this option if you want the select component to be of listbox " +"type instead of radiobuttons or checkboxes." +msgstr "" +"Zaškrtnite túto možnosť ak chcete aby komponent bol výberovým " +"zoznamom miesto prepínačov alebo zaškrtávacích polí." + +#: components/select.inc:81 +msgid "" +"To use the option with a select component, you must use key-value " +"pairs seperated by pipes. i.e. user@example.com|Sample user." +msgstr "" +"Ak chcete použiť túto voľbu pri tomto komponente, musíte použiť " +"kľúčové páry oddelené zvyslými oddeľovačmi. Napr.: " +"pouzivatel@priklad.sk|Nejaký používateľ." + +#: components/select.inc:285 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "" +"Umožňuje vytváranie zaškrtávacích políčok, prepínacích " +"tlačidiel alebo výberových ponúk." + +#: components/textarea.inc:61 +msgid "Height" +msgstr "Výška" + +#: components/textarea.inc:63 +msgid "Height of the textfield." +msgstr "Výška textového poľa." + +#: components/textarea.inc:137 +msgid "A large text area that allows for multiple lines of input." +msgstr "Veľká textová oblasť, ktorá umožňuje zadať viacero riadkov." + +#: components/textfield.inc:64 +msgid "Maxlength" +msgstr "Maximálna dĺžka" + +#: components/textfield.inc:66 +msgid "Maxlength of the textfield." +msgstr "Maximálna dĺžka textového poľa (v znakoch)." + +#: components/textfield.inc:73 +msgid "Label placed to the left of the textfield" +msgstr "Doplnok, ktorý sa zobrazí vľavo od textového poľa" + +#: components/textfield.inc:75 +msgid "Examples: $, #, -." +msgstr "Napríklad: $, #, -." + +#: components/textfield.inc:82 +msgid "Label placed to the right of the textfield" +msgstr "Doplnok, ktorý sa zobrazí vpravo od textového poľa" + +#: components/textfield.inc:84 +msgid "Examples: lb, kg, %." +msgstr "Napríklad: lb, kg, %." + +#: components/textfield.inc:195 +msgid "Basic textfield type." +msgstr "Základný typ textového poľa." + +#: components/time.inc:43 +msgid "" +"Accepts a time in any <a " +"href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU " +"Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are " +"all valid." +msgstr "" +"Akceptuje ktorýkoľvek formát zo <a " +"href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">vstupných " +"dátumových formátov GNU</a>. Reťazce ako now, +2 hours a 10:30pm " +"sú tiež platné." + +#: components/time.inc:53 +msgid "" +"Adjust the time according to a specific timezone. Website timezone is " +"defined in the <a href=\"!settings\">Site Settings</a> and is the " +"default." +msgstr "" +"Prispôsobí čas podľa časového pásma. Časové pásmo webu je " +"definované na stránke <a href=\"!settings\">Nastavenia webu</a> a je " +"predvolené." + +#: components/time.inc:67 +msgid "Time Format" +msgstr "Formát času" + +#: components/time.inc:69 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Formát zobrazenia času buď 12 alebo 24 hod." + +#: components/time.inc:123 +msgid "hour" +msgstr "hodina" + +#: components/time.inc:124 +msgid "minute" +msgstr "minúta" + +#: components/time.inc:127 +msgid "am" +msgstr "doobeda" + +#: components/time.inc:127 +msgid "pm" +msgstr "poobede" + +#: components/time.inc:179 +msgid "Entered %name is not a valid time." +msgstr "%name nie je správny čas." + +#: components/time.inc:250 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "" +"Predstavuje polia pre minúty a hodiny. Voliteľne i prepínač " +"doobeda/poobede." + diff --git a/sites/all/modules/webform/translations/sv.po b/sites/all/modules/webform/translations/sv.po new file mode 100644 index 0000000000000000000000000000000000000000..a812fcb63a08a824b7e36944768888c8325e14d7 --- /dev/null +++ b/sites/all/modules/webform/translations/sv.po @@ -0,0 +1,1599 @@ +# Swedish translation of webform (6.x-2.7) +# Copyright (c) 2009 by the Swedish translation team +# Generated from files: +# webform.module,v 1.124.2.95 2009/02/27 22:35:15 quicksketch +# webform_report.inc,v 1.17.2.15 2009/03/04 05:05:12 quicksketch +# email.inc,v 1.19.2.12 2009/03/04 05:05:12 quicksketch +# textarea.inc,v 1.12.2.14 2009/06/03 19:27:31 quicksketch +# textfield.inc,v 1.12.2.10 2009/03/04 05:05:12 quicksketch +# date.inc,v 1.15.2.18 2009/03/04 05:05:12 quicksketch +# webform_components.inc,v 1.9.2.29 2009/06/03 19:47:15 quicksketch +# webform_submissions.inc,v 1.6.2.23 2009/02/14 06:26:23 quicksketch +# markup.inc,v 1.5.2.7 2009/01/09 08:31:06 quicksketch +# file.inc,v 1.4.2.33 2009/03/04 05:05:12 quicksketch +# time.inc,v 1.16.2.10 2009/03/04 05:05:11 quicksketch +# grid.inc,v 1.3.2.18 2009/03/04 05:05:12 quicksketch +# select.inc,v 1.22.2.29 2009/03/04 05:05:11 quicksketch +# hidden.inc,v 1.12.2.11 2009/03/04 05:05:12 quicksketch +# fieldset.inc,v 1.4.2.7 2009/01/09 08:31:06 quicksketch +# webform-confirmation.tpl.php,v 1.1.2.3 2009/01/09 08:31:06 quicksketch +# webform-mail.tpl.php,v 1.1.2.4 2009/01/19 03:31:10 quicksketch +# webform_export.inc,v 1.1.4.5 2009/02/14 01:03:37 quicksketch +# webform/webform.info: n/a +# pagebreak.inc,v 1.3.2.4 2009/01/09 08:31:06 quicksketch +# +msgid "" +msgstr "" +"Project-Id-Version: webform (6.x-2.7)\n" +"POT-Creation-Date: 2009-07-08 13:30+0200\n" +"PO-Revision-Date: 2009-06-14 15:17+0200\n" +"Language-Team: Swedish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: webform.module:1290 +msgid "Advanced options" +msgstr "Avancerade alternativ" + +#: webform_report.inc:398 +msgid "Username" +msgstr "Användarnamn" + +#: components/email.inc:78; components/textarea.inc:77; components/textfield.inc:91 +msgid "Disabled" +msgstr "Inaktiverad" + +#: webform.module:1362 +msgid "Enabled" +msgstr "Aktiverat" + +#: components/date.inc:223 +msgid "!name field is required." +msgstr "Fältet !name är obligatoriskt." + +#: webform.module:929 +msgid "Default" +msgstr "Standard" + +#: webform_components.inc:44,135,364 +msgid "Weight" +msgstr "Vikt" + +#: webform_components.inc:135; webform_report.inc:99; webform.module:2195 +msgid "Operations" +msgstr "Åtgärder" + +#: webform_components.inc:198,487; webform_report.inc:138; webform_submissions.inc:105; webform.module:243 +msgid "Delete" +msgstr "Radera" + +#: webform_report.inc:285; webform_submissions.inc:105 +msgid "Cancel" +msgstr "Avbryt" + +#: webform.module:654,2193 +msgid "Title" +msgstr "Titel" + +#: webform_components.inc:306; webform.module:663,1362 +msgid "Description" +msgstr "Beskrivning" + +#: webform_report.inc:135; webform.module:2194,223 +msgid "View" +msgstr "Visa" + +#: webform.module:918 +msgid "Custom" +msgstr "Anpassat" + +#: components/markup.inc:63 +msgid "Preview" +msgstr "Förhandsvisa" + +#: webform_report.inc:398 +msgid "Time" +msgstr "Tid" + +#: webform_components.inc:55,135 +msgid "E-mail" +msgstr "E-post" + +#: components/file.inc:248 +msgid "Category" +msgstr "Kategori" + +#: webform.module:888 +msgid "To" +msgstr "Till" + +#: webform_components.inc:135; webform.module:890 +msgid "Type" +msgstr "Typ" + +#: webform_report.inc:96,189 +msgid "User" +msgstr "Användare" + +#: webform_components.inc:135; webform.module:889,1362; components/file.inc:561 +msgid "Name" +msgstr "Namn" + +#: webform.module:2204,173 +msgid "Table" +msgstr "Tabell" + +#: webform_components.inc:196; webform_report.inc:137; webform.module:2206,233 +msgid "Edit" +msgstr "Redigera" + +#: webform_report.inc:58 +msgid "All" +msgstr "Alla" + +#: components/time.inc:127 +msgid "am" +msgstr "fm" + +#: components/time.inc:127 +msgid "pm" +msgstr "em" + +#: webform_components.inc:366 +msgid "" +"Optional. In the menu, the heavier items will sink and the lighter " +"items will be positioned nearer the top." +msgstr "" +"Valfritt. I menyn sjunker tyngre menyval nedåt medan lättare menyval " +"placerar sig närmare toppen." + +#: webform.module:818 +msgid "Unlimited" +msgstr "Obegränsad" + +#: webform_components.inc:109,255 +msgid "Publish" +msgstr "Publicera" + +#: webform.module:143 +msgid "Results" +msgstr "Resultat" + +#: webform_components.inc:135; components/markup.inc:39 +msgid "Value" +msgstr "Värde" + +#: webform_report.inc:337; webform.module:2205,183 +msgid "Download" +msgstr "Ladda ner" + +#: webform_components.inc:97,235,261 +msgid "Add" +msgstr "Lägg till" + +#: webform_components.inc:297 +msgid "Label" +msgstr "Etikett" + +#: webform.module:1341 +msgid "Off" +msgstr "Av" + +#: components/grid.inc:42; components/select.inc:44 +msgid "Options" +msgstr "Alternativ" + +#: components/date.inc:187 +msgid "Day" +msgstr "Dag" + +#: components/date.inc:184 +msgid "Month" +msgstr "Månad" + +#: components/date.inc:190,206 +msgid "Year" +msgstr "År" + +#: webform_components.inc:197 +msgid "Clone" +msgstr "Klona" + +#: components/file.inc:248 +msgid "Types" +msgstr "Typer" + +#: components/date.inc:44; components/email.inc:43; components/hidden.inc:38; components/select.inc:55; components/textarea.inc:45; components/textfield.inc:46; components/time.inc:41 +msgid "Default value" +msgstr "Standardvärde" + +#: components/email.inc:63; components/file.inc:127; components/textarea.inc:54; components/textfield.inc:55 +msgid "Width" +msgstr "Bredd" + +#: components/textarea.inc:62 +msgid "Height" +msgstr "Höjd" + +#: webform_components.inc:313 +msgid "Advanced settings" +msgstr "Avancerade inställningar" + +#: webform_report.inc:285; webform.module:2207,193 +msgid "Clear" +msgstr "Rensa" + +#: components/date.inc:56 +msgid "User timezone" +msgstr "Användarens tidzon" + +#: components/date.inc:53; components/time.inc:51 +msgid "Timezone" +msgstr "Tidzon" + +#: components/fieldset.inc:39 +msgid "Collapsible" +msgstr "Hopfällbar" + +#: webform_report.inc:97,190,398 +msgid "IP Address" +msgstr "IP-address" + +#: webform_components.inc:103,397; webform.module:1531,1548,1669 +msgid "Submit" +msgstr "Skicka" + +#: webform_report.inc:470 +msgid "Q" +msgstr "" + +#: webform_report.inc:92,187 +msgid "#" +msgstr "#" + +#: webform.module:100 +msgid "Configuration" +msgstr "Konfiguration" + +#: webform-confirmation.tpl.php:23; webform_report.inc:154 +msgid "Go back to the form" +msgstr "Gå tillbaka till formuläret" + +#: webform-mail.tpl.php:26 +msgid "Submitted on @date" +msgstr "Skickad @date" + +#: webform-mail.tpl.php:29 +msgid "Submitted by user: @username [@ip_address]" +msgstr "Inskickad av användare: @username [@ip_address]" + +#: webform-mail.tpl.php:31 +msgid "Submitted by anonymous user: [@ip_address]" +msgstr "Inskickad av anonym användare: [@ip_address]" + +#: webform-mail.tpl.php:35 +msgid "Submitted values are" +msgstr "Inskickade värden är" + +#: webform-mail.tpl.php:44 +msgid "The results of this submission may be viewed at:" +msgstr "Resultatet av detta bidrag kan ses på:" + +#: webform_components.inc:49,135,329 +msgid "Mandatory" +msgstr "Obligatoriskt" + +#: webform_components.inc:140 +msgid "New component name" +msgstr "Namn på ny komponent" + +#: webform_components.inc:220 +msgid "No Components, add a component below." +msgstr "Inga komponenter, lägg till en komponent nedan." + +#: webform_components.inc:236 +msgid "When adding a new component, the name field is required." +msgstr "När du lägger till en ny komponent är namn-fältet obligatoriskt." + +#: webform_components.inc:258 +msgid "Your webform has been published." +msgstr "Ditt webbformulär har publicerats." + +#: webform_components.inc:266 +msgid "The component positions and mandatory values have been updated." +msgstr "Komponenternas position och obligatoriskt-status har uppdaterats." + +#: webform_components.inc:271 +msgid "Edit component: @name (@type)" +msgstr "Redigera komponent: @name (@type)" + +#: webform_components.inc:298 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "Detta används som en beskrivande etikett när detta formulärelement visas." + +#: webform_components.inc:307 +msgid "" +"A short description of the field used as help for the user when he/she " +"uses the form." +msgstr "En kort beskrivning av fältet som används som hjälp för användaren när hon eller han fyller i formuläret." + +#: webform_components.inc:322 +msgid "Field Key" +msgstr "Fältnyckel" + +#: webform_components.inc:323 +msgid "" +"Enter a machine readable key for this form element. May contain only " +"lowercase alphanumeric characters and underscores. This key will be " +"used as the name attribute of the form element. This value has no " +"effect on the way data is saved, but may be helpful if using " +"Additional Processing or Validation code." +msgstr "Skriv in en maskinläsbar nyckel för detta formulärelement. Får bara innehålla små bokstäver, siffror och understreck. Denna nyckel kommer att användas som name-attribut för formulärelementen. Detta värde har ingen betydelse för hur data sparas, men kan vara till hjälp om man använder Ytterligare bearbetning eller Valideringskod." + +#: webform_components.inc:331 +msgid "Check this option if the user must enter a value." +msgstr "Välj detta om användaren måste skriva in ett värde." + +#: webform_components.inc:337 +msgid "Include in e-mails" +msgstr "Inkludera i e-post" + +#: webform_components.inc:339 +msgid "" +"If checked, submitted values from this component will be included in " +"e-mails." +msgstr "Om detta väljs kommer inskickade värden från denna komponent att tas med i e-postmeddelanden." + +#: webform_components.inc:345 +msgid "Root" +msgstr "Rot" + +#: webform_components.inc:353 +msgid "Parent Fieldset" +msgstr "Överliggande fältgrupp" + +#: webform_components.inc:355 +msgid "" +"Optional. You may organize your form by placing this component inside " +"another fieldset." +msgstr "Frivilligt. Du kan organisera ditt formulär genom att placera denna komponent inuti en fältgrupp." + +#: webform_components.inc:378 +msgid "" +"The webform component of type @type does not have an edit function " +"defined." +msgstr "Webbformulärkomponenten av typen @type har ingen definierad redigerafunktion." + +#: webform_components.inc:411 +msgid "" +"The field key %field_key is invalid. Please include only lowercase " +"alphanumeric characters and underscores." +msgstr "Fältnyckeln %field_key är ogiltig. Använd bara små bokstäver, siffror och understreck." + +#: webform_components.inc:416 +msgid "" +"The field key %field_key is already in use by the field labeled " +"%existing_field. Please use a unique key." +msgstr "Fältnyckeln %field_key används redan av fältet med etiketten %existing_field. Använd en unik nyckel." + +#: webform_components.inc:450 +msgid "Component %name cloned." +msgstr "Komponenten %name har klonats." + +#: webform_components.inc:454 +msgid "Component %name updated." +msgstr "Komponenten %name har uppdaterats." + +#: webform_components.inc:458 +msgid "New component %name added." +msgstr "Den nya komponenten %name skapades." + +#: webform_components.inc:479 +msgid "Delete the %name fieldset?" +msgstr "Radera fältgruppen %name?" + +#: webform_components.inc:480 +msgid "" +"This will immediately delete the %name fieldset and all children " +"elements within %name from the %webform webform. This cannot be " +"undone." +msgstr "Detta kommer att omedelbart radera fältgruppen %name och alla de underliggande elementen i %name från webbformuläret %webform. Detta kan inte ångras." + +#: webform_components.inc:483 +msgid "Delete the %name component?" +msgstr "Radera komponenten %name?" + +#: webform_components.inc:484 +msgid "" +"This will immediately delete the %name component from the %webform " +"webform. This cannot be undone." +msgstr "Detta kommer att omedelbart radera komponenten %name från webbformuläret %webform. Detta kan inte ångras." + +#: webform_components.inc:491 +msgid "Component %name deleted." +msgstr "Komponenten %name raderades." + +#: webform_export.inc:21 +msgid "Delimited text" +msgstr "Teckenseparerad text" + +#: webform_export.inc:22 +msgid "A plain text file delimited by commas, tabs, or other characters." +msgstr "En ren textfil med fält separerade av kommatecken, tabbar eller andra tecken." + +#: webform_export.inc:26 +msgid "Microsoft Excel" +msgstr "Microsoft Excel" + +#: webform_export.inc:27 +msgid "A file readable by Microsoft Excel." +msgstr "En fil som är läsbar av Microsoft Excel." + +#: webform_report.inc:28 +msgid "Submissions for %user" +msgstr "Resultat för %user" + +#: webform_report.inc:71 +msgid "Show !count results per page." +msgstr "Visa !count resultat per sida." + +#: webform_report.inc:74 +msgid "Showing all results." +msgstr "Visar alla resultat." + +#: webform_report.inc:77 +msgid "@total results total." +msgstr "Totalt @total resultat." + +#: webform_report.inc:93,188 +msgid "Submitted" +msgstr "Skickad" + +#: webform_report.inc:147,248,491 +msgid "" +"There are no submissions for this form. <a href=\"!url\">View this " +"form</a>." +msgstr "Det finns inga resultat för detta formulär. <a href=\"!url\">Visa detta formulär</a>." + +#: webform_report.inc:279 +msgid "Clear Form Submissions" +msgstr "Rensa formulärresultat" + +#: webform_report.inc:283 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "Är du säker på att du vill radera alla resultat för detta formulär?" + +#: webform_report.inc:293 +msgid "Webform %title entries cleared." +msgstr "Resultaten för webbformuläret %title rensades." + +#: webform_report.inc:314 +msgid "Export format" +msgstr "Exportformat" + +#: webform_report.inc:321 +msgid "Delimited text format" +msgstr "Teckenseparerad text" + +#: webform_report.inc:322; webform.module:1313 +msgid "" +"This is the delimiter used in the CSV/TSV file when downloading " +"Webform results. Using tabs in the export is the most reliable method " +"for preserving non-latin characters. You may want to change this to " +"another character depending on the program with which you anticipate " +"importing results." +msgstr "Detta är det separationstecken som används i CSV/TSV-filer när webbformulärresultat laddas ner. Att använda tabbar i exporten är den mest pålitliga metoden för att bevara specialtecken. Du kan behöva ändra detta till ett annat tecken beroende vilket program du kommer att importera resultaten med." + +#: webform_report.inc:325; webform.module:1316 +msgid "Comma (,)" +msgstr "Komma (,)" + +#: webform_report.inc:326; webform.module:1317 +msgid "Tab (\\t)" +msgstr "Tabb (\\t)" + +#: webform_report.inc:327; webform.module:1318 +msgid "Semicolon (;)" +msgstr "Semikolon (;)" + +#: webform_report.inc:328; webform.module:1319 +msgid "Colon (:)" +msgstr "Kolon (:)" + +#: webform_report.inc:329; webform.module:1320 +msgid "Pipe (|)" +msgstr "Vertikalt streck/\"Pipe\" (|)" + +#: webform_report.inc:330; webform.module:1321 +msgid "Period (.)" +msgstr "Punkt (.)" + +#: webform_report.inc:331; webform.module:1322 +msgid "Space ( )" +msgstr "Mellanslag ( )" + +#: webform_report.inc:397 +msgid "Submission Details" +msgstr "Detaljer för bidrag" + +#: webform_report.inc:398 +msgid "Serial" +msgstr "Serienummer" + +#: webform_report.inc:398 +msgid "SID" +msgstr "SID" + +#: webform_report.inc:398 +msgid "UID" +msgstr "UID" + +#: webform_report.inc:471 +msgid "responses" +msgstr "svar" + +#: webform_submissions.inc:98 +msgid "Delete Form Submission" +msgstr "Radera formulärbidrag" + +#: webform_submissions.inc:103 +msgid "Are you sure you want to delete this submission?" +msgstr "Är du säker på att du vill radera detta bidrag?" + +#: webform_submissions.inc:110 +msgid "Submission deleted." +msgstr "Bidraget raderades." + +#: webform.module:22 +msgid "" +"Webforms are forms and questionnaires. To add one, select <a " +"href=\"!url\">Create content -> Webform</a>." +msgstr "Webbformulär är formulär och enkäter. För att lägga till ett formulär, välj <a href=\"!url\">Skapa innehåll -> Webbformulär</a>" + +#: webform.module:25 +msgid "" +"<p>This module lets you create forms or questionnaires and define " +"their content. Submissions from these forms are stored in the database " +"and optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the " +"actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be " +"displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will " +"be sent. If no email address is specified, no e-mail will be sent when " +"submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will " +"be used to populate the return e-mail address on any sent " +"e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that " +"will be used to populate the subject e-mail field on any sent " +"e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown " +"after you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database " +"table <i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" + +#: webform.module:41 +msgid "" +"A webform can be a questionnaires, contact or request forms. It can be " +"used to let visitors make contact, register for a event or to enable a " +"complex survey." +msgstr "Ett webbformulär kan vara en enkät, ett kontakt- eller ett beställningsformulär. Det kan användas för att låta besökarna kontakta dig, anmäla sig till en händelse eller för att skapa komplexa enkäter." + +#: webform.module:44 +msgid "" +"This page displays all the components currently configured for this " +"webform node. You may add any number of components to the form, even " +"multiple of the same type. To add a new component, fill in a name and " +"select a type from the fields at the bottom of the table. Submit the " +"form to create the new component or update any changed form values." +msgstr "Denna sida viasr alla komponenter som för närvarande är skapade för denna webbformulärnod. Du kan lägga till valfritt antal komponenter genom att skriva in ett namn och välja en typ i fälten längst ner i tabellen. Klicka på Lägg till för att skapa den nya komponenten eller på Spara för att uppdatera ändrade formulärvärden." + +#: webform.module:45 +msgid "Click on any existing component's name to edit its settings." +msgstr "Klicka på en befintlig komponents namn för att ändra dess inställningar." + +#: webform.module:416,80; webform.info:0 +msgid "Webform" +msgstr "Webbformulär" + +#: webform.module:418 +msgid "" +"Create a new form or questionnaire accessible to users. Submission " +"results and statistics are recorded and accessible to privileged " +"users." +msgstr "Skapa ett formulär eller en enkät som är tillgänglig för användarna. Inskickade resultat och statistik sparas och kan kommas åt av användare med rätt behörighet." + +#: webform.module:604 +msgid "Go to form" +msgstr "Gå till formulär" + +#: webform.module:606 +msgid "View this form." +msgstr "Visa detta formulär." + +#: webform.module:645 +msgid "Webform Settings" +msgstr "Webbformulärinställningar" + +#: webform.module:664 +msgid "Text to be shown as teaser and before the form." +msgstr "Text som ska visas som ingress och ovanför formuläret." + +#: webform.module:673 +msgid "Confirmation message or redirect URL" +msgstr "Bekräftelsemeddelande eller adress för vidarebefordring" + +#: webform.module:674 +msgid "" +"Message to be shown upon successful submission or a path to a redirect " +"page. Preface message with <em>message:</em> for a simple message that " +"does not require a page refresh. Redirect pages must start with " +"<em>http://</em> for external sites or <em>internal:</em> for an " +"internal path. i.e. <em>http://www.example.com</em> or " +"<em>internal:node/10</em>" +msgstr "Meddelande som ska visas när ett bidrag skickats in eller en sökväg till en sida som användaren ska vidarebefordras till. Inled meddelandet med <em>message:</em> om du vill ha ett enkelt meddelande som inte kräver en sidomladdning. Vidarebefordringssidor måste inledas med <em>http://</em> för externa webbplatser och <em>internal:</em> för interna sökvägar, exempelvis <em>http://www.exempel.com</em> eller <em>internal:node/10</em>" + +#: webform.module:686 +msgid "Webform access control" +msgstr "Rättigheter för webbformulär" + +#: webform.module:691 +msgid "" +"These permissions affect which roles can submit this webform. It does " +"not prevent access to the webform page. If needing to prevent access " +"to the webform page entirely, use a content access module such as <a " +"href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> " +"or <a href=\"http://drupal.org/project/node_privacy_byrole\">Node " +"Privacy by Role</a>." +msgstr "Dessa rättigheter påverkar vilka roller som kan skicka in detta webbformulär. Det hindrar inte åtkomst till webbformulärets sida. Om du måste blockera åtkomsten till webbformulärets sida helt och hållet måste du använda en rättighetsmodul såsom <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> eller <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." + +#: webform.module:699 +msgid "Roles that can submit this webform" +msgstr "Roller som kan skicka in detta webbformulär" + +#: webform.module:700 +msgid "" +"Uncheck all roles to prevent new submissions. The %authenticated role " +"applies to any user signed into the site, regardless of other assigned " +"roles." +msgstr "Avmarkera alla roller för att förhindra nya bidrag. Rollen %authenticated gäller alla användare som loggat in på webbplatsen, oavsett vilka övriga roller användaren har tilldelats." + +#: webform.module:707 +msgid "Webform mail settings" +msgstr "Mailinställningar för webbformulär" + +#: webform.module:717 +msgid "E-mail to address" +msgstr "Adress som e-post skickas till" + +#: webform.module:720 +msgid "" +"Form submissions will be e-mailed to this address. Leave blank for " +"none. Multiple e-mail addresses may be separated by commas." +msgstr "Inskickade formulär kommer att skickas till denna adress. Lämna tomt för att förhindra att mail skickas. Adresser kan separeras med kommatecken." + +#: webform.module:728 +msgid "Conditional e-mail recipients" +msgstr "Villkorade mottagare av e-post" + +#: webform.module:729 +msgid "" +"The settings below allow you to send e-mails to multiple recipients " +"based off the value of a component." +msgstr "Inställningarna nedan låter dig skicka e-post till flera mottagare baserat på värdet hos en formulärkomponent." + +#: webform.module:753 +msgid "E-mail from name" +msgstr "Namn för utgående e-post" + +#: webform.module:754 +msgid "" +"After adding components to this form any email, select, or hidden form " +"element may be selected as the sender's name for e-mails." +msgstr "När du har lagt till komponenter i detta formulär kan valfria element av typerna text, val och dold användas som avsändarens namn." + +#: webform.module:758 +msgid "E-mail from address" +msgstr "Adress för utgående e-post" + +#: webform.module:759 +msgid "" +"After adding components to this form any textfield, select, or hidden " +"form element may be selected as the sender's e-mail address." +msgstr "När du har lagt till komponenter i detta formulär kan valfria element av typerna e-post, val och dold användas som avsändarens namn." + +#: webform.module:763 +msgid "E-mail subject" +msgstr "Ämne för e-post" + +#: webform.module:764 +msgid "" +"After adding components to this form any textfield, select, or hidden " +"form element may be selected as the subject for e-mails." +msgstr "När du har lagt till komponenter i detta formulär kan valfria element av typerna text, val och dold användas som meddelandets ämne." + +#: webform.module:799 +msgid "Webform advanced settings" +msgstr "Avancerade inställningar för webbformulär" + +#: webform.module:807 +msgid "Show complete form in teaser" +msgstr "Visa komplett formulär i kortversionen" + +#: webform.module:809 +msgid "Display the entire form in the teaser display of this node." +msgstr "Visa hela formuläret i kortversionen av denna nod." + +#: webform.module:813 +msgid "" +"Limit the number of submissions a user may send within a specified " +"time period" +msgstr "Begränsa antalet bidrag en användare kan skicka in inom en viss tidsperiod." + +#: webform.module:832 +msgid "ever" +msgstr "någonsin" + +#: webform.module:833 +msgid "every hour" +msgstr "per timme" + +#: webform.module:834 +msgid "every day" +msgstr "per dag" + +#: webform.module:835 +msgid "every week" +msgstr "per vecka" + +#: webform.module:842 +msgid "Submit button text" +msgstr "Text på skicka-knapp" + +#: webform.module:844 +msgid "" +"By default the submit button on this form will have the label " +"<em>Submit</em>. Enter a new title here to override the default." +msgstr "Som standard kommer skicka-knappen på detta formulär att ha etiketten <em>Skicka</em>. Skriv in en ny etikett här för att åsidosätta standardvärdet." + +#: webform.module:849 +msgid "Additional Validation" +msgstr "Extra validering" + +#: webform.module:850 +msgid "" +"Enter PHP code to perform additional validation for this form. Include " +"the <?php ?> tags. $form and $form_state are available " +"variables. If validation fails, use the form_set_error function to " +"prevent the form from being submitted. Use the same syntax as a " +"_validate function used in the <a " +"href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms " +"API</a>." +msgstr "Skriv in PHP-kod för att utföra extra validering för detta formulär. Inkludera <?php ?>-taggarna. $form och $form_state är tillgängliga variabler. Om valideringen misslyckas, använd funktionen form_set_error för att hindra att formuläret sparas. Använd samma syntax som i en _validate-funktion i Drupals <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." + +#: webform.module:858 +msgid "Additional Processing" +msgstr "Extra behandling" + +#: webform.module:859 +msgid "" +"Enter PHP code to perform additional processing for this form (after " +"the validation). Include the <?php ?> tags. $form and " +"$form_state are available variables, use the same syntax as a _submit " +"function used in the <a " +"href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms " +"API</a>." +msgstr "Skriv in PHP-kod för att utföra extra behandling av detta formulär (efter valideringen). Inkludera <?php ?>-taggarna. $form och $form_state är tillgängliga variabler. Använd samma syntax som i en _submit-funktion i Drupals <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." + +#: webform.module:903 +msgid "No components yet in this webform." +msgstr "Detta webbformulär har inga komponenter ännu." + +#: webform.module:918 +msgid "Component" +msgstr "Komponent" + +#: webform.module:950 +msgid "Limit to !count submission(s) !timespan" +msgstr "Begränsa till !count bidrag !timespan" + +#: webform.module:963,970 +msgid "The entered email address %address is not a valid address." +msgstr "Den angivna e-postadressen %address är inte en giltig adress." + +#: webform.module:1044 +msgid "" +"The new webform %title has been created. Add new fields to your " +"webform with the form below." +msgstr "Det nya webbformuläret %title har skapats. Lägg till nya fält i ditt webbformulär med hjälp av formuläret nedan." + +#: webform.module:1047 +msgid "" +"This webform is currently unpublished. After finishing your changes to " +"the webform, use the <em>Publish</em> button below." +msgstr "Detta webbformulär är för närvarande inte publicerat. När du har gjort klart ändringarna i webbformuläret, använd <em>Publicera</em>-knappen nedan." + +#: webform.module:1184 +msgid "Submissions for this form are closed." +msgstr "Detta formulär är stängt för nya bidrag." + +#: webform.module:1188 +msgid "" +"You must <a href=\"!login\">login</a> or <a " +"href=\"!register\">register</a> to view this form." +msgstr "Du måste <a href=\"!login\">login</a> or <a href=\"!register\">registrera dig</a> för att kunna se detta webbformulär." + +#: webform.module:1192 +msgid "You do not have permission to view this form." +msgstr "Du har inte behörighet att se detta formulär." + +#: webform.module:1199 +msgid "You have submitted this form the maximum number of times (@count)." +msgstr "Du har redan skickat in detta formulär det maximala antalet gånger (@count)." + +#: webform.module:1202,1213 +msgid "You have already submitted this form." +msgstr "Du har redan skickat in detta formulär." + +#: webform.module:1205 +msgid "You may not submit another entry at this time." +msgstr "Du kan inte skicka in ytterligare ett bidrag just nu." + +#: webform.module:1213,1216 +msgid "<a href=\"!url\">View your previous submissions</a>." +msgstr "<a href=\"!url\">Se dina inskickade formulär</a>." + +#: webform.module:1242 +msgid "Available components" +msgstr "Tillgängliga komponenter" + +#: webform.module:1245 +msgid "" +"These are the available field types for your installation of Webform. " +"You may disable any of these components by unchecking its " +"corresponding box. Only checked components will be available in " +"existing or new webforms." +msgstr "Dessa är de tillgängliga fälttyperna för din installation av modulen Webform. Du kan inaktivera valfria komponenter genom att kryssa ur motsvarande kryssruta. Endast aktiva komponenter kommer att finnas tillgängliga i befintliga och nya webbformulär." + +#: webform.module:1262 +msgid "Default e-mail values" +msgstr "Standardvärde för e-postadress" + +#: webform.module:1269 +msgid "From address" +msgstr "Från-adress" + +#: webform.module:1271 +msgid "" +"The default sender address for emailed webform results; often the " +"e-mail address of the maintainer of your forms." +msgstr "Den förvalda e-postadressen för avsändaren i e-post med resultat från ett webbformulär. Vanligtvis adressen till den som handhar webbformulären." + +#: webform.module:1276 +msgid "From name" +msgstr "Från-namn" + +#: webform.module:1278 +msgid "" +"The default sender name which is used along with the default from " +"address." +msgstr "Det förvalda namnet på avsändaren som används ihop med den förvalda e-postadressen." + +#: webform.module:1283 +msgid "Default subject" +msgstr "Standardämne" + +#: webform.module:1284,2244 +msgid "Form submission from: %title" +msgstr "Inskickat formulär från: %title" + +#: webform.module:1285 +msgid "The default subject line of any e-mailed results." +msgstr "Den förvalda ämnesraden för resultat skickade med e-post." + +#: webform.module:1298 +msgid "Allow cookies for tracking submissions" +msgstr "Tillåt att cookies används för att spåra bidrag" + +#: webform.module:1300 +msgid "" +"<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can " +"be used to help prevent the same user from repeatedly submitting a " +"webform. This feature is not needed for limiting submissions per user, " +"though it can increase accuracy in some situations. Besides cookies, " +"Webform also uses IP addresses and site usernames to prevent repeated " +"submissions." +msgstr "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> kan användas för att hjälpa till att förhindra att en och samma användare skickar in ett formulär flera gånger. Denna funktion är inte nödvänding för att begränsa antalet bidrag per användare, men det kan vara mer pålitligt i vissa situationer. Förutom cookies använder Webform även IP-adresser och användarnamn på webbplatsen för att förhindra upprepade bidrag." + +#: webform.module:1305 +msgid "Default export format" +msgstr "Standardformat för export" + +#: webform.module:1312 +msgid "Default export delimiter" +msgstr "Standardskiljetecken vid export" + +#: webform.module:1328 +msgid "Submission access control" +msgstr "Behörighetskontroll för bidrag" + +#: webform.module:1330 +msgid "Select the user roles that may submit each individual webform" +msgstr "Välj vilka användarroller som ska kunna skicka in varje enskilt webbformulär" + +#: webform.module:1331 +msgid "Disable Webform submission access control" +msgstr "Inaktivera Webforms behörighetskontroll för bidrag" + +#: webform.module:1334 +msgid "" +"By default, the configuration form for each webform allows the " +"administrator to choose which roles may submit the form. You may want " +"to allow users to always submit the form if you are using a separate " +"node access module to control access to webform nodes themselves." +msgstr "Som standard kan administratören välja vilka roller som kan skicka in varje formulär i inställningarna för formuläret. Du kan också välja att alltid låta användare skicka in formulär om du använder en separat rättighetsmodul för noder för att hantera åtkomsten till själva webbformulärnoderna." + +#: webform.module:1339 +msgid "Webforms debug" +msgstr "Felsökning av webbformulär" + +#: webform.module:1341 +msgid "Log submissions" +msgstr "Logga bidrag" + +#: webform.module:1341 +msgid "Full debug" +msgstr "Fullständig felsökning" + +#: webform.module:1342 +msgid "" +"Set to \"Log submissions\" to log all submissions in the watchdog. Set " +"to \"Full debug\" to print debug info on submission." +msgstr "Välj \"Logga bidrag\" för att registrera alla bidrag i webbplatsens logg. Välj \"Fullständing felsökning\" för att skriva ut felsökningsinformation när formulär skickas in." + +#: webform.module:1401 +msgid "Submission #@sid" +msgstr "Bidrag #@sid" + +#: webform.module:1421 +msgid "Previous submission" +msgstr "Föregående bidrag" + +#: webform.module:1424 +msgid "Next submission" +msgstr "Nästa bidrag" + +#: webform.module:1428 +msgid "Submission Information" +msgstr "Information om bidraget" + +#: webform.module:1437 +msgid "Form: !form" +msgstr "Formulär: !form" + +#: webform.module:1440 +msgid "Submitted by !name" +msgstr "Inskickat av !name" + +#: webform.module:1485 +msgid "Next Page >" +msgstr "Nästa sida >" + +#: webform.module:1486 +msgid "< Previous Page" +msgstr "< Föregående sida" + +#: webform.module:1631 +msgid "The webform component @type is not able to be displayed" +msgstr "Webbformulärkomponenten @type kan inte visas" + +#: webform.module:1840 +msgid "Illegal information. Data not submitted." +msgstr "Ogiltig information. Informationen skickades inte in." + +#: webform.module:1878 +msgid "Submission posted to %title. <a href=\"!url\">Results</a>. !details" +msgstr "Bidrag inskickat till %title. <a href=\"!url\">Resultat</a>. !details" + +#: webform.module:1883 +msgid "Submission updated." +msgstr "Bidrag uppdaterat." + +#: webform.module:1986 +msgid "Thank you, your submission has been received." +msgstr "Tack, ditt bidrag har tagits emot." + +#: webform.module:2202,153,205 +msgid "Submissions" +msgstr "Resultat" + +#: webform.module:2203,163 +msgid "Analysis" +msgstr "Analys" + +#: webform.module:2256,2257,2258,2259,2260,2263 +msgid "key" +msgstr "nyckel" + +#: webform.module:2267 +msgid "" +"You may use special tokens in this field that will be replaced with " +"dynamic values." +msgstr "Du kan använda speciella symboler i detta fält som kommer att ersättas med dynamiska värden." + +#: webform.module:2269 +msgid "" +"You can use %server[key] to add any of the special PHP <a " +"href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> " +"variables, %session[key] to add any of the special PHP <a " +"href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> " +"variables and %get[key] to create prefilled forms from the <a " +"href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. " +"%cookie, %request and %post also work with their respective PHP " +"variables. For example %server[HTTP_USER_AGENT], %session[id], or " +"%get[q]." +msgstr "" +"Använd %server[key] för att lägga till en av PHPs <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a>-variabler, %session[key] för att lägga till en av PHPs <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a>-variabler och %get[key] för att skapa förifyllda fält från <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URLen</a>. %cookie, %request och %post fungerar också ihop med dess respektive PHP-variabler. Exempelvis %server[HTTP_USER_AGENT], %session[id], eller %get[q]." + +#: webform.module:2271 +msgid "" +"If you are using the profiles module, you can also access all profile " +"data using the syntax %profile[form_name]. If you for example have a " +"profile value named profile_city, add the variable " +"%profile[profile_city]." +msgstr "Om du använder profilmodulen kan du också komma åt all profilinformation genom att använda syntaxen %profile[form_name]. Om du exempelvis har ett profilvärde med namnet profile_city, lägg till variabeln %profile[profile_city]." + +#: webform.module:2275 +msgid "Token values" +msgstr "Symbolvärden" + +#: webform.module:323 +msgid "create webforms" +msgstr "skapa webbformulär" + +#: webform.module:323 +msgid "edit own webforms" +msgstr "redigera egna webbformulär" + +#: webform.module:323 +msgid "edit webforms" +msgstr "redigera webbformulär" + +#: webform.module:323 +msgid "access webform results" +msgstr "komma åt webbformulärresultat" + +#: webform.module:323 +msgid "clear webform results" +msgstr "rensa webbformulärresultat" + +#: webform.module:323 +msgid "access own webform submissions" +msgstr "komma åt egna webbformulärresultat" + +#: webform.module:323 +msgid "edit own webform submissions" +msgstr "redigera egna webbformulärresultat" + +#: webform.module:323 +msgid "edit webform submissions" +msgstr "redigera webbformulärresultat" + +#: webform.module:323 +msgid "use PHP for additional processing" +msgstr "använda PHP för utökad behandling" + +#: webform.module:70 +msgid "Webforms" +msgstr "Webbformulär" + +#: webform.module:74 +msgid "View and edit all the available webforms on your site." +msgstr "Visa och redigera alla tillgängliga webbformulär på din webbplats." + +#: webform.module:85 +msgid "Global configuration of webform functionality." +msgstr "Globala inställningar för webbformulärs funktionalitet." + +#: webform.module:91 +msgid "Webform confirmation" +msgstr "Bekräftelse för webbformulär" + +#: webform.module:108 +msgid "Form components" +msgstr "Formulärkomponenter" + +#: webform.module:214 +msgid "Webform submission" +msgstr "Inskickat bidrag" + +#: webform.module:0 +msgid "webform" +msgstr "webform" + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "Tillhandahåller formulär och enkäter." + +#: components/date.inc:46; components/email.inc:45; components/hidden.inc:40; components/textarea.inc:47; components/textfield.inc:48; components/time.inc:43 +msgid "The default value of the field." +msgstr "Standardvärdet för fältet." + +#: components/date.inc:46 +msgid "" +"Accepts any date in any <a " +"href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU " +"Date Input Format</a>. Strings such as today, +2 months, and Dec 9 " +"2004 are all valid." +msgstr "Accepterar datum i formatet <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Textsträngar såsom today, +2 months och Dec 9 2004 är alla giltiga." + +#: components/date.inc:55 +msgid "" +"Adjust the date according to a specific timezone. Website timezone is " +"defined in the <a href=\"!settings\">Site Settings</a> and is the " +"default." +msgstr "Anpassa datumet utifrån en specifik tidzon. Webbplatsens tidzon definieras i <a href=\"!settings\">Webbplatsinställningarna</a> och fungerar som standard." + +#: components/date.inc:56 +msgid "Website timezone" +msgstr "Webbplatsens tidzon" + +#: components/date.inc:56 +msgid "GMT" +msgstr "GMT" + +#: components/date.inc:61; components/time.inc:59 +msgid "Observe Daylight Savings" +msgstr "Ta hänsyn till sommartid" + +#: components/date.inc:64; components/time.inc:62 +msgid "Automatically adjust the time during daylight savings." +msgstr "Anpassa klockslaget automatiskt under sommartid." + +#: components/date.inc:70 +msgid "Start year" +msgstr "Startår" + +#: components/date.inc:72 +msgid "The first year that is allowed to be entered." +msgstr "Det första året som är tillåtet att ange." + +#: components/date.inc:79 +msgid "End year" +msgstr "Slutår" + +#: components/date.inc:81 +msgid "The last year that is allowed to be entered." +msgstr "Det sista året som är tillåtet att ange." + +#: components/date.inc:88 +msgid "Use a textfield for year" +msgstr "Använd ett textfält för år" + +#: components/date.inc:90 +msgid "" +"If checked, the generated date field will use a textfield for the " +"year. Otherwise it will use a select list." +msgstr "Om detta är valt kommer datumfältet att använda ett textfält för år. Annars används en popupmeny." + +#: components/date.inc:230 +msgid "Entered !name is not a valid date." +msgstr "Angivet !name är inte ett giltigt datum." + +#: components/date.inc:237 +msgid "The entered date needs to be between the years @start and @end." +msgstr "Det angivna datumet måste vara mellan åren @start och @end." + +#: components/date.inc:312 +msgid "Presents month, day, and year fields." +msgstr "Visar fält för dag, månad och år" + +#: components/date.inc:388; components/email.inc:216; components/file.inc:516; components/textarea.inc:184; components/textfield.inc:233; components/time.inc:323 +msgid "Left Blank" +msgstr "Lämnat tomt" + +#: components/date.inc:389; components/email.inc:217; components/textarea.inc:185; components/textfield.inc:234; components/time.inc:324 +msgid "User entered value" +msgstr "Angivet värde" + +#: components/email.inc:54 +msgid "User email as default" +msgstr "Användarens e-postadress som standard" + +#: components/email.inc:56 +msgid "" +"Set the default value of this field to the user email, if he/she is " +"logged in." +msgstr "Använd användarens e-postadress som standardvärde för detta fält, om hon eller han är inloggad." + +#: components/email.inc:65; components/textarea.inc:56; components/textfield.inc:57 +msgid "Width of the textfield." +msgstr "Textfältets bredd." + +#: components/email.inc:65; components/file.inc:129; components/textarea.inc:56,64; components/textfield.inc:57 +msgid "Leaving blank will use the default size." +msgstr "Om du inte fyller i detta används standardstorleken." + +#: components/email.inc:71; components/hidden.inc:51; components/select.inc:78 +msgid "E-mail a submission copy" +msgstr "Skicka en kopia på bidraget med e-post" + +#: components/email.inc:74; components/hidden.inc:54; components/select.inc:81 +msgid "" +"Check this option if this component contains an e-mail address that " +"should get a copy of the submission. Emails are sent individually so " +"other emails will not be shown to the recipient." +msgstr "" + +#: components/email.inc:80; components/textarea.inc:79; components/textfield.inc:93 +msgid "" +"Make this field non-editable. Useful for setting an unchangeable " +"default value." +msgstr "Gör detta fält låst. Detta är användbart för att ställa in ett standardvärde som inte kan ändras." + +#: components/email.inc:145 +msgid "%value is not a valid email address." +msgstr "%value är inte en giltig e-postadress." + +#: components/email.inc:178 +msgid "A textfield that automatically fills in a logged-in user's e-mail." +msgstr "Ett texfält som automatiskt fylls i med en inloggad användare e-postadress." + +#: components/email.inc:218; components/hidden.inc:153; components/textarea.inc:186; components/textfield.inc:235 +msgid "Average submission length in words (ex blanks)" +msgstr "Genomsnittslängd på bidrag i antal ord (utan mellanslag)" + +#: components/fieldset.inc:41 +msgid "" +"If this fieldset is collapsible, the user may open or close the " +"fieldset." +msgstr "Om denna fältgrupp är hopfällbar kan användaren öppna och stänga fältgruppen." + +#: components/fieldset.inc:46 +msgid "Collapsed by Default" +msgstr "Hopfälld som standard" + +#: components/fieldset.inc:48 +msgid "" +"Collapsible fieldsets are \"open\" by default. Select this option to " +"default the fieldset to \"closed.\"" +msgstr "Hopfällbara fältgrupper är \"öppna\" som standard. Kryssa i detta val för att istället göra dem \"stängda\" som standard." + +#: components/fieldset.inc:100 +msgid "Fieldsets allow you to organize multiple fields into groups." +msgstr "Fältgrupper låter dig samla flera fält i grupper." + +#: components/file.inc:49 +msgid "Upload Filtering" +msgstr "Filter för uppladdningar" + +#: components/file.inc:50 +msgid "Select the types of uploads you would like to allow." +msgstr "Välj vilken typ av filer du vill ska vara tillåtna att ladda upp." + +#: components/file.inc:60 +msgid "Web Images" +msgstr "Webbilder" + +#: components/file.inc:68 +msgid "Desktop Images" +msgstr "Skrivbordsbilder" + +#: components/file.inc:76 +msgid "Documents" +msgstr "Dokument" + +#: components/file.inc:84 +msgid "Media" +msgstr "Mediafiler" + +#: components/file.inc:92 +msgid "Archives" +msgstr "Arkiv" + +#: components/file.inc:99 +msgid "Additional Extensions" +msgstr "Ytterligare filändelser" + +#: components/file.inc:101 +msgid "" +"Enter a list of additional file extensions for this upload field, " +"seperated by commas.<br /> Entered extensions will be appended to " +"checked items above." +msgstr "Skriv in en lista med ytterligare filändelser för detta filuppladdningsfält, separerad med kommatecken.<br />Angivna ändelser kommer att läggas till de valda typerna ovan." + +#: components/file.inc:109 +msgid "Max Upload Size" +msgstr "Maximal uppladdningsstorlek" + +#: components/file.inc:111 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "Ange den maximala filstorleken som en användare får ladad upp (i KB)." + +#: components/file.inc:118 +msgid "Upload Directory" +msgstr "Uppladdningskatalog" + +#: components/file.inc:120 +msgid "" +"Webform uploads are always saved in the site files directory. You may " +"optionally specify a subfolder to store your files." +msgstr "Uppladdningar med webbformulär sparas alltid i katalogen files. Du kan om du vill ange en underkatalog som filerna ska sparas i." + +#: components/file.inc:129 +msgid "Width of the file field." +msgstr "Bredd på filfältet." + +#: components/file.inc:144 +msgid "" +"The save directory %directory could not be created. Check that the " +"webform files directory is writtable." +msgstr "Lagringskatalogen %directory kunde inte skapas. Kontrollera att filkatalogen är skrivbar." + +#: components/file.inc:308; components/time.inc:171 +msgid "%field field is required." +msgstr "Fältet %field är obligatoriskt." + +#: components/file.inc:340 +msgid "" +"Files with the '%ext' extension are not allowed, please upload a file " +"with a %exts extension." +msgstr "Filer med ändelsen '%ext' är inte tillåtna. Välj en fil med följande ändelse: %exts." + +#: components/file.inc:345 +msgid "" +"The file '%filename' is too large (%filesize KB). Please upload a file " +"%maxsize KB or smaller." +msgstr "Filen '%filename' är för stor (%filesize KB). Välj en fil som är %maxsize KB eller mindre." + +#: components/file.inc:366 +msgid "" +"The uploaded file %filename was unable to be saved. The destination " +"directory may not be writable." +msgstr "Den uppladdade filen %filename kunde inte sparas. Målkatalogen är eventuellt inte skrivbar." + +#: components/file.inc:377 +msgid "" +"The uploaded file was unable to be saved. The destination directory " +"does not exist." +msgstr "Den uppladdade filen kunde inte sparas. Målkatalogen finns inte." + +#: components/file.inc:428 +msgid "Uploading a new file will replace the current file." +msgstr "Om du laddar upp en ny fil kommer den att ersätta den nuvarande filen." + +#: components/file.inc:463 +msgid "Allow users to submit files of the configured types." +msgstr "Låt användare ladda upp filer med följande typer." + +#: components/file.inc:517 +msgid "User uploaded file" +msgstr "Fil uppladdad" + +#: components/file.inc:518 +msgid "Average uploaded file size" +msgstr "Genomsnittlig storlek på uppladdade filer" + +#: components/file.inc:561 +msgid "Filesize (KB)" +msgstr "Filstorlek (KB)" + +#: components/grid.inc:44 +msgid "" +"Options to select across the top. One option per line. Key-value pairs " +"may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "Alternativ som ska visas högst upp. Ange ett alternativ per rad. Nyckel/värde-par kan skrivas in separerade av ett vertikalt streck (|), exempelvis nyckel_varde|Läsvänlig text" + +#: components/grid.inc:52 +msgid "Questions" +msgstr "Frågor" + +#: components/grid.inc:54 +msgid "Questions list down the left side. One question per line." +msgstr "Frågor visas längs med vänstra sidan. Ange en fråga per rad." + +#: components/grid.inc:62 +msgid "Randomize Options" +msgstr "Slumpa alternativen" + +#: components/grid.inc:64 +msgid "" +"Randomizes the order of options on the top when they are displayed in " +"the form." +msgstr "Detta slumpar ordningen på alternativen högst upp när de visas i formuläret." + +#: components/grid.inc:68 +msgid "Randomize Questions" +msgstr "Slumpa frågorna" + +#: components/grid.inc:70 +msgid "" +"Randomize the order of the questions on the side when they are " +"displayed in the form." +msgstr "Detta slumpar ordningen på frågorna i vänsterkanten när de visas i formuläret." + +#: components/grid.inc:227 +msgid "Allows creation of grid questions, denoted by radio buttons." +msgstr "Tillhandahåller rutnätsfrågor, där svaren anges med radioknappar." + +#: components/hidden.inc:99 +msgid "@name (hidden)" +msgstr "@name (dolt)" + +#: components/hidden.inc:113 +msgid "" +"A field which is not visible to the user, but is recorded with the " +"submission." +msgstr "Ett fält som inte är synligt för användaren, men som sparas i det inskickade bidraget." + +#: components/hidden.inc:151 +msgid "Empty" +msgstr "Tomt" + +#: components/hidden.inc:152 +msgid "Non-empty" +msgstr "Ej tomt" + +#: components/markup.inc:41 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "Markup låter dig lägga till egen HTML eller PHP-logik i ditt formulär." + +#: components/markup.inc:103 +msgid "Displays text as HTML in the form; does not render a field." +msgstr "Visar text som HTML i formuläret – visar inget fält." + +#: components/pagebreak.inc:32 +msgid "" +"Use caution when combining the pagebreak and file components. File " +"components will not be submitted unless they are after the last " +"pagebreak in the form." +msgstr "Var försiktig när du kombinerar komponenterna sidbrytning och filuppladdning. Filkomponenter skickas inte in om de inte ligger efter den sista sidbrytningen i formuläret." + +#: components/pagebreak.inc:59 +msgid "Break up a multi-page form." +msgstr "Dela upp ett formulär i flera sidor:" + +#: components/select.inc:46 +msgid "" +"A list of selectable options. One option per line. Key-value pairs may " +"be entered seperated by pipes, such as \"safe_key|Some readable " +"option\". Option groups for lists and menus may be specified with " +"<Group Name>. <> can be used to insert items at the root " +"of the menu after specifying a group." +msgstr "En lista med valbara alternativ. Ange ett alternativ per rad. Nyckel/värde-par kan anges separerade med ett vertikalt streck (|), t ex \"nyckel_varde|Läsvänlig text\". Alternativgrupper för listor och menyer kan anges med <Gruppnamn>. <> kan användas för att lägga alternativ på rotnivån efter att en grupp har angetts." + +#: components/select.inc:57 +msgid "" +"The default value of the field. For multiple selects use commas to " +"separate multiple defaults." +msgstr "Fältets standardvärde. För flervalslistor separerar du flera standardvärden med kommatecken." + +#: components/select.inc:64 +msgid "Multiple" +msgstr "Flerval" + +#: components/select.inc:67 +msgid "" +"Check this option if the user should be allowed to choose multiple " +"values." +msgstr "Välj detta om användaren ska kunna välja flera värden." + +#: components/select.inc:71 +msgid "Listbox" +msgstr "Listruta" + +#: components/select.inc:74 +msgid "" +"Check this option if you want the select component to be of listbox " +"type instead of radiobuttons or checkboxes." +msgstr "Välj detta om du vill att komponenten ska visas som en lista/popupmeny istället för radioknappar eller kryssrutor." + +#: components/select.inc:82 +msgid "" +"To use the option with a select component, you must use key-value " +"pairs seperated by pipes. i.e. user@example.com|Sample user." +msgstr "För att kunna använda en listruta måste du använda nyckel/värde-par separerade med vertikala streck (|), exempelvis anvandare@exempel.com|En användare." + +#: components/select.inc:124 +msgid "" +"Options within the select list must be unique. The following keys have " +"been used multiple times:" +msgstr "Alternativen i en lista måste vara unika. Följande nycklar används flera gånger:" + +#: components/select.inc:325 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "Tillhandahåller kryssrutor, radioknappar och listrutor/popupmenyer" + +#: components/textarea.inc:64 +msgid "Height of the textfield." +msgstr "Höjd på textfältet." + +#: components/textarea.inc:70 +msgid "Resizable" +msgstr "Storleksförändring" + +#: components/textarea.inc:71 +msgid "Make this field resizable by the user." +msgstr "Gör det möjligt för användaren att ändra storleken på fältet." + +#: components/textarea.inc:146 +msgid "A large text area that allows for multiple lines of input." +msgstr "En stor textruta som tillåter flera rader med text." + +#: components/textfield.inc:64 +msgid "Maxlength" +msgstr "Maxlängd" + +#: components/textfield.inc:66 +msgid "Maxlength of the textfield." +msgstr "Textfältets maxlängd." + +#: components/textfield.inc:73 +msgid "Label placed to the left of the textfield" +msgstr "Etikett som placeras till vänster om textfältet" + +#: components/textfield.inc:75 +msgid "Examples: $, #, -." +msgstr "Exempel: $, #, -." + +#: components/textfield.inc:82 +msgid "Label placed to the right of the textfield" +msgstr "Etikett som placeras till höger om textfältet" + +#: components/textfield.inc:84 +msgid "Examples: lb, kg, %." +msgstr "Exempel: kg, lb, %." + +#: components/textfield.inc:195 +msgid "Basic textfield type." +msgstr "Enkelt textfält." + +#: components/time.inc:43 +msgid "" +"Accepts a time in any <a " +"href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU " +"Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are " +"all valid." +msgstr "Accepterar tid i formatet <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Textsträngar såsom now, +2 hours och 10:30pm är alla giltiga." + +#: components/time.inc:53 +msgid "" +"Adjust the time according to a specific timezone. Website timezone is " +"defined in the <a href=\"!settings\">Site Settings</a> and is the " +"default." +msgstr "Anpassa tiden efter en specifik tidzon. Webbplatsens tidzon definieras i <a href=\"!settings\">Webbplatsinställningarna</a> och fungerar som standard." + +#: components/time.inc:67 +msgid "Time Format" +msgstr "Tidformat" + +#: components/time.inc:69 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Formatera tidsvisningen i 12 eller 24 timmar." + +#: components/time.inc:123 +msgid "hour" +msgstr "timme" + +#: components/time.inc:124 +msgid "minute" +msgstr "minut" + +#: components/time.inc:179 +msgid "Entered %name is not a valid time." +msgstr "Angiven %name är inte en giltig tid." + +#: components/time.inc:250 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "Ger användaren tim- och minutfält. Valfria fm/em-fält." + diff --git a/sites/all/modules/webform/translations/uk.po b/sites/all/modules/webform/translations/uk.po new file mode 100644 index 0000000000000000000000000000000000000000..4dc23aba8d0d3d29d84912fe22cd78f0d9acd193 --- /dev/null +++ b/sites/all/modules/webform/translations/uk.po @@ -0,0 +1,959 @@ +msgid "" +msgstr "" +"Project-Id-Version: Webform Drupal 5.1\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2009-01-19 16:32+0300\n" +"Last-Translator: Vadim <markov.vadim@gmail.com>\n" +"Language-Team: Markov <markov.vadim@gmail.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Ukrainian\n" +"X-Poedit-Country: Ukraine\n" + +#: webform.inc:17 +#: webform.module:473 +msgid "Title" +msgstr "Заголовок" + +#: webform.inc:18 +#: webform_report.inc:39 +msgid "View" +msgstr "Продивитись" + +#: webform.inc:20 +#: webform_report.inc:29 +#: ;32 +msgid "Operations" +msgstr "Операції" + +#: webform.inc:28 +#: webform.module:282 +msgid "submissions" +msgstr "результати заповнення" + +#: webform.inc:29 +#: webform.module:287 +msgid "analysis" +msgstr "аналіз" + +#: webform.inc:30 +#: webform.module:292 +msgid "table" +msgstr "таблиця" + +#: webform.inc:31 +#: webform.module:297 +msgid "download" +msgstr "забрати файл" + +#: webform.inc:32 +msgid "edit" +msgstr "редагувати" + +#: webform.inc:33 +#: webform.module:302 +msgid "clear" +msgstr "очистити" + +#: webform.inc:49 +msgid "Clear Form Submissions" +msgstr "Очистити результати заповненя форми" + +#: webforіm.inc:53 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "Впевнені, що хочете видалити всі результати заповення цієї форми?" + +#: webform.inc:55 +msgid "Clear" +msgstr "Очистити" + +#: webform.inc:55 +#: ;84 +msgid "Cancel" +msgstr "Відміна" + +#: webform.inc:65 +msgid "Webform %title entries cleared." +msgstr "Результати заповнення %title видалені." + +#: webform.inc:77 +msgid "Delete Form Submission" +msgstr "Видалити результати заповнення" + +#: webform.inc:82 +msgid "Are you sure you want to delete this submission?" +msgstr "Впевнені, що хочете видалити це заповнення?" + +#: webform.inc:84 +#: webform_report.inc:42 +msgid "Delete" +msgstr "Видалити" + +#: webform.inc:94 +msgid "Submission deleted." +msgstr "Видалено." + +#: webform.inc:154 +msgid "Submitted on" +msgstr "Дата заповнення" + +#: webform.inc:158 +msgid "Submitted by user" +msgstr "Заповнено користувачем" + +#: webform.inc:161 +msgid "Submitted by anonymous user" +msgstr "Заповнено анонімно" + +#: webform.inc:193 +msgid "Submitted values are" +msgstr "Відповіді" + +#: webform.inc:197 +msgid "The results of this submission may be viewed at:" +msgstr "Результати заповнення можна продивитися тут:" + +#: webform.inc:67 +#: webform.module:274 +#: ;307;144;980;1109;1117;1199;1217;0 +msgid "webform" +msgstr "форма" + +#: webform_report.inc:26 +#: ;62 +msgid "#" +msgstr "#" + +#: webform_report.inc:27 +msgid "Submitted" +msgstr "Надіслано" + +#: webform_report.inc:63 +msgid "Time" +msgstr "Час" + +#: webform_report.inc:64 +msgid "IP Address" +msgstr "IP адреса" + +#: webform_report.inc:208 +msgid "Q" +msgstr "Пит." + +#: webform_report.inc:209 +msgid "responses" +msgstr "відповідей" + +#: webform.module:25 +msgid "Webforms are forms and questionnaires. To add one select <strong>create content -> webform</strong>. Below you can set different security and debug options." +msgstr "За допомогою Опитувача можна створювати тести, опитання, форми для відправлення і таке інше. Нижче можна зробити деякі попередні налаштування." + +#: webform.module:28 +msgid "" +"<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p>\n" +" <p>Here is how to create one:</p>\n" +" <ul>\n" +" <li>Go to Create Content and add a webform</li>\n" +" <li>Add a description to be displayed as a teaser and above the actual form.</li>\n" +" <li>Add a confirmation message or redirect node that is to be displayed after successful submission.</li>\n" +" <li>Add one or more components to your form.</li>\n" +" <li>Optionally add an e-mail address to which submissions will be sent. If no email address is specified, no e-mail will be sent when submissions are made through the form.</li>\n" +" <li>Optionally select an e-mail (or hidden) component that will be used to populate the return e-mail address on any sent e-mail.</li>\n" +" <li>Optionally select a textfield (or hidden) component that will be used to populate the subject e-mail field on any sent e-mail.</li>\n" +" </ul>\n" +" <p>Help on adding and configuring the components will be shown after you add your first component.</p>\n" +" <p>The content of submitted forms is stored in the database table <i>webform_submitted_data</i> as key-value pairs.</p>\n" +" " +msgstr "" + +#: webform.module:44 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "Можна використовувати для створення опитувачів, тестів, форм зворотнього зв'язку і таке інше" + +#: webform.module:47 +msgid "Available variables are: %username, %useremail, %site, %date." +msgstr "Доступні оператори: %username, %useremail, %site, %date." + +#: webform.module:48 +msgid "You can also use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables and %get[key] to create prefilled forms from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a> (e.g. %server[HTTP_USER_AGENT] or %get[id])." +msgstr "Можна використовувати %server[key] для додання PHP-команд <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> и %get[key] щоб створити форми з попередньо заповненими полями <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a> (т.е. %server[HTTP_USER_AGENT] или %get[id])." + +#: webform.module:50 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "Якщо використовується модуль <em> profile </em>, можна підставляти дані з полей модуля, використовуючи синтаксис %profile[form_name]. Наприклад, якщо в профайлах є поле profile_city, лише додайте параметр %profile[profile_city]." + +#: webform.module:75 +#: ;243;260 +msgid "Webform" +msgstr "Форма" + +#: webform.module:77 +msgid "Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users." +msgstr "Створіть нову форму або опитувач. Результати заповнення та статистика будуть записані та передані для перегляду користувачам з відповідними правами доступу." + +#: webform.module:168 +msgid "Available Components" +msgstr "Доступні компоненти" + +#: webform.module:171 +msgid "Below is a list of supported field types available for webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms." +msgstr "Перелік підтримуємих типів полей в опитувачі. Можна вимкнути будь-яке з них, лише прибравши відповідній хрестик. Лише відмічені компоненти будуть доступні в існуючих або знову створених формах опитувача." + +#: webform.module:188 +msgid "Advanced Options" +msgstr "Додаткові налаштування" + +#: webform.module:196 +msgid "Allow Cookies for Tracking Submissions" +msgstr "Дозволити записувати дії користувача в cookie" + +#: webform.module:198 +msgid "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, webform also uses IP addresses and site usernames to prevent repeated submissions." +msgstr "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> використовються для запису та запобігання численних відправлень опитувача тим самим користувачем. Це налаштування працює незалежно від механизму обмеження кількості заповнень, але в деяких випадках може підвищити точність регулятора відправлень. Окрім cookies, опитувач також використовую запис IP-адрес для запобігання численних відправлень." + +#: webform.module:203 +msgid "Webforms Debug" +msgstr "Ремонт опитувача" + +#: webform.module:206 +msgid "Set this option to \"Log submissions\" to log all submissions in the watchdog. Set it to \"Full debug\" to print debug info on submission. You probably want to leave this option on \"OFF\"." +msgstr "Ввімкніть \"Log submissions\" для запису усіх заповнень форми у логи системи. Ввімкніть \"Full debug\" для виводу службових повідомлень у ході заповнення прямо на екран. Цю опцію краще вимкнути." + +#: webform.module:222 +#: ;777;859 +msgid "Name" +msgstr "Назва" + +#: webform.module:222 +#: ;481;867 +msgid "Description" +msgstr "Опис" + +#: webform.module:222 +msgid "Enabled" +msgstr "Ввімкнено" + +#: webform.module:250 +msgid "Webforms" +msgstr "Опитувачі" + +#: webform.module:253 +msgid "View and edit all the available webforms on your site." +msgstr "Переглянути та редагувати усі опитувачі." + +#: webform.module:264 +msgid "Global configuration of webform functionality." +msgstr "Глобальні налаштування системи опитувачів." + +#: webform.module:278 +#: ;1217 +msgid "Results" +msgstr "Результати" + +#: webform.module:326 +msgid "Go to form" +msgstr "Перейти до форми" + +#: webform.module:328 +msgid "View this form." +msgstr "продивитись цю форму." + +#: webform.module:349 +#: ;433;533 +msgid "Delete Selected" +msgstr "Видалити відмічене" + +#: webform.module:359 +#: ;927 +msgid "Done" +msgstr "Зроблено" + +#: webform.module:387 +msgid "The form component has been changed. Remember to press Submit on the bottom of this form to save your changes." +msgstr "Компонент форми було змінено. Обов'язково натисніть кнопку внизу форми, щоб змінення почали працювати." + +#: webform.module:389 +#: ;446;969;1007 components/markup.inc:38 +msgid "Preview" +msgstr "Перегляд" + +#: webform.module:417 +#: ;554 +msgid "Add" +msgstr "Додати" + +#: webform.module:425 +#: ;538;795 +msgid "Edit Selected" +msgstr "Редагувати відмічене" + +#: webform.module:438 +msgid "Field deleted, form must be submitted to save changes" +msgstr "Поле видалено, треба зберегти форму, щоб змінення почали працювати." + +#: webform.module:441 +msgid "A component must be selected to delete" +msgstr "Треба обрати компонент для видалення" + +#: webform.module:445 +#: ;1060 +msgid "Submit" +msgstr "Надіслати" + +#: webform.module:450 +msgid "Submission limit must be a number" +msgstr "Обмеження кількості заповнень має бути числом" + +#: webform.module:466 +msgid "Webform Settings" +msgstr "Налаштування опитувачів" + +#: webform.module:482 +msgid "Text to be shown as teaser and before the form." +msgstr "Текст перед полями опитувача." + +#: webform.module:491 +msgid "Confirmation message or redirect URL" +msgstr "Підтвердження реєстрації або перенаправлення" + +#: webform.module:492 +msgid "Message to be shown upon successful submission or a path to a redirect page. Redirect pages must start with <em>http://</em> for external sites or <em>internal:</em> for an internal path. i.e. <em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "Повідомлення для підтвердження заповнення або посилання, куди буде направлено користувача після заповнення опитувача. Посилання почніть символами <em>http://</em>для зовнішніх посилань або <em>internal:</em> для внутрішніх. Тобто <em>http://www.example.com</em> или <em>internal:node/10</em>" + +#: webform.module:506 +msgid "Components" +msgstr "Компоненти" + +#: webform.module:546 +msgid "Add a new component" +msgstr "Додати новий компонент" + +#: webform.module:549 +msgid "Each component adds a new field to the form. Any number components (even of the same type) may be added to the form. Select a component type to add above." +msgstr "Кожен компонент додає нове поле до форми. До форми може бути додана будь-яка кількість полей для заповнення, навіть однакових." + +#: webform.module:563 +msgid "Mail Settings" +msgstr "Налаштування відправлень електропоштою" + +#: webform.module:571 +msgid "E-mail to address" +msgstr "Надіслати електропоштою на адресу" + +#: webform.module:573 +msgid "Form submissions will be e-mailed to this address. Leave blank for none." +msgstr "Результати заповнення будуть надіслані на цю електропошту. Залишіть пусте поле, щоб результати не надсилались." + +#: webform.module:577 +#: ;578 +msgid "Default" +msgstr "За стандартом" + +#: webform.module:594 +msgid "E-mail from address" +msgstr "Від кого" + +#: webform.module:597 +msgid "After adding components to this form, any email or hidden form element may be selected as the sender for e-mails." +msgstr "Після додання компонентів \"приховане поле\" або \"електропошта\", можна зробити вміст доданих полей адресатом надісланого листа." + +#: webform.module:603 +msgid "E-mail subject" +msgstr "Тема листа" + +#: webform.module:606 +msgid "After adding components to this form, any textfield or hidden form element may be selected as the subject line for e-mails." +msgstr "Після додання компонентів \"приховане поле\" або \"текстове поле\", можна зробити вміст доданих полей темою надісланого листа." + +#: webform.module:616 +msgid "Advanced Settings" +msgstr "Розширені налаштування" + +#: webform.module:624 +msgid "Limit the number of submissions a user may send within a specified time period" +msgstr "Обмежити кількість заповнень, які користувач може надіслати за означений період часу" + +#: webform.module:643 +msgid "Limit to " +msgstr "Обмежити до " + +#: webform.module:651 +msgid "submission(s)" +msgstr "заповнень" + +#: webform.module:662 +msgid "ever" +msgstr "кожен (період часу)" + +#: webform.module:663 +msgid "every hour" +msgstr "щогодини" + +#: webform.module:664 +msgid "every day" +msgstr "щодня" + +#: webform.module:665 +msgid "every week" +msgstr "щотижня" + +#: webform.module:677 +msgid "Enter PHP code to perform additional validation for this form. Include the <?php ?> tags. $form_id and $form_values are available variables. If validation fails, use the form_set_error function to prevent the form from being submitted. Use the same syntax as a _validate function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Використати php для додаткової обробки. Ввімкніть <?php ?> в код. Доступні оператори: $form_id и $form_values" + +#: webform.module:686 +msgid "Enter PHP code to perform additional processing for this form (after the validation). Include the <?php ?> tags. $form_id and $form_values are available variables, use the same syntax as a _submit function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "Використовувати php для додаткової обробки. Ввімкніть <?php ?> в код. Доступні оператори: $form_id та $form_values" + +#: webform.module:705 +msgid "Redirect POST Values" +msgstr "Перенаправляти POST - запити" + +#: webform.module:706 +msgid "Forward the contents of the POST array to the redirect URL. Use this option for custom processing of the form information. No processing will be done by webform. The confirmation option above MUST be a full redirect URL for this option to have an effect." +msgstr "Перенаправляти POST - запити" + +#: webform.module:778 +msgid "Type" +msgstr "Тип" + +#: webform.module:779 +#: components/markup.inc:16 +msgid "Value" +msgstr "Значення" + +#: webform.module:780 +#: ;876 +msgid "Mandatory" +msgstr "Обов'язкове поле" + +#: webform.module:781 +#: ;902 +msgid "Weight" +msgstr "Вага" + +#: webform.module:800 +msgid "Component not found" +msgstr "Компонент не знайдено" + +#: webform.module:840 +msgid "Field Details" +msgstr "Деталі" + +#: webform.module:860 +msgid "Name of the field. This is used as a descriptive label and as the key when saving data in the database." +msgstr "Им'я поля. Використовується для показу користувачам та при зберіганні у БД." + +#: webform.module:869 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "Короткий опис/підказка користувачеві, як заповнити це поле." + +#: webform.module:878 +msgid "Check this option if the user must enter a value." +msgstr "Поставте хрестик, якщо користувач зобов'язаний ввести значення." + +#: webform.module:891 +msgid "Parent Fieldset" +msgstr "Батьки поля" + +#: webform.module:893 +msgid "Optional. You may organize your form by placing this component inside another fieldset." +msgstr "Опціонально. Ви можете об'єднувати компоненти в логічні групи" + +#: webform.module:904 +msgid "Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top." +msgstr "Опціонально. Важчі пункти потонуть до низу, легші - спливуть до верху." + +#: webform.module:916 +#: ;1084 +msgid "The webform component" +msgstr "Компонент форми" + +#: webform.module:916 +msgid " does not have an edit function defined" +msgstr " не має визначеної функції редагування" + +#: webform.module:980 +msgid "Unauthorized webform access attempt" +msgstr "Несанкціонований доступ до форми" + +#: webform.module:1084 +msgid "is not able to be displayed" +msgstr "не можна показати" + +#: webform.module:1109 +msgid "The authenticated user <a href=\"%userURL\">%username</a> attempted to submit more entries than allowed on the <a href=\"%webformURL\">%webformTitle</a> webform" +msgstr "Зареєстрований користувач<a href=\"%userURL\">%username</a> намагався надіслати форму <a href=\"%webformURL\">%webformTitle</a> більше разів, ніж це дозволено в налаштуваннях" + +#: webform.module:1117 +msgid "An anonymous user with IP address %ip attempted to submit more entries than allowed on the <a href=\"%webformURL\">%webformTitle</a> webform" +msgstr "Користувач з IP-адресою %ip намагався надіслати форму більше разів, ніж це дозволено в налаштуваннях <a href=\"%webformURL\">%webformTitle</a>" + +#: webform.module:1125 +msgid "You have submitted the maximum number of entries. Check submission guidelines." +msgstr "Ви надіслали відповідь максимально дозволену кількість разів." + +#: webform.module:1173 +msgid "Form submission from: " +msgstr "Результат заповнення від: " + +#: webform.module:1199 +msgid "Possible spam attempt from @remote_addr" +msgstr "Можлива спроба спаму з @remote_addr" + +#: webform.module:1200 +msgid "Illegal information. Data not submitted." +msgstr "Неправильна інформація. Дані не прийнято." + +#: webform.module:1217 +msgid "Submission posted to " +msgstr "Надіслано нове заповнення " + +#: webform.module:1268 +msgid "No node with the id '%nid' could be found" +msgstr "Не знайдено сторінки '%nid'" + +#: webform.module:1280 +msgid "Go back to the form" +msgstr "Повернутися до форми" + +#: webform.module:66 +msgid "create webforms" +msgstr "створити форми" + +#: webform.module:66 +msgid "edit own webforms" +msgstr "редагувати створені форми" + +#: webform.module:66 +msgid "edit webforms" +msgstr "редагувати всі форми" + +#: webform.module:66 +msgid "access webform results" +msgstr "доступ до результатів заповнення форм" + +#: webform.module:66 +msgid "clear webform results" +msgstr "видалення результатів форм" + +#: webform.module:66 +msgid "use PHP for additional processing" +msgstr "використовувати РНР для додаткової обробки" + +#: webform.install:117 +msgid "Webform module installed module tables successfully." +msgstr "Модуль форм встановлено успішно." + +#: webform.install:120 +msgid "The installation of webform module was unsuccessful." +msgstr "Модуль форм не вдалося встановити." + +#: components/date.inc:15 +#: components/hidden.inc:15 +#: components/select.inc:25 +#: components/textarea.inc:15 +#: components/textfield.inc:15 +#: components/time.inc:15 +msgid "Default value" +msgstr "Значення за стандартом" + +#: components/date.inc:17 +#: components/hidden.inc:17 +#: components/textarea.inc:17 +#: components/textfield.inc:17 +#: components/time.inc:17 +msgid "The default value of the field." +msgstr "Значення поля за стандартом." + +#: components/date.inc:17 +msgid "Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/html_node/tar_109.html\">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid." +msgstr "Можна ввести будь-яку дату в будь-якому форматі (див. приклади на <a href=\"http://www.gnu.org/software/tar/manual/html_node/tar_109.html\">GNU Date Input Format</a> ). Можна вводити, наприклад, дату, як сьогодні, +2 дні або 9 грудня 2009 року." + +#: components/date.inc:24 +#: components/time.inc:25 +msgid "Timezone" +msgstr "Часовий пояс" + +#: components/date.inc:26 +msgid "Adjust the date according to a specific timezone. Website timezone is defined in the <a href=\"%settings\">Site Settings</a> and is the default." +msgstr "Налаштування часу згідно глобальних налаштувань часових поясів сайту. Глобально час для сайту налаштовується в <a href=\"%settings\">Налаштуваннях сайту</a>." + +#: components/date.inc:32 +#: components/time.inc:33 +msgid "Observe Daylight Savings" +msgstr "Враховувати перехід на зимовий час" + +#: components/date.inc:35 +#: components/time.inc:36 +msgid "Automatically adjust the time during daylight savings." +msgstr "Автоматично виправляти час при переході на зимовий час" + +#: components/date.inc:70 +msgid "month" +msgstr "місяць" + +#: components/date.inc:70 +msgid "January" +msgstr "Січень" + +#: components/date.inc:70 +msgid "February" +msgstr "Лютий" + +#: components/date.inc:70 +msgid "March" +msgstr "Березень" + +#: components/date.inc:70 +msgid "April" +msgstr "Квітень" + +#: components/date.inc:70 +msgid "May" +msgstr "Травень" + +#: components/date.inc:70 +msgid "June" +msgstr "Червень" + +#: components/date.inc:70 +msgid "July" +msgstr "Липень" + +#: components/date.inc:70 +msgid "August" +msgstr "Серпень" + +#: components/date.inc:70 +msgid "September" +msgstr "Вересень" + +#: components/date.inc:70 +msgid "October" +msgstr "Жовтень" + +#: components/date.inc:70 +msgid "November" +msgstr "Листопад" + +#: components/date.inc:70 +msgid "December" +msgstr "Декабрь" + +#: components/date.inc:71 +msgid "day" +msgstr "день" + +#: components/date.inc:87 +#: components/time.inc:102 +msgid "This field is required." +msgstr "Обов'язкове поле." + +#: components/date.inc:126 +msgid " field required" +msgstr " обов'язково" + +#: components/date.inc:139 +msgid "Entered %name is not a valid date" +msgstr "Введено неправильне значення %name" + +#: components/date.inc:187 +msgid "Presents month, day, and year fields." +msgstr "Поля днів, місяців та років." + +#: components/date.inc:241 +#: components/email.inc:135 +#: components/file.inc:308 +#: components/textarea.inc:130 +#: components/textfield.inc:131 +#: components/time.inc:243 +msgid "Left Blank" +msgstr "Залишити пустим" + +#: components/date.inc:242 +#: components/email.inc:136 +#: components/textarea.inc:131 +#: components/textfield.inc:132 +#: components/time.inc:244 +msgid "User entered value" +msgstr "Значення для вводу користувачем" + +#: components/email.inc:15 +msgid "User email as default" +msgstr "Електропошта користувача за стандартом" + +#: components/email.inc:18 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "Встановити електропошту користувача як значення цього поля." + +#: components/email.inc:23 +msgid "CC submission to this email" +msgstr "Відправити копію на цю адресу" + +#: components/email.inc:26 +msgid "Check this option if the email specified in this component should get a CC submission." +msgstr "Відмітьте цю опцію, якщо треба відправляти на цю адресу копію заповнення опитувача." + +#: components/email.inc:27 +msgid "Note that this opens the risk that the form can be used to send emails to any address and might be missused as a spam gateway." +msgstr "Приділіть увагу! Це дозволяє використати форму для відправлення пошти на будь-яку адресу та розсилання спаму." + +#: components/email.inc:31 +#: components/textarea.inc:24 +#: components/textfield.inc:24 +msgid "Width" +msgstr "Ширина" + +#: components/email.inc:33 +#: components/textarea.inc:26 +#: components/textfield.inc:26 +msgid "Width of the textfield." +msgstr "Ширина текстового поля." + +#: components/email.inc:80 +msgid "%value is not a valid email address." +msgstr "Введено неправильну адресу: '%value'." + +#: components/email.inc:105 +msgid "A textfield that automatically fills in logged-in users e-mail." +msgstr "Поле, яке автоматично заповнюється адресою електропошти зареєстрованого користувача." + +#: components/email.inc:137 +#: components/hidden.inc:101 +#: components/textarea.inc:132 +#: components/textfield.inc:133 +msgid "Average submission length in words (ex blanks)" +msgstr "Середній розмір заповнення (слів за виключенням пробілів)" + +#: components/fieldset.inc:15 +msgid "Collapsible" +msgstr "Можна згорнути" + +#: components/fieldset.inc:17 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "Якщо відмічено, ці поля можна згортати або розгортати натисненням на посилання у заголовку набора" + +#: components/fieldset.inc:22 +msgid "Collapsed by Default" +msgstr "Згорнуте за стандартом" + +#: components/fieldset.inc:24 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "Набори розгорнуті за стандартом. Поставте хрестик тут, для того, щоб набори були згорнуті за стандартом." + +#: components/fieldset.inc:74 +msgid "Fieldsets allow you to organize complex webforms into groups of fields." +msgstr "Набори полів допомогають логічно групувати поля." + +#: components/file.inc:18 +msgid "Select the types of uploads you would like to allow." +msgstr "Оберіть тип файлів, які ви хочете дозволити." + +#: components/file.inc:22 +msgid "Web Images" +msgstr "Малюнки та фото для Інтернету" + +#: components/file.inc:28 +msgid "Desktop Images" +msgstr "Великі малюнки" + +#: components/file.inc:34 +msgid "Documents" +msgstr "Документи" + +#: components/file.inc:40 +msgid "Media" +msgstr "Мультимедійні файли" + +#: components/file.inc:46 +msgid "Archives" +msgstr "Архіви" + +#: components/file.inc:52 +msgid "Additional Extensions" +msgstr "Інші файли" + +#: components/file.inc:54 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "Уведіть перелік через кому розширень файлів, які можна завантажити. Вони будуть додані до попередньо наведеного переліку." + +#: components/file.inc:61 +msgid "Max Upload Size" +msgstr "Макс. розмір файлу" + +#: components/file.inc:63 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "Введіть максимально дозволений розмір файла (в КБ)" + +#: components/file.inc:70 +msgid "Upload Directory" +msgstr "Каталог для розміщення файлів" + +#: components/file.inc:72 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "Файли форми завжди зберігаються в каталозі /files/ Вашого сайту. Ви можете вказати каталог усередині /files/ для того, щоб відділити файли опитувача від інших." + +#: components/file.inc:154 +msgid "Category" +msgstr "Категорія" + +#: components/file.inc:154 +msgid "Types" +msgstr "Типи" + +#: components/file.inc:198 +msgid "%field field is required." +msgstr "Треба вказати %field." + +#: components/file.inc:231 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "Файли з розширенням '%ext' не можна завантажувати, будь ласка, завантажуйте файли з дозволеними розширеннями: %exts ." + +#: components/file.inc:236 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "Файл '%filename' надто великий (%filesize KB). Будь ласка, завантажуйте файли розміром %maxsize KB або менше." + +#: components/file.inc:253 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "Файл %filename не вдалося завантажити. Каталог призначення зачинений для запису." + +#: components/file.inc:259 +msgid "The uploaded file %filename was unable to be saved. The destination directory does not exist." +msgstr "Файл %filename не вдалося завантажити. Каталог призначення відсутній або не визначений в налаштуваннях." + +#: components/file.inc:309 +msgid "User uploaded file" +msgstr "Файли, завантажені користувачами" + +#: components/file.inc:310 +msgid "Average uploaded file size" +msgstr "Середній розмір завантажених файлів" + +#: components/hidden.inc:69 +msgid "Create a field which is not visible to the user, but is recorded with the submission." +msgstr "Створює приховане від користувача поле, яке надсилається з заповненням." + +#: components/hidden.inc:99 +msgid "Empty" +msgstr "Пусте" + +#: components/hidden.inc:100 +msgid "Non-empty" +msgstr "Не пусте" + +#: components/markup.inc:18 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "Розмітка - дозволено HTML або PHP у цьому полі." + +#: components/markup.inc:73 +msgid "Presents a markup area of text. Does not render a field." +msgstr "Поле для розмітки. Лише для оформленняі." + +#: components/select.inc:15 +msgid "Options" +msgstr "Варіанти" + +#: components/select.inc:17 +msgid "A list of selectable options. One option per line." +msgstr "Перелік опцій для обирання. Одне значення у рядку." + +#: components/select.inc:27 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "Значення поля за стандартом. Для кількох значень, розділяйте їх комами." + +#: components/select.inc:34 +msgid "Multiple" +msgstr "Багатоваріантний вибір" + +#: components/select.inc:37 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "Оберіть цю опцію для дозволу на вибір кількох значень." + +#: components/select.inc:41 +msgid "Listbox" +msgstr "Перелік" + +#: components/select.inc:44 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "Оберіть цю опцію для показу переліку." + +#: components/select.inc:219 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "Дозволяє створювати хрестики, перемикачі, перелік." + +#: components/textarea.inc:32 +msgid "Height" +msgstr "Висота" + +#: components/textarea.inc:34 +msgid "Height of the textfield." +msgstr "Висота текстового поля (в рядках)." + +#: components/textarea.inc:40 +#: components/textfield.inc:42 +msgid "Disabled" +msgstr "Вимкнено" + +#: components/textarea.inc:42 +#: components/textfield.inc:44 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "Заборонити редагування. Корисно для встановлення значення за стандартом." + +#: components/textarea.inc:100 +msgid "A large text area that allows for multiple lines of input." +msgstr "Велике текстове поле, яке дозволяє ввод у кілька рядків." + +#: components/textfield.inc:33 +msgid "Maxlength" +msgstr "Максимальна довжина" + +#: components/textfield.inc:35 +msgid "Maxlength of the textfield." +msgstr "Максимальна довжина поля." + +#: components/textfield.inc:101 +msgid "Basic textfield type." +msgstr "Базове текстове поле." + +#: components/time.inc:17 +msgid "Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/html_node/tar_109.html\">GNU Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are all valid." +msgstr "Можна ввести будь-який час в будь-якому форматі (див. приклади на <a href=\"http://www.gnu.org/software/tar/manual/html_node/tar_109.html\">GNU Date Input Format</a> ). Можна вводити, наприклад, як сьогодні, +2 дні або 9 грудня 2009 року." + +#: components/time.inc:27 +msgid "Adjust the time according to a specific timezone. Website timezone is defined in the <a href=\"%settings\">Site Settings</a> and is the default." +msgstr "Налаштування часу згідно глобальних налаштувань часових поясів сайту. Глобально час для сайту налаштовується в <a href=\"%settings\">Налаштуваннях сайту</a>." + +#: components/time.inc:41 +msgid "Time Format" +msgstr "Формат часу" + +#: components/time.inc:43 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "Формат відбраження часу: 24-годинний или 12-годинний." + +#: components/time.inc:88 +msgid "hour" +msgstr "година" + +#: components/time.inc:89 +msgid "minute" +msgstr "хвилина" + +#: components/time.inc:92 +msgid "am" +msgstr "am" + +#: components/time.inc:92 +msgid "pm" +msgstr "pm" + +#: components/time.inc:135 +msgid " field is required" +msgstr " обов'язкове поле" + +#: components/time.inc:193 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "Поля для вводу часу в форматі \"години\" та \"хвилини\". Додатково можна ввести am/pm значення для часу." + diff --git a/sites/all/modules/webform/translations/webform.pot b/sites/all/modules/webform/translations/webform.pot new file mode 100644 index 0000000000000000000000000000000000000000..a7929eda6bcf9a2fdad693d2ffb0d1f899b09e8e --- /dev/null +++ b/sites/all/modules/webform/translations/webform.pot @@ -0,0 +1,1520 @@ +# $Id: webform.pot,v 1.4 2011/01/05 04:39:01 quicksketch Exp $ +# +# LANGUAGE translation of Drupal (general) +# Copyright YEAR NAME <EMAIL@ADDRESS> +# Generated from files: +# webform-confirmation.tpl.php,v 1.1.2.3 2009/01/09 08:31:06 quicksketch +# webform_report.inc,v 1.17.2.14 2009/02/14 03:19:01 quicksketch +# webform-mail.tpl.php,v 1.1.2.4 2009/01/19 03:31:10 quicksketch +# webform_components.inc,v 1.9.2.28 2009/02/14 19:57:38 quicksketch +# webform.module,v 1.124.2.94 2009/02/14 08:18:14 quicksketch +# file.inc,v 1.4.2.32 2009/02/14 07:19:32 quicksketch +# markup.inc,v 1.5.2.7 2009/01/09 08:31:06 quicksketch +# webform_submissions.inc,v 1.6.2.23 2009/02/14 06:26:23 quicksketch +# webform_export.inc,v 1.1.4.5 2009/02/14 01:03:37 quicksketch +# webform.info: n/a +# webform.install,v 1.22.2.16 2009/01/19 03:00:11 quicksketch +# date.inc,v 1.15.2.17 2009/01/10 02:12:14 quicksketch +# email.inc,v 1.19.2.11 2009/01/11 03:01:48 quicksketch +# hidden.inc,v 1.12.2.10 2009/01/09 08:31:06 quicksketch +# select.inc,v 1.22.2.28 2009/02/15 23:51:36 quicksketch +# textarea.inc,v 1.12.2.12 2009/02/14 20:08:26 quicksketch +# textfield.inc,v 1.12.2.9 2009/01/11 03:01:47 quicksketch +# time.inc,v 1.16.2.9 2009/01/09 08:31:06 quicksketch +# fieldset.inc,v 1.4.2.7 2009/01/09 08:31:06 quicksketch +# grid.inc,v 1.3.2.17 2009/01/11 02:51:47 quicksketch +# pagebreak.inc,v 1.3.2.4 2009/01/09 08:31:06 quicksketch +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"POT-Creation-Date: 2009-02-22 02:02+0100\n" +"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n" +"Last-Translator: NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: webform-confirmation.tpl.php:23 webform_report.inc:154 +msgid "Go back to the form" +msgstr "" + +#: webform-mail.tpl.php:26 +msgid "Submitted on @date" +msgstr "" + +#: webform-mail.tpl.php:29 +msgid "Submitted by user: @username [@ip_address]" +msgstr "" + +#: webform-mail.tpl.php:31 +msgid "Submitted by anonymous user: [@ip_address]" +msgstr "" + +#: webform-mail.tpl.php:35 +msgid "Submitted values are" +msgstr "" + +#: webform-mail.tpl.php:44 +msgid "The results of this submission may be viewed at:" +msgstr "" + +#: webform_components.inc:44;135;364 +msgid "Weight" +msgstr "" + +#: webform_components.inc:49;135;329 +msgid "Mandatory" +msgstr "" + +#: webform_components.inc:55;135 +msgid "E-mail" +msgstr "" + +#: webform_components.inc:97;235;261 +msgid "Add" +msgstr "" + +#: webform_components.inc:103;397 webform.module:1531;1548;1669 +msgid "Submit" +msgstr "" + +#: webform_components.inc:109;255 +msgid "Publish" +msgstr "" + +#: webform_components.inc:135 webform.module:889;1362 components/file.inc:556 +msgid "Name" +msgstr "" + +#: webform_components.inc:135 webform.module:890 +msgid "Type" +msgstr "" + +#: webform_components.inc:135 components/markup.inc:39 +msgid "Value" +msgstr "" + +#: webform_components.inc:135 webform_report.inc:99 webform.module:2195 +msgid "Operations" +msgstr "" + +#: webform_components.inc:140 +msgid "New component name" +msgstr "" + +#: webform_components.inc:196 webform_report.inc:137 webform.module:2206;233 +msgid "Edit" +msgstr "" + +#: webform_components.inc:197 +msgid "Clone" +msgstr "" + +#: webform_components.inc:198;487 webform_report.inc:138 webform_submissions.inc:105 webform.module:243 +msgid "Delete" +msgstr "" + +#: webform_components.inc:220 +msgid "No Components, add a component below." +msgstr "" + +#: webform_components.inc:236 +msgid "When adding a new component, the name field is required." +msgstr "" + +#: webform_components.inc:258 +msgid "Your webform has been published." +msgstr "" + +#: webform_components.inc:266 +msgid "The component positions and mandatory values have been updated." +msgstr "" + +#: webform_components.inc:271 +msgid "Edit component: @name (@type)" +msgstr "" + +#: webform_components.inc:297 +msgid "Label" +msgstr "" + +#: webform_components.inc:298 +msgid "This is used as a descriptive label when displaying this form element." +msgstr "" + +#: webform_components.inc:306 webform.module:663;1362 +msgid "Description" +msgstr "" + +#: webform_components.inc:307 +msgid "A short description of the field used as help for the user when he/she uses the form." +msgstr "" + +#: webform_components.inc:313 +msgid "Advanced settings" +msgstr "" + +#: webform_components.inc:322 +msgid "Field Key" +msgstr "" + +#: webform_components.inc:323 +msgid "Enter a machine readable key for this form element. May contain only lowercase alphanumeric characters and underscores. This key will be used as the name attribute of the form element. This value has no effect on the way data is saved, but may be helpful if using Additional Processing or Validation code." +msgstr "" + +#: webform_components.inc:331 +msgid "Check this option if the user must enter a value." +msgstr "" + +#: webform_components.inc:337 +msgid "Include in e-mails" +msgstr "" + +#: webform_components.inc:339 +msgid "If checked, submitted values from this component will be included in e-mails." +msgstr "" + +#: webform_components.inc:345 +msgid "Root" +msgstr "" + +#: webform_components.inc:353 +msgid "Parent Fieldset" +msgstr "" + +#: webform_components.inc:355 +msgid "Optional. You may organize your form by placing this component inside another fieldset." +msgstr "" + +#: webform_components.inc:366 +msgid "Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top." +msgstr "" + +#: webform_components.inc:378 +msgid "The webform component of type @type does not have an edit function defined." +msgstr "" + +#: webform_components.inc:411 +msgid "The field key %field_key is invalid. Please include only lowercase alphanumeric characters and underscores." +msgstr "" + +#: webform_components.inc:416 +msgid "The field key %field_key is already in use by the field labeled %existing_field. Please use a unique key." +msgstr "" + +#: webform_components.inc:450 +msgid "Component %name cloned." +msgstr "" + +#: webform_components.inc:454 +msgid "Component %name updated." +msgstr "" + +#: webform_components.inc:458 +msgid "New component %name added." +msgstr "" + +#: webform_components.inc:479 +msgid "Delete the %name fieldset?" +msgstr "" + +#: webform_components.inc:480 +msgid "This will immediately delete the %name fieldset and all children elements within %name from the %webform webform. This cannot be undone." +msgstr "" + +#: webform_components.inc:483 +msgid "Delete the %name component?" +msgstr "" + +#: webform_components.inc:484 +msgid "This will immediately delete the %name component from the %webform webform. This cannot be undone." +msgstr "" + +#: webform_components.inc:491 +msgid "Component %name deleted." +msgstr "" + +#: webform_export.inc:21 +msgid "Delimited text" +msgstr "" + +#: webform_export.inc:22 +msgid "A plain text file delimited by commas, tabs, or other characters." +msgstr "" + +#: webform_export.inc:26 +msgid "Microsoft Excel" +msgstr "" + +#: webform_export.inc:27 +msgid "A file readable by Microsoft Excel." +msgstr "" + +#: webform_report.inc:28 +msgid "Submissions for %user" +msgstr "" + +#: webform_report.inc:58 +msgid "All" +msgstr "" + +#: webform_report.inc:71 +msgid "Show !count results per page." +msgstr "" + +#: webform_report.inc:74 +msgid "Showing all results." +msgstr "" + +#: webform_report.inc:77 +msgid "@total results total." +msgstr "" + +#: webform_report.inc:92;187 +msgid "#" +msgstr "" + +#: webform_report.inc:93;188 +msgid "Submitted" +msgstr "" + +#: webform_report.inc:96;189 +msgid "User" +msgstr "" + +#: webform_report.inc:97;190;398 +msgid "IP Address" +msgstr "" + +#: webform_report.inc:135 webform.module:2194;223 +msgid "View" +msgstr "" + +#: webform_report.inc:147;248;491 +msgid "There are no submissions for this form. <a href=\"!url\">View this form</a>." +msgstr "" + +#: webform_report.inc:279 +msgid "Clear Form Submissions" +msgstr "" + +#: webform_report.inc:283 +msgid "Are you sure you want to delete all submissions for this form?" +msgstr "" + +#: webform_report.inc:285 webform.module:2207;193 +msgid "Clear" +msgstr "" + +#: webform_report.inc:285 webform_submissions.inc:105 +msgid "Cancel" +msgstr "" + +#: webform_report.inc:293 +msgid "Webform %title entries cleared." +msgstr "" + +#: webform_report.inc:314 +msgid "Export format" +msgstr "" + +#: webform_report.inc:321 +msgid "Delimited text format" +msgstr "" + +#: webform_report.inc:322 webform.module:1313 +msgid "This is the delimiter used in the CSV/TSV file when downloading Webform results. Using tabs in the export is the most reliable method for preserving non-latin characters. You may want to change this to another character depending on the program with which you anticipate importing results." +msgstr "" + +#: webform_report.inc:325 webform.module:1316 +msgid "Comma (,)" +msgstr "" + +#: webform_report.inc:326 webform.module:1317 +msgid "Tab (\\t)" +msgstr "" + +#: webform_report.inc:327 webform.module:1318 +msgid "Semicolon (;)" +msgstr "" + +#: webform_report.inc:328 webform.module:1319 +msgid "Colon (:)" +msgstr "" + +#: webform_report.inc:329 webform.module:1320 +msgid "Pipe (|)" +msgstr "" + +#: webform_report.inc:330 webform.module:1321 +msgid "Period (.)" +msgstr "" + +#: webform_report.inc:331 webform.module:1322 +msgid "Space ( )" +msgstr "" + +#: webform_report.inc:337 webform.module:2205;183 +msgid "Download" +msgstr "" + +#: webform_report.inc:397 +msgid "Submission Details" +msgstr "" + +#: webform_report.inc:398 +msgid "Serial" +msgstr "" + +#: webform_report.inc:398 +msgid "SID" +msgstr "" + +#: webform_report.inc:398 +msgid "Time" +msgstr "" + +#: webform_report.inc:398 +msgid "UID" +msgstr "" + +#: webform_report.inc:398 +msgid "Username" +msgstr "" + +#: webform_report.inc:470 +msgid "Q" +msgstr "" + +#: webform_report.inc:471 +msgid "responses" +msgstr "" + +#: webform_submissions.inc:98 +msgid "Delete Form Submission" +msgstr "" + +#: webform_submissions.inc:103 +msgid "Are you sure you want to delete this submission?" +msgstr "" + +#: webform_submissions.inc:110 +msgid "Submission deleted." +msgstr "" + +#: webform.module:22 +msgid "Webforms are forms and questionnaires. To add one, select <a href=\"!url\">Create content -> Webform</a>." +msgstr "" + +#: webform.module:25 +msgid "<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p>\n <p>Here is how to create one:</p>\n <ul>\n <li>Go to Create Content and add a webform</li>\n <li>Add a description to be displayed as a teaser and above the actual form.</li>\n <li>Add a confirmation message or redirect node that is to be displayed after successful submission.</li>\n <li>Add one or more components to your form.</li>\n <li>Optionally add an e-mail address to which submissions will be sent. If no email address is specified, no e-mail will be sent when submissions are made through the form.</li>\n <li>Optionally select an e-mail (or hidden) component that will be used to populate the return e-mail address on any sent e-mail.</li>\n <li>Optionally select a textfield (or hidden) component that will be used to populate the subject e-mail field on any sent e-mail.</li>\n </ul>\n <p>Help on adding and configuring the components will be shown after you add your first component.</p>\n <p>The content of submitted forms is stored in the database table <i>webform_submitted_data</i> as key-value pairs.</p>\n " +msgstr "" + +#: webform.module:41 +msgid "A webform can be a questionnaires, contact or request forms. It can be used to let visitors make contact, register for a event or to enable a complex survey." +msgstr "" + +#: webform.module:44 +msgid "This page displays all the components currently configured for this webform node. You may add any number of components to the form, even multiple of the same type. To add a new component, fill in a name and select a type from the fields at the bottom of the table. Submit the form to create the new component or update any changed form values." +msgstr "" + +#: webform.module:45 +msgid "Click on any existing component's name to edit its settings." +msgstr "" + +#: webform.module:74 +msgid "View and edit all the available webforms on your site." +msgstr "" + +#: webform.module:85 +msgid "Global configuration of webform functionality." +msgstr "" + +#: webform.module:416;80 webform.info:0 +msgid "Webform" +msgstr "" + +#: webform.module:418 +msgid "Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users." +msgstr "" + +#: webform.module:604 +msgid "Go to form" +msgstr "" + +#: webform.module:606 +msgid "View this form." +msgstr "" + +#: webform.module:645 +msgid "Webform Settings" +msgstr "" + +#: webform.module:654;2193 +msgid "Title" +msgstr "" + +#: webform.module:664 +msgid "Text to be shown as teaser and before the form." +msgstr "" + +#: webform.module:673 +msgid "Confirmation message or redirect URL" +msgstr "" + +#: webform.module:674 +msgid "Message to be shown upon successful submission or a path to a redirect page. Preface message with <em>message:</em> for a simple message that does not require a page refresh. Redirect pages must start with <em>http://</em> for external sites or <em>internal:</em> for an internal path. i.e. <em>http://www.example.com</em> or <em>internal:node/10</em>" +msgstr "" + +#: webform.module:686 +msgid "Webform access control" +msgstr "" + +#: webform.module:691 +msgid "These permissions affect which roles can submit this webform. It does not prevent access to the webform page. If needing to prevent access to the webform page entirely, use a content access module such as <a href=\"http://drupal.org/project/taxonomy_access\">Taxonomy Access</a> or <a href=\"http://drupal.org/project/node_privacy_byrole\">Node Privacy by Role</a>." +msgstr "" + +#: webform.module:699 +msgid "Roles that can submit this webform" +msgstr "" + +#: webform.module:700 +msgid "Uncheck all roles to prevent new submissions. The %authenticated role applies to any user signed into the site, regardless of other assigned roles." +msgstr "" + +#: webform.module:707 +msgid "Webform mail settings" +msgstr "" + +#: webform.module:717 +msgid "E-mail to address" +msgstr "" + +#: webform.module:720 +msgid "Form submissions will be e-mailed to this address. Leave blank for none. Multiple e-mail addresses may be separated by commas." +msgstr "" + +#: webform.module:728 +msgid "Conditional e-mail recipients" +msgstr "" + +#: webform.module:729 +msgid "The settings below allow you to send e-mails to multiple recipients based off the value of a component." +msgstr "" + +#: webform.module:753 +msgid "E-mail from name" +msgstr "" + +#: webform.module:754 +msgid "After adding components to this form any email, select, or hidden form element may be selected as the sender's name for e-mails." +msgstr "" + +#: webform.module:758 +msgid "E-mail from address" +msgstr "" + +#: webform.module:759 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the sender's e-mail address." +msgstr "" + +#: webform.module:763 +msgid "E-mail subject" +msgstr "" + +#: webform.module:764 +msgid "After adding components to this form any textfield, select, or hidden form element may be selected as the subject for e-mails." +msgstr "" + +#: webform.module:799 +msgid "Webform advanced settings" +msgstr "" + +#: webform.module:807 +msgid "Show complete form in teaser" +msgstr "" + +#: webform.module:809 +msgid "Display the entire form in the teaser display of this node." +msgstr "" + +#: webform.module:813 +msgid "Limit the number of submissions a user may send within a specified time period" +msgstr "" + +#: webform.module:818 +msgid "Unlimited" +msgstr "" + +#: webform.module:832 +msgid "ever" +msgstr "" + +#: webform.module:833 +msgid "every hour" +msgstr "" + +#: webform.module:834 +msgid "every day" +msgstr "" + +#: webform.module:835 +msgid "every week" +msgstr "" + +#: webform.module:842 +msgid "Submit button text" +msgstr "" + +#: webform.module:844 +msgid "By default the submit button on this form will have the label <em>Submit</em>. Enter a new title here to override the default." +msgstr "" + +#: webform.module:849 +msgid "Additional Validation" +msgstr "" + +#: webform.module:850 +msgid "Enter PHP code to perform additional validation for this form. Include the <?php ?> tags. $form and $form_state are available variables. If validation fails, use the form_set_error function to prevent the form from being submitted. Use the same syntax as a _validate function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "" + +#: webform.module:858 +msgid "Additional Processing" +msgstr "" + +#: webform.module:859 +msgid "Enter PHP code to perform additional processing for this form (after the validation). Include the <?php ?> tags. $form and $form_state are available variables, use the same syntax as a _submit function used in the <a href=\"http://api.drupal.org/api/file/developer/topics/forms_api.html\">Forms API</a>." +msgstr "" + +#: webform.module:888 +msgid "To" +msgstr "" + +#: webform.module:903 +msgid "No components yet in this webform." +msgstr "" + +#: webform.module:918 +msgid "Custom" +msgstr "" + +#: webform.module:918 +msgid "Component" +msgstr "" + +#: webform.module:929 +msgid "Default" +msgstr "" + +#: webform.module:950 +msgid "Limit to !count submission(s) !timespan" +msgstr "" + +#: webform.module:963;970 +msgid "The entered email address %address is not a valid address." +msgstr "" + +#: webform.module:1044 +msgid "The new webform %title has been created. Add new fields to your webform with the form below." +msgstr "" + +#: webform.module:1047 +msgid "This webform is currently unpublished. After finishing your changes to the webform, use the <em>Publish</em> button below." +msgstr "" + +#: webform.module:1184 +msgid "Submissions for this form are closed." +msgstr "" + +#: webform.module:1188 +msgid "You must <a href=\"!login\">login</a> or <a href=\"!register\">register</a> to view this form." +msgstr "" + +#: webform.module:1192 +msgid "You do not have permission to view this form." +msgstr "" + +#: webform.module:1199 +msgid "You have submitted this form the maximum number of times (@count)." +msgstr "" + +#: webform.module:1202;1213 +msgid "You have already submitted this form." +msgstr "" + +#: webform.module:1205 +msgid "You may not submit another entry at this time." +msgstr "" + +#: webform.module:1213;1216 +msgid "<a href=\"!url\">View your previous submissions</a>." +msgstr "" + +#: webform.module:1242 +msgid "Available components" +msgstr "" + +#: webform.module:1245 +msgid "These are the available field types for your installation of Webform. You may disable any of these components by unchecking its corresponding box. Only checked components will be available in existing or new webforms." +msgstr "" + +#: webform.module:1262 +msgid "Default e-mail values" +msgstr "" + +#: webform.module:1269 +msgid "From address" +msgstr "" + +#: webform.module:1271 +msgid "The default sender address for emailed webform results; often the e-mail address of the maintainer of your forms." +msgstr "" + +#: webform.module:1276 +msgid "From name" +msgstr "" + +#: webform.module:1278 +msgid "The default sender name which is used along with the default from address." +msgstr "" + +#: webform.module:1283 +msgid "Default subject" +msgstr "" + +#: webform.module:1284;2244 +msgid "Form submission from: %title" +msgstr "" + +#: webform.module:1285 +msgid "The default subject line of any e-mailed results." +msgstr "" + +#: webform.module:1290 +msgid "Advanced options" +msgstr "" + +#: webform.module:1298 +msgid "Allow cookies for tracking submissions" +msgstr "" + +#: webform.module:1300 +msgid "<a href=\"http://www.wikipedia.org/wiki/HTTP_cookie\">Cookies</a> can be used to help prevent the same user from repeatedly submitting a webform. This feature is not needed for limiting submissions per user, though it can increase accuracy in some situations. Besides cookies, Webform also uses IP addresses and site usernames to prevent repeated submissions." +msgstr "" + +#: webform.module:1305 +msgid "Default export format" +msgstr "" + +#: webform.module:1312 +msgid "Default export delimiter" +msgstr "" + +#: webform.module:1328 +msgid "Submission access control" +msgstr "" + +#: webform.module:1330 +msgid "Select the user roles that may submit each individual webform" +msgstr "" + +#: webform.module:1331 +msgid "Disable Webform submission access control" +msgstr "" + +#: webform.module:1334 +msgid "By default, the configuration form for each webform allows the administrator to choose which roles may submit the form. You may want to allow users to always submit the form if you are using a separate node access module to control access to webform nodes themselves." +msgstr "" + +#: webform.module:1339 +msgid "Webforms debug" +msgstr "" + +#: webform.module:1341 +msgid "Off" +msgstr "" + +#: webform.module:1341 +msgid "Log submissions" +msgstr "" + +#: webform.module:1341 +msgid "Full debug" +msgstr "" + +#: webform.module:1342 +msgid "Set to \"Log submissions\" to log all submissions in the watchdog. Set to \"Full debug\" to print debug info on submission." +msgstr "" + +#: webform.module:1362 +msgid "Enabled" +msgstr "" + +#: webform.module:1401 +msgid "Submission #@sid" +msgstr "" + +#: webform.module:1421;1421 +msgid "Previous submission" +msgstr "" + +#: webform.module:1424;1424 +msgid "Next submission" +msgstr "" + +#: webform.module:1428 +msgid "Submission Information" +msgstr "" + +#: webform.module:1437 +msgid "Form: !form" +msgstr "" + +#: webform.module:1440 +msgid "Submitted by !name" +msgstr "" + +#: webform.module:1485 +msgid "Next Page >" +msgstr "" + +#: webform.module:1486 +msgid "< Previous Page" +msgstr "" + +#: webform.module:1631 +msgid "The webform component @type is not able to be displayed" +msgstr "" + +#: webform.module:1840 +msgid "Illegal information. Data not submitted." +msgstr "" + +#: webform.module:1878 +msgid "Submission posted to %title. <a href=\"!url\">Results</a>. !details" +msgstr "" + +#: webform.module:1883 +msgid "Submission updated." +msgstr "" + +#: webform.module:1986 +msgid "Thank you, your submission has been received." +msgstr "" + +#: webform.module:2202;153;205 +msgid "Submissions" +msgstr "" + +#: webform.module:2203;163 +msgid "Analysis" +msgstr "" + +#: webform.module:2204;173 +msgid "Table" +msgstr "" + +#: webform.module:2256;2257;2258;2259;2260;2263 +msgid "key" +msgstr "" + +#: webform.module:2267 +msgid "You may use special tokens in this field that will be replaced with dynamic values." +msgstr "" + +#: webform.module:2269 +msgid "You can use %server[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.server\">$_SERVER</a> variables, %session[key] to add any of the special PHP <a href=\"http://www.php.net/reserved.variables#reserved.variables.session\">$_SESSION</a> variables and %get[key] to create prefilled forms from the <a href=\"http://www.php.net/reserved.variables#reserved.variables.get\">URL</a>. %cookie, %request and %post also work with their respective PHP variables. For example %server[HTTP_USER_AGENT], %session[id], or %get[q]." +msgstr "" + +#: webform.module:2271 +msgid "If you are using the profiles module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city]." +msgstr "" + +#: webform.module:2275 +msgid "Token values" +msgstr "" + +#: webform.module:323 +msgid "create webforms" +msgstr "" + +#: webform.module:323 +msgid "edit own webforms" +msgstr "" + +#: webform.module:323 +msgid "edit webforms" +msgstr "" + +#: webform.module:323 +msgid "access webform results" +msgstr "" + +#: webform.module:323 +msgid "clear webform results" +msgstr "" + +#: webform.module:323 +msgid "access own webform submissions" +msgstr "" + +#: webform.module:323 +msgid "edit own webform submissions" +msgstr "" + +#: webform.module:323 +msgid "edit webform submissions" +msgstr "" + +#: webform.module:323 +msgid "use PHP for additional processing" +msgstr "" + +#: webform.module:70 +msgid "Webforms" +msgstr "" + +#: webform.module:91 +msgid "Webform confirmation" +msgstr "" + +#: webform.module:100 +msgid "Configuration" +msgstr "" + +#: webform.module:108 +msgid "Form components" +msgstr "" + +#: webform.module:143 +msgid "Results" +msgstr "" + +#: webform.module:214 +msgid "Webform submission" +msgstr "" + +#: webform.module:0 +msgid "webform" +msgstr "" + +#: webform.install:16 +msgid "Table for storing additional properties for webform nodes." +msgstr "" + +#: webform.install:19;92;195;230 +msgid "The node identifier of a webform" +msgstr "" + +#: webform.install:25 +msgid "The confirmation message or URL displayed to the user after submitting a form." +msgstr "" + +#: webform.install:30 +msgid "Boolean value for whether the entire form should be displayed on the teaser." +msgstr "" + +#: webform.install:37 +msgid "The title of the submit button on the form." +msgstr "" + +#: webform.install:42 +msgid "The number of submissions a single user is allowed to submit within an interval. -1 is unlimited." +msgstr "" + +#: webform.install:49 +msgid "The amount of time in seconds that must pass before a user can submit another submission within the set limit." +msgstr "" + +#: webform.install:55 +msgid "The primary e-mail address for receiving submission results." +msgstr "" + +#: webform.install:60 +msgid "The name of the sender in sent submission e-mails." +msgstr "" + +#: webform.install:65 +msgid "The address of the sender in sent submission e-mails." +msgstr "" + +#: webform.install:70 +msgid "The subject of sent submission e-mails" +msgstr "" + +#: webform.install:75 +msgid "PHP code for additional functionality when validating a form." +msgstr "" + +#: webform.install:80 +msgid "PHP code for additional functionality when submitting a form." +msgstr "" + +#: webform.install:89 +msgid "Stores information about components for webform nodes." +msgstr "" + +#: webform.install:99;244 +msgid "The identifier for this component within this node, starts at 0 for each node." +msgstr "" + +#: webform.install:107 +msgid "If this component has a parent fieldset, the cid of that component." +msgstr "" + +#: webform.install:115 +msgid "When the form is displayed and processed, this key can be used to reference the results." +msgstr "" + +#: webform.install:120 +msgid "The label for this component." +msgstr "" + +#: webform.install:125 +msgid "The field type of this component (textfield, select, hidden, etc.)." +msgstr "" + +#: webform.install:130 +msgid "The default value of the component when displayed to the end-user." +msgstr "" + +#: webform.install:135 +msgid "Additional information unique to the display or processing of this component." +msgstr "" + +#: webform.install:140 +msgid "Boolean flag for if this component is required." +msgstr "" + +#: webform.install:147 +msgid "Boolean flag for if submitted values for this component will be included in sent e-mails." +msgstr "" + +#: webform.install:154 +msgid "Determines the position of this component in the form." +msgstr "" + +#: webform.install:165;862 +msgid "Holds access information regarding which roles are allowed to submit which webform nodes. Does not prevent access to the webform node entirely, use the {node_access} table for that purpose." +msgstr "" + +#: webform.install:168;865 +msgid "The node identifier of a webform." +msgstr "" + +#: webform.install:175;872 +msgid "The role identifier." +msgstr "" + +#: webform.install:186 +msgid "Holds general information about submissions outside of field values." +msgstr "" + +#: webform.install:189;237 +msgid "The unique identifier for this submission." +msgstr "" + +#: webform.install:202 +msgid "The id of the user that completed this submission." +msgstr "" + +#: webform.install:209 +msgid "Timestamp of when the form was submitted." +msgstr "" + +#: webform.install:215 +msgid "The IP address of the user that submitted the form." +msgstr "" + +#: webform.install:227 +msgid "Stores all submitted field data for webform submissions." +msgstr "" + +#: webform.install:252 +msgid "Usually this value is 0, but if a field has multiple values (such as a time or date), it may require multiple rows in the database." +msgstr "" + +#: webform.install:260 +msgid "The submitted value of this field, may be serialized for some components." +msgstr "" + +#: webform.info:0 +msgid "Enables the creation of forms and questionnaires." +msgstr "" + +#: components/date.inc:44 components/email.inc:43 components/hidden.inc:38 components/select.inc:55 components/textarea.inc:45 components/textfield.inc:46 components/time.inc:41 +msgid "Default value" +msgstr "" + +#: components/date.inc:46 components/email.inc:45 components/hidden.inc:40 components/textarea.inc:47 components/textfield.inc:48 components/time.inc:43 +msgid "The default value of the field." +msgstr "" + +#: components/date.inc:46 +msgid "Accepts any date in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as today, +2 months, and Dec 9 2004 are all valid." +msgstr "" + +#: components/date.inc:53 components/time.inc:51 +msgid "Timezone" +msgstr "" + +#: components/date.inc:55 +msgid "Adjust the date according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "" + +#: components/date.inc:56 +msgid "Website timezone" +msgstr "" + +#: components/date.inc:56 +msgid "User timezone" +msgstr "" + +#: components/date.inc:56 +msgid "GMT" +msgstr "" + +#: components/date.inc:61 components/time.inc:59 +msgid "Observe Daylight Savings" +msgstr "" + +#: components/date.inc:64 components/time.inc:62 +msgid "Automatically adjust the time during daylight savings." +msgstr "" + +#: components/date.inc:70 +msgid "Start year" +msgstr "" + +#: components/date.inc:72 +msgid "The first year that is allowed to be entered." +msgstr "" + +#: components/date.inc:79 +msgid "End year" +msgstr "" + +#: components/date.inc:81 +msgid "The last year that is allowed to be entered." +msgstr "" + +#: components/date.inc:88 +msgid "Use a textfield for year" +msgstr "" + +#: components/date.inc:90 +msgid "If checked, the generated date field will use a textfield for the year. Otherwise it will use a select list." +msgstr "" + +#: components/date.inc:184 +msgid "Month" +msgstr "" + +#: components/date.inc:187 +msgid "Day" +msgstr "" + +#: components/date.inc:190;206 +msgid "Year" +msgstr "" + +#: components/date.inc:223 +msgid "!name field is required." +msgstr "" + +#: components/date.inc:230 +msgid "Entered !name is not a valid date." +msgstr "" + +#: components/date.inc:237 +msgid "The entered date needs to be between the years @start and @end." +msgstr "" + +#: components/date.inc:312 +msgid "Presents month, day, and year fields." +msgstr "" + +#: components/date.inc:383 components/email.inc:211 components/file.inc:511 components/textarea.inc:179 components/textfield.inc:228 components/time.inc:318 +msgid "Left Blank" +msgstr "" + +#: components/date.inc:384 components/email.inc:212 components/textarea.inc:180 components/textfield.inc:229 components/time.inc:319 +msgid "User entered value" +msgstr "" + +#: components/email.inc:54 +msgid "User email as default" +msgstr "" + +#: components/email.inc:56 +msgid "Set the default value of this field to the user email, if he/she is logged in." +msgstr "" + +#: components/email.inc:63 components/file.inc:127 components/textarea.inc:54 components/textfield.inc:55 +msgid "Width" +msgstr "" + +#: components/email.inc:65 components/textarea.inc:56 components/textfield.inc:57 +msgid "Width of the textfield." +msgstr "" + +#: components/email.inc:65 components/file.inc:129 components/textarea.inc:56;64 components/textfield.inc:57 +msgid "Leaving blank will use the default size." +msgstr "" + +#: components/email.inc:71 components/hidden.inc:51 components/select.inc:78 +msgid "E-mail a submission copy" +msgstr "" + +#: components/email.inc:74 components/hidden.inc:54 components/select.inc:81 +msgid "Check this option if this component contains an e-mail address that should get a copy of the submission. Emails are sent individually so other emails will not be shown to the recipient." +msgstr "" + +#: components/email.inc:78 components/textarea.inc:77 components/textfield.inc:91 +msgid "Disabled" +msgstr "" + +#: components/email.inc:80 components/textarea.inc:79 components/textfield.inc:93 +msgid "Make this field non-editable. Useful for setting an unchangeable default value." +msgstr "" + +#: components/email.inc:145 +msgid "%value is not a valid email address." +msgstr "" + +#: components/email.inc:178 +msgid "A textfield that automatically fills in a logged-in user's e-mail." +msgstr "" + +#: components/email.inc:213 components/hidden.inc:148 components/textarea.inc:181 components/textfield.inc:230 +msgid "Average submission length in words (ex blanks)" +msgstr "" + +#: components/fieldset.inc:39 +msgid "Collapsible" +msgstr "" + +#: components/fieldset.inc:41 +msgid "If this fieldset is collapsible, the user may open or close the fieldset." +msgstr "" + +#: components/fieldset.inc:46 +msgid "Collapsed by Default" +msgstr "" + +#: components/fieldset.inc:48 +msgid "Collapsible fieldsets are \"open\" by default. Select this option to default the fieldset to \"closed.\"" +msgstr "" + +#: components/fieldset.inc:100 +msgid "Fieldsets allow you to organize multiple fields into groups." +msgstr "" + +#: components/file.inc:49 +msgid "Upload Filtering" +msgstr "" + +#: components/file.inc:50 +msgid "Select the types of uploads you would like to allow." +msgstr "" + +#: components/file.inc:60 +msgid "Web Images" +msgstr "" + +#: components/file.inc:68 +msgid "Desktop Images" +msgstr "" + +#: components/file.inc:76 +msgid "Documents" +msgstr "" + +#: components/file.inc:84 +msgid "Media" +msgstr "" + +#: components/file.inc:92 +msgid "Archives" +msgstr "" + +#: components/file.inc:99 +msgid "Additional Extensions" +msgstr "" + +#: components/file.inc:101 +msgid "Enter a list of additional file extensions for this upload field, seperated by commas.<br /> Entered extensions will be appended to checked items above." +msgstr "" + +#: components/file.inc:109 +msgid "Max Upload Size" +msgstr "" + +#: components/file.inc:111 +msgid "Enter the max file size a user may upload (in KB)." +msgstr "" + +#: components/file.inc:118 +msgid "Upload Directory" +msgstr "" + +#: components/file.inc:120 +msgid "Webform uploads are always saved in the site files directory. You may optionally specify a subfolder to store your files." +msgstr "" + +#: components/file.inc:129 +msgid "Width of the file field." +msgstr "" + +#: components/file.inc:144 +msgid "The save directory %directory could not be created. Check that the webform files directory is writtable." +msgstr "" + +#: components/file.inc:248 +msgid "Category" +msgstr "" + +#: components/file.inc:248 +msgid "Types" +msgstr "" + +#: components/file.inc:308 components/time.inc:171 +msgid "%field field is required." +msgstr "" + +#: components/file.inc:340 +msgid "Files with the '%ext' extension are not allowed, please upload a file with a %exts extension." +msgstr "" + +#: components/file.inc:345 +msgid "The file '%filename' is too large (%filesize KB). Please upload a file %maxsize KB or smaller." +msgstr "" + +#: components/file.inc:366 +msgid "The uploaded file %filename was unable to be saved. The destination directory may not be writable." +msgstr "" + +#: components/file.inc:377 +msgid "The uploaded file was unable to be saved. The destination directory does not exist." +msgstr "" + +#: components/file.inc:428 +msgid "Uploading a new file will replace the current file." +msgstr "" + +#: components/file.inc:463 +msgid "Allow users to submit files of the configured types." +msgstr "" + +#: components/file.inc:512 +msgid "User uploaded file" +msgstr "" + +#: components/file.inc:513 +msgid "Average uploaded file size" +msgstr "" + +#: components/file.inc:556 +msgid "Filesize (KB)" +msgstr "" + +#: components/grid.inc:42 components/select.inc:44 +msgid "Options" +msgstr "" + +#: components/grid.inc:44 +msgid "Options to select across the top. One option per line. Key-value pairs may be entered seperated by pipes. i.e. safe_key|Some readable option" +msgstr "" + +#: components/grid.inc:52 +msgid "Questions" +msgstr "" + +#: components/grid.inc:54 +msgid "Questions list down the left side. One question per line." +msgstr "" + +#: components/grid.inc:62 +msgid "Randomize Options" +msgstr "" + +#: components/grid.inc:64 +msgid "Randomizes the order of options on the top when they are displayed in the form." +msgstr "" + +#: components/grid.inc:68 +msgid "Randomize Questions" +msgstr "" + +#: components/grid.inc:70 +msgid "Randomize the order of the questions on the side when they are displayed in the form." +msgstr "" + +#: components/grid.inc:227 +msgid "Allows creation of grid questions, denoted by radio buttons." +msgstr "" + +#: components/hidden.inc:99 +msgid "@name (hidden)" +msgstr "" + +#: components/hidden.inc:113 +msgid "A field which is not visible to the user, but is recorded with the submission." +msgstr "" + +#: components/hidden.inc:146 +msgid "Empty" +msgstr "" + +#: components/hidden.inc:147 +msgid "Non-empty" +msgstr "" + +#: components/markup.inc:41 +msgid "Markup allows you to enter custom HTML or PHP logic into your form." +msgstr "" + +#: components/markup.inc:63 +msgid "Preview" +msgstr "" + +#: components/markup.inc:103 +msgid "Displays text as HTML in the form; does not render a field." +msgstr "" + +#: components/pagebreak.inc:32 +msgid "Use caution when combining the pagebreak and file components. File components will not be submitted unless they are after the last pagebreak in the form." +msgstr "" + +#: components/pagebreak.inc:59 +msgid "Break up a multi-page form." +msgstr "" + +#: components/select.inc:46 +msgid "A list of selectable options. One option per line. Key-value pairs may be entered seperated by pipes, such as \"safe_key|Some readable option\". Option groups for lists and menus may be specified with <Group Name>. <> can be used to insert items at the root of the menu after specifying a group." +msgstr "" + +#: components/select.inc:57 +msgid "The default value of the field. For multiple selects use commas to separate multiple defaults." +msgstr "" + +#: components/select.inc:64 +msgid "Multiple" +msgstr "" + +#: components/select.inc:67 +msgid "Check this option if the user should be allowed to choose multiple values." +msgstr "" + +#: components/select.inc:71 +msgid "Listbox" +msgstr "" + +#: components/select.inc:74 +msgid "Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes." +msgstr "" + +#: components/select.inc:82 +msgid "To use the option with a select component, you must use key-value pairs seperated by pipes. i.e. user@example.com|Sample user." +msgstr "" + +#: components/select.inc:124 +msgid "Options within the select list must be unique. The following keys have been used multiple times:" +msgstr "" + +#: components/select.inc:325 +msgid "Allows creation of checkboxes, radio buttons, or select menus." +msgstr "" + +#: components/textarea.inc:62 +msgid "Height" +msgstr "" + +#: components/textarea.inc:64 +msgid "Height of the textfield." +msgstr "" + +#: components/textarea.inc:70 +msgid "Resizable" +msgstr "" + +#: components/textarea.inc:71 +msgid "Make this field resizable by the user." +msgstr "" + +#: components/textarea.inc:146 +msgid "A large text area that allows for multiple lines of input." +msgstr "" + +#: components/textfield.inc:64 +msgid "Maxlength" +msgstr "" + +#: components/textfield.inc:66 +msgid "Maxlength of the textfield." +msgstr "" + +#: components/textfield.inc:73 +msgid "Label placed to the left of the textfield" +msgstr "" + +#: components/textfield.inc:75 +msgid "Examples: $, #, -." +msgstr "" + +#: components/textfield.inc:82 +msgid "Label placed to the right of the textfield" +msgstr "" + +#: components/textfield.inc:84 +msgid "Examples: lb, kg, %." +msgstr "" + +#: components/textfield.inc:195 +msgid "Basic textfield type." +msgstr "" + +#: components/time.inc:43 +msgid "Accepts a time in any <a href=\"http://www.gnu.org/software/tar/manual/html_chapter/Date-input-formats.html\">GNU Date Input Format</a>. Strings such as now, +2 hours, and 10:30pm are all valid." +msgstr "" + +#: components/time.inc:53 +msgid "Adjust the time according to a specific timezone. Website timezone is defined in the <a href=\"!settings\">Site Settings</a> and is the default." +msgstr "" + +#: components/time.inc:67 +msgid "Time Format" +msgstr "" + +#: components/time.inc:69 +msgid "Format the display of the time in 12 or 24 hours." +msgstr "" + +#: components/time.inc:123 +msgid "hour" +msgstr "" + +#: components/time.inc:124 +msgid "minute" +msgstr "" + +#: components/time.inc:127 +msgid "am" +msgstr "" + +#: components/time.inc:127 +msgid "pm" +msgstr "" + +#: components/time.inc:179 +msgid "Entered %name is not a valid time." +msgstr "" + +#: components/time.inc:250 +msgid "Presents the user with hour and minute fields. Optional am/pm fields." +msgstr "" + diff --git a/sites/all/modules/webform/views/webform.views.inc b/sites/all/modules/webform/views/webform.views.inc new file mode 100644 index 0000000000000000000000000000000000000000..e249408c211931fbe00b4b74dd25e4edf3fe5d80 --- /dev/null +++ b/sites/all/modules/webform/views/webform.views.inc @@ -0,0 +1,233 @@ +<?php +// $Id: webform.views.inc,v 1.3 2010/09/11 02:18:51 quicksketch Exp $ + +/** +* @file +* Views hooks implemented for the Webform module. +*/ + +function webform_views_data() { + /** + * Submissions table definitions. + */ + $data['webform_submissions']['table']['group'] = t('Webform submissions'); + $data['webform_submissions']['table']['base'] = array( + 'field' => 'sid', + 'title' => t('Webform submissions'), + 'help' => t('Submissions grenerated from Webform forms.'), + ); + + // sid + $data['webform_submissions']['sid'] = array( + 'title' => t('Sid'), + 'help' => t('The submission ID of the submission.'), + 'field' => array( + 'handler' => 'views_handler_field_numeric', + 'click sortable' => TRUE, + ), + 'filter' => array( + 'title' => t('Sid'), + 'handler' => 'views_handler_filter_numeric', + ), + 'sort' => array( + 'handler' => 'views_handler_sort', + ), + ); + + // nid + $data['webform_submissions']['nid'] = array( + 'title' => t('Node'), + 'help' => t('The node these submissions were generated from.'), + 'relationship' => array( + 'base' => 'node', + 'handler' => 'views_handler_relationship', + 'label' => t('Node'), + 'skip base' => array('node', 'node_revisions'), + ), + ); + + // uid + $data['webform_submissions']['uid'] = array( + 'title' => t('User'), + 'help' => t('The users who submitted these submissions.'), + 'relationship' => array( + 'base' => 'users', + 'handler' => 'views_handler_relationship', + 'label' => t('User'), + 'skip base' => array('users', 'node', 'node_revisions'), + ), + ); + + // is_draft + $data['webform_submissions']['is_draft'] = array( + 'title' => t('Draft'), + 'help' => t('Whether or not the submission is a draft.'), + 'field' => array( + 'handler' => 'webform_handler_field_is_draft', + 'click sortable' => TRUE, + ), + 'filter' => array( + 'handler' => 'webform_handler_filter_is_draft', + ), + 'sort' => array( + 'handler' => 'views_handler_sort', + ), + ); + + // submitted + $data['webform_submissions']['submitted'] = array( + 'title' => t('Submitted'), + 'help' => t('The date this submission was submitted.'), + 'field' => array( + 'handler' => 'views_handler_field_date', + 'click sortable' => TRUE, + ), + 'filter' => array( + 'title' => t('Submitted'), + 'handler' => 'views_handler_filter_date', + ), + 'sort' => array( + 'handler' => 'views_handler_sort_date', + ), + ); + + // remote_addr + $data['webform_submissions']['remote_addr'] = array( + 'title' => t('Remote address'), + 'help' => t('The remote IP address of the user that submitted this submission.'), + 'field' => array( + 'handler' => 'views_handler_field', + 'click sortable' => TRUE, + ), + 'filter' => array( + 'title' => t('Remote address'), + 'handler' => 'views_handler_filter_string', + ), + 'sort' => array( + 'handler' => 'views_handler_sort', + ), + ); + + // view link + $data['webform_submissions']['view_submission'] = array( + 'field' => array( + 'title' => t('View link'), + 'help' => t('Provide a simple link to view the submission.'), + 'handler' => 'webform_handler_field_submission_link', + 'link_type' => 'view', + ), + ); + + // edit link + $data['webform_submissions']['edit_submission'] = array( + 'field' => array( + 'title' => t('Edit link'), + 'help' => t('Provide a simple link to edit the submission.'), + 'handler' => 'webform_handler_field_submission_link', + 'link_type' => 'edit', + ), + ); + + // delete link + $data['webform_submissions']['delete_submission'] = array( + 'field' => array( + 'title' => t('Delete link'), + 'help' => t('Provide a simple link to delete the submission.'), + 'handler' => 'webform_handler_field_submission_link', + 'link_type' => 'delete', + ), + ); + + return $data; +} + +/** + * Implementation of hook_views_data_alter(). + */ +function webform_views_data_alter(&$data) { + // Submission count (node). + $data['node']['webform_submission_count_node'] = array( + 'field' => array( + 'title' => t('Webform submission count'), + 'help' => t('The number of webform submissions on this node.'), + 'handler' => 'webform_handler_field_submission_count', + 'count_type' => 'node', + ), + ); + + // Submission count (user). + $data['users']['webform_submission_count_user'] = array( + 'field' => array( + 'title' => t('Webform submission count'), + 'help' => t('The number of webform submissions for this user.'), + 'handler' => 'webform_handler_field_submission_count', + 'count_type' => 'users', + ), + ); + + // Link for editing the webform. + $data['node']['webform_edit'] = array( + 'field' => array( + 'title' => t('Webform edit link'), + 'help' => t('Provide a simple link to edit the webform components and configuration.'), + 'handler' => 'webform_handler_field_node_link_edit', + ), + ); + + // Link for viewing webform results. + $data['node']['webform_results'] = array( + 'field' => array( + 'title' => t('Webform results link'), + 'help' => t('Provide a simple link to view the results of a webform.'), + 'handler' => 'webform_handler_field_node_link_results', + ), + ); + + // Webform form content. + $data['node']['webform_form_body'] = array( + 'field' => array( + 'title' => t('Webform form body'), + 'help' => t('The Webform form body display for this node.'), + 'handler' => 'webform_handler_field_form_body', + ), + ); +} + +/** + * Implementation of hook_views_handlers(). + */ +function webform_views_handlers() { + return array( + 'info' => array( + 'path' => drupal_get_path('module', 'webform') . '/views', + ), + 'handlers' => array( + 'webform_handler_field_submission_link' => array( + 'parent' => 'views_handler_field', + 'file' => 'webform_handler_field_submission_link.inc', + ), + 'webform_handler_field_submission_count' => array( + 'parent' => 'views_handler_field', + 'file' => 'webform_handler_field_submission_count.inc', + ), + 'webform_handler_field_node_link_edit' => array( + 'parent' => 'views_handler_field_node_link', + ), + 'webform_handler_field_node_link_results' => array( + 'parent' => 'views_handler_field_node_link', + ), + 'webform_handler_field_form_body' => array( + 'parent' => 'views_handler_field', + 'file' => 'webform_handler_field_form_body.inc', + ), + 'webform_handler_field_is_draft' => array( + 'parent' => 'views_handler_field', + 'file' => 'webform_handler_field_is_draft.inc', + ), + 'webform_handler_filter_is_draft' => array( + 'parent' => 'views_handler_filter_in_operator', + 'file' => 'webform_handler_filter_is_draft.inc', + ), + ), + ); +} \ No newline at end of file diff --git a/sites/all/modules/webform/views/webform_handler_field_form_body.inc b/sites/all/modules/webform/views/webform_handler_field_form_body.inc new file mode 100644 index 0000000000000000000000000000000000000000..c76af9220e217538645440eafd134eb0c0e9855d --- /dev/null +++ b/sites/all/modules/webform/views/webform_handler_field_form_body.inc @@ -0,0 +1,41 @@ +<?php +// $Id: webform_handler_field_form_body.inc,v 1.3 2010/03/08 01:04:42 quicksketch Exp $ + +/** +* @file +* Views handler to display the content of a webform form. +*/ + +/** + * Field handler to present the Webform form body to the user. + */ +class webform_handler_field_form_body extends views_handler_field { + function construct() { + parent::construct(); + $this->additional_fields['nid'] = 'nid'; + } + + function option_definition() { + $options = parent::option_definition(); + $options['label'] = array('default' => 'Form', 'translatable' => TRUE); + return $options; + } + + function query() { + $this->ensure_my_table(); + $this->add_additional_fields(); + } + + function render($values) { + $node = node_load($values->{$this->aliases['nid']}); + + if (node_access('view', $node)) { + $form_body = drupal_render(node_view($node)); + } + else { + return; + } + + return $form_body; + } +} diff --git a/sites/all/modules/webform/views/webform_handler_field_is_draft.inc b/sites/all/modules/webform/views/webform_handler_field_is_draft.inc new file mode 100644 index 0000000000000000000000000000000000000000..4025f1dfc36bbf2eaecc3966e88b460e3829902b --- /dev/null +++ b/sites/all/modules/webform/views/webform_handler_field_is_draft.inc @@ -0,0 +1,19 @@ +<?php +// $Id: webform_handler_field_is_draft.inc,v 1.2 2010/03/03 02:51:37 quicksketch Exp $ + +/** +* @file +* Views handler to display the draft status of a submission. +*/ + +/** + * Field handler to show if submission is draft or not. + * + * @ingroup views_field_handlers + */ +class webform_handler_field_is_draft extends views_handler_field { + function render($values) { + $is_draft = $values->{$this->field_alias}; + return $is_draft ? t('draft') : t('completed'); + } +} \ No newline at end of file diff --git a/sites/all/modules/webform/views/webform_handler_field_node_link_edit.inc b/sites/all/modules/webform/views/webform_handler_field_node_link_edit.inc new file mode 100644 index 0000000000000000000000000000000000000000..4d9cfe8eb83173140c58764bcebcddd30329545a --- /dev/null +++ b/sites/all/modules/webform/views/webform_handler_field_node_link_edit.inc @@ -0,0 +1,30 @@ +<?php +// $Id: webform_handler_field_node_link_edit.inc,v 1.1 2010/09/11 02:18:51 quicksketch Exp $ +/** + * Field handler to present a link node edit. + */ +class webform_handler_field_node_link_edit extends views_handler_field_node_link { + function construct() { + parent::construct(); + $this->additional_fields['uid'] = 'uid'; + $this->additional_fields['type'] = 'type'; + $this->additional_fields['format'] = array('table' => 'node_revisions', 'field' => 'format'); + } + + function render($values) { + // ensure user has access to edit this node. + $node = new stdClass(); + $node->nid = $values->{$this->aliases['nid']}; + $node->uid = $values->{$this->aliases['uid']}; + $node->type = $values->{$this->aliases['type']}; + $node->format = $values->{$this->aliases['format']}; + $node->status = 1; // unpublished nodes ignore access control + if (!node_access('update', $node)) { + return; + } + + $text = !empty($this->options['text']) ? $this->options['text'] : t('edit webform'); + return l($text, "node/$node->nid/webform"); + } +} + diff --git a/sites/all/modules/webform/views/webform_handler_field_node_link_results.inc b/sites/all/modules/webform/views/webform_handler_field_node_link_results.inc new file mode 100644 index 0000000000000000000000000000000000000000..66bd035ef30e9be4f430669cd10a8e987196841b --- /dev/null +++ b/sites/all/modules/webform/views/webform_handler_field_node_link_results.inc @@ -0,0 +1,30 @@ +<?php +// $Id: webform_handler_field_node_link_results.inc,v 1.1 2010/09/11 02:18:51 quicksketch Exp $ +/** + * Field handler to present a link node edit. + */ +class webform_handler_field_node_link_results extends views_handler_field_node_link { + function construct() { + parent::construct(); + $this->additional_fields['uid'] = 'uid'; + $this->additional_fields['type'] = 'type'; + $this->additional_fields['format'] = array('table' => 'node_revisions', 'field' => 'format'); + } + + function render($values) { + // ensure user has access to edit this node. + $node = new stdClass(); + $node->nid = $values->{$this->aliases['nid']}; + $node->uid = $values->{$this->aliases['uid']}; + $node->type = $values->{$this->aliases['type']}; + $node->format = $values->{$this->aliases['format']}; + $node->status = 1; // unpublished nodes ignore access control + if (!webform_results_access($node)) { + return; + } + + $text = !empty($this->options['text']) ? $this->options['text'] : t('results'); + return l($text, "node/$node->nid/webform-results"); + } +} + diff --git a/sites/all/modules/webform/views/webform_handler_field_submission_count.inc b/sites/all/modules/webform/views/webform_handler_field_submission_count.inc new file mode 100644 index 0000000000000000000000000000000000000000..53df4fe65f0c7b581dfd47560322e7ebcede578b --- /dev/null +++ b/sites/all/modules/webform/views/webform_handler_field_submission_count.inc @@ -0,0 +1,60 @@ +<?php +// $Id: webform_handler_field_submission_count.inc,v 1.6 2010/11/18 14:08:48 quicksketch Exp $ + +/** +* @file +* Views handler to display the number of submissions in a webform. +*/ + +/** + * Field handler to present the submission count of a node to the user. + */ +class webform_handler_field_submission_count extends views_handler_field { + function construct() { + parent::construct(); + $this->count_type = $this->definition['count_type']; + + if ($this->count_type == 'node') { + $this->additional_fields['nid'] = 'nid'; + } + elseif ($this->count_type == 'users') { + $this->additional_fields['uid'] = 'uid'; + } + } + + function option_definition() { + $options = parent::option_definition(); + $options['label'] = array('default' => '# of Submissions', 'translatable' => TRUE); + return $options; + } + + function query() { + $this->ensure_my_table(); + $this->add_additional_fields(); + } + + function render($values) { + global $user; + + $output = NULL; + if ($this->count_type == 'node' && in_array($node->type, webform_variable_get('webform_node_types'))) { + module_load_include('inc', 'webform', 'includes/webform.submissions'); + $node = node_load($values->{$this->aliases['nid']}); + if (webform_results_access($node, $user)) { + $count = webform_get_submission_count($node->nid); + $output = l($count, "node/$node->nid/webform-results"); + } + else { + $count = webform_get_submission_count($node->nid, $user->uid); + $output = l($count, "node/$node->nid/submissions"); + } + } + elseif ($this->count_type == 'users') { + $output = db_select('webform_submissions') + ->condition('uid', $values->{$this->aliases['uid']}) + ->countQuery->execute()->fetchField(); + } + + return $output; + } +} diff --git a/sites/all/modules/webform/views/webform_handler_field_submission_link.inc b/sites/all/modules/webform/views/webform_handler_field_submission_link.inc new file mode 100644 index 0000000000000000000000000000000000000000..15f86814aadb9de7513740a652f6140136f5d06e --- /dev/null +++ b/sites/all/modules/webform/views/webform_handler_field_submission_link.inc @@ -0,0 +1,101 @@ +<?php +// $Id: webform_handler_field_submission_link.inc,v 1.4 2010/03/08 01:04:42 quicksketch Exp $ + +/** +* @file +* Views handler to display links to a submission. +*/ + +/** + * Field handler to present a link to the user. + */ +class webform_handler_field_submission_link extends views_handler_field { + var $link_type; + + function construct() { + // We need to set this property before calling the construct() chain + // as we use it in the option_definintion() call. + $this->link_type = $this->definition['link_type']; + + parent::construct(); + $this->additional_fields['sid'] = 'sid'; + $this->additional_fields['nid'] = 'nid'; + $this->additional_fields['uid'] = 'uid'; + + $this->additional_fields['node_uid'] = array( + 'table' => 'node', + 'field' => 'uid', + ); + } + + function allow_advanced_render() { + return FALSE; + } + + function option_definition() { + $options = parent::option_definition(); + $options['label'] = array('default' => '', 'translatable' => TRUE); + $options['text'] = array('default' => $this->link_type, 'translatable' => TRUE); + return $options; + } + + function options_form(&$form, &$form_state) { + parent::options_form($form, $form_state); + $form['text'] = array( + '#type' => 'textfield', + '#title' => t('Text to display'), + '#default_value' => $this->options['text'], + ); + } + + function query() { + $this->ensure_my_table(); + + // Join to the node table to retrieve the node UID. + $join = new views_join(); + $join->construct('node', $this->table_alias, 'nid', 'nid'); + $this->query->ensure_table('node', $this->relationship, $join); + + $this->add_additional_fields(); + } + + function render($values) { + $submission = new stdClass(); + $submission->sid = $values->{$this->aliases['sid']}; + $submission->nid = $values->{$this->aliases['nid']}; + $submission->uid = $values->{$this->aliases['uid']}; + $node = (object) array( + 'nid' => $submission->nid, + 'uid' => $values->{$this->aliases['node_uid']}, + ); + + switch ($this->link_type) { + case 'view': + $text = !empty($this->options['text']) ? $this->options['text'] : t('delete'); + $link = l($text, "node/$submission->nid/submission/$submission->sid"); + $access = webform_submission_access($node, $submission, 'view'); + break; + case 'edit': + $text = !empty($this->options['text']) ? $this->options['text'] : t('edit'); + $link = l($text, "node/$submission->nid/submission/$submission->sid/edit"); + $access = webform_submission_access($node, $submission, 'edit'); + break; + case 'delete': + $text = !empty($this->options['text']) ? $this->options['text'] : t('view'); + $path = drupal_get_path_alias($_GET['q']); + $link = l($text, "node/$submission->nid/submission/$submission->sid/delete", array('query' => array('destination' => $path))); + $access = webform_submission_access($node, $submission, 'delete'); + break; + default: + $text = ''; + $link = NULL; + $access = FALSE; + } + + if (!$access) { + return; + } + + return $link; + } +} diff --git a/sites/all/modules/webform/views/webform_handler_filter_is_draft.inc b/sites/all/modules/webform/views/webform_handler_filter_is_draft.inc new file mode 100644 index 0000000000000000000000000000000000000000..195b17664b4b068db62059b89b105016e0e09b1a --- /dev/null +++ b/sites/all/modules/webform/views/webform_handler_filter_is_draft.inc @@ -0,0 +1,26 @@ +<?php +// $Id: webform_handler_filter_is_draft.inc,v 1.2 2010/03/03 02:51:37 quicksketch Exp $ + +/** +* @file +* Views handler to filter submissions by draft state. +*/ + +/** + * Filter by submission status + */ +class webform_handler_filter_is_draft extends views_handler_filter_in_operator { + function get_value_options() { + if (!isset($this->value_options)) { + $this->value_title = t('Status'); + $options = array('0' => t('Completed'), '1' => t('Draft')); + $this->value_options = $options; + } + } + + // '0' won't work as a key for checkboxes. + function value_form(&$form, &$form_state) { + parent::value_form($form, $form_state); + $form['value']['#type'] = 'select'; + } +} diff --git a/sites/all/modules/webform/webform.info b/sites/all/modules/webform/webform.info new file mode 100644 index 0000000000000000000000000000000000000000..a2333e2f676affbb6894c80bc43ecabb3825c976 --- /dev/null +++ b/sites/all/modules/webform/webform.info @@ -0,0 +1,30 @@ +; $Id: $ +name = Webform +description = Enables the creation of forms and questionnaires. +core = 7.x +package = Webform +configure = admin/config/content/webform + +; Files that contain classes: +files[] = includes/webform.export.inc + +files[] = views/webform_handler_field_form_body.inc +files[] = views/webform_handler_field_is_draft.inc +files[] = views/webform_handler_field_node_link_edit.inc +files[] = views/webform_handler_field_node_link_results.inc +files[] = views/webform_handler_field_submission_count.inc +files[] = views/webform_handler_field_submission_link.inc +files[] = views/webform_handler_filter_is_draft.inc +files[] = views/webform.views.inc + +files[] = tests/components.test +files[] = tests/permissions.test +files[] = tests/submission.test +files[] = tests/webform.test + +; Information added by drupal.org packaging script on 2011-01-12 +version = "7.x-3.6" +core = "7.x" +project = "webform" +datestamp = "1294819898" + diff --git a/sites/all/modules/webform/webform.install b/sites/all/modules/webform/webform.install new file mode 100644 index 0000000000000000000000000000000000000000..eb2c9f7d9a30b42f54f8eda7a6a20a9a679018af --- /dev/null +++ b/sites/all/modules/webform/webform.install @@ -0,0 +1,476 @@ +<?php +// $Id: webform.install,v 1.62 2011/01/06 18:34:54 quicksketch Exp $ + +/** + * @file + * Webform module install/schema hooks. + */ + +/** + * Implementation of hook_schema(). + */ +function webform_schema() { + $schema = array(); + + $schema['webform'] = array( + 'description' => 'Table for storing additional properties for webform nodes.', + 'fields' => array( + 'nid' => array( + 'description' => 'The node identifier of a webform.', + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + ), + 'confirmation' => array( + 'description' => 'The confirmation message or URL displayed to the user after submitting a form.', + 'type' => 'text', + 'not null' => TRUE, + ), + 'confirmation_format' => array( + 'description' => 'The input format used by the confirmation message.', + 'type' => 'int', + 'size' => 'tiny', + 'not null' => TRUE, + 'default' => 0, + ), + 'redirect_url' => array( + 'description' => 'The URL a user is redirected to after submitting a form.', + 'type' => 'varchar', + 'length' => 255, + 'default' => '<confirmation>', + ), + 'status' => array( + 'description' => 'Boolean value of a webform for open (1) or closed (0).', + 'type' => 'int', + 'size' => 'tiny', + 'not null' => TRUE, + 'default' => 1, + ), + 'block' => array( + 'description' => 'Boolean value for whether this form be available as a block.', + 'type' => 'int', + 'size' => 'tiny', + 'not null' => TRUE, + 'default' => 0, + ), + 'teaser' => array( + 'description' => 'Boolean value for whether the entire form should be displayed on the teaser.', + 'type' => 'int', + 'size' => 'tiny', + 'not null' => TRUE, + 'default' => 0, + ), + 'allow_draft' => array( + 'description' => 'Boolean value for whether submissions to this form be saved as a draft.', + 'type' => 'int', + 'size' => 'tiny', + 'not null' => TRUE, + 'default' => 0, + ), + 'submit_notice' => array( + 'description' => 'Boolean value for whether to show or hide the previous submissions notification.', + 'type' => 'int', + 'size' => 'tiny', + 'not null' => TRUE, + 'default' => 1, + ), + 'submit_text' => array( + 'description' => 'The title of the submit button on the form.', + 'type' => 'varchar', + 'length' => 255, + ), + 'submit_limit' => array( + 'description' => 'The number of submissions a single user is allowed to submit within an interval. -1 is unlimited.', + 'type' => 'int', + 'size' => 'tiny', + 'not null' => TRUE, + 'default' => -1, + ), + 'submit_interval' => array( + 'description' => 'The amount of time in seconds that must pass before a user can submit another submission within the set limit.', + 'type' => 'int', + 'not null' => TRUE, + 'default' => -1, + ), + ), + 'primary key' => array('nid'), + ); + + $schema['webform_component'] = array( + 'description' => 'Stores information about components for webform nodes.', + 'fields' => array( + 'nid' => array( + 'description' => 'The node identifier of a webform.', + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'cid' => array( + 'description' => 'The identifier for this component within this node, starts at 0 for each node.', + 'type' => 'int', + 'size' => 'small', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'pid' => array( + 'description' => 'If this component has a parent fieldset, the cid of that component.', + 'type' => 'int', + 'size' => 'small', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'form_key' => array( + 'description' => 'When the form is displayed and processed, this key can be used to reference the results.', + 'type' => 'varchar', + 'length' => 128, + ), + 'name' => array( + 'description' => 'The label for this component.', + 'type' => 'varchar', + 'length' => 255, + ), + 'type' => array( + 'description' => 'The field type of this component (textfield, select, hidden, etc.).', + 'type' => 'varchar', + 'length' => 16, + ), + 'value' => array( + 'description' => 'The default value of the component when displayed to the end-user.', + 'type' => 'text', + 'not null' => TRUE, + ), + 'extra' => array( + 'description' => 'Additional information unique to the display or processing of this component.', + 'type' => 'text', + 'not null' => TRUE, + ), + 'mandatory' => array( + 'description' => 'Boolean flag for if this component is required.', + 'type' => 'int', + 'size' => 'tiny', + 'not null' => TRUE, + 'default' => 0, + ), + 'weight' => array( + 'description' => 'Determines the position of this component in the form.', + 'type' => 'int', + 'size' => 'small', + 'not null' => TRUE, + 'default' => 0, + ), + ), + 'primary key' => array('nid', 'cid'), + ); + + $schema['webform_emails'] = array( + 'description' => 'Holds information regarding e-mails that should be sent upon submitting a webform', + 'fields' => array( + 'nid' => array( + 'description' => 'The node identifier of a webform.', + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'eid' => array( + 'description' => 'The e-mail identifier for this row\'s settings.', + 'type' => 'int', + 'unsigned' => TRUE, + 'size' => 'small', + 'not null' => TRUE, + 'default' => 0, + ), + 'email' => array( + 'description' => 'The e-mail address that will be sent to upon submission. This may be an e-mail address, the special key "default" or a numeric value. If a numeric value is used, the value of a component will be substituted on submission.', + 'type' => 'text', + 'not null' => FALSE, + ), + 'subject' => array( + 'description' => 'The e-mail subject that will be used. This may be a string, the special key "default" or a numeric value. If a numeric value is used, the value of a component will be substituted on submission.', + 'type' => 'varchar', + 'length' => '255', + 'not null' => FALSE, + ), + 'from_name' => array( + 'description' => 'The e-mail "from" name that will be used. This may be a string, the special key "default" or a numeric value. If a numeric value is used, the value of a component will be substituted on submission.', + 'type' => 'varchar', + 'length' => '255', + 'not null' => FALSE, + ), + 'from_address' => array( + 'description' => 'The e-mail "from" e-mail address that will be used. This may be a string, the special key "default" or a numeric value. If a numeric value is used, the value of a component will be substituted on submission.', + 'type' => 'varchar', + 'length' => '255', + 'not null' => FALSE, + ), + 'template' => array( + 'description' => 'A template that will be used for the sent e-mail. This may be a string or the special key "default", which will use the template provided by the theming layer.', + 'type' => 'text', + 'not null' => FALSE, + ), + 'excluded_components' => array( + 'description' => 'A list of components that will not be included in the %email_values token. A list of CIDs separated by commas.', + 'type' => 'text', + 'not null' => TRUE, + ), + 'html' => array( + 'description' => 'Determines if the e-mail will be sent in an HTML format. Requires Mime Mail module.', + 'type' => 'int', + 'unsigned' => TRUE, + 'size' => 'tiny', + 'not null' => TRUE, + 'default' => 0, + ), + 'attachments' => array( + 'description' => 'Determines if the e-mail will include file attachments. Requires Mime Mail module.', + 'type' => 'int', + 'unsigned' => TRUE, + 'size' => 'tiny', + 'not null' => TRUE, + 'default' => 0, + ), + ), + 'primary key' => array('nid', 'eid'), + ); + + $schema['webform_roles'] = array( + 'description' => 'Holds access information regarding which roles are allowed to submit which webform nodes. Does not prevent access to the webform node entirely, use the {node_access} table for that purpose.', + 'fields' => array( + 'nid' => array( + 'description' => 'The node identifier of a webform.', + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'rid' => array( + 'description' => 'The role identifier.', + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + ), + 'primary key' => array('nid', 'rid'), + ); + + $schema['webform_submissions'] = array( + 'description' => 'Holds general information about submissions outside of field values.', + 'fields' => array( + 'sid' => array( + 'description' => 'The unique identifier for this submission.', + 'type' => 'serial', + 'unsigned' => TRUE, + 'not null' => TRUE, + ), + 'nid' => array( + 'description' => 'The node identifier of a webform.', + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'uid' => array( + 'description' => 'The id of the user that completed this submission.', + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'is_draft' => array( + 'description' => 'Is this a draft of the submission?', + 'type' => 'int', + 'size' => 'tiny', + 'not null' => TRUE, + 'default' => 0, + ), + 'submitted' => array( + 'description' => 'Timestamp of when the form was submitted.', + 'type' => 'int', + 'not null' => TRUE, + 'default' => 0, + ), + 'remote_addr' => array( + 'description' => 'The IP address of the user that submitted the form.', + 'type' => 'varchar', + 'length' => 128, + ), + ), + 'unique keys' => array( + 'sid_nid' => array('sid', 'nid'), + ), + 'primary key' => array('sid'), + ); + + $schema['webform_submitted_data'] = array( + 'description' => 'Stores all submitted field data for webform submissions.', + 'fields' => array( + 'nid' => array( + 'description' => 'The node identifier of a webform.', + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'sid' => array( + 'description' => 'The unique identifier for this submission.', + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'cid' => array( + 'description' => 'The identifier for this component within this node, starts at 0 for each node.', + 'type' => 'int', + 'size' => 'small', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'no' => array( + 'description' => 'Usually this value is 0, but if a field has multiple values (such as a time or date), it may require multiple rows in the database.', + 'type' => 'varchar', + 'length' => 128, + 'not null' => TRUE, + 'default' => '0', + ), + 'data' => array( + 'description' => 'The submitted value of this field, may be serialized for some components.', + 'type' => 'text', + 'size' => 'medium', + 'not null' => TRUE, + ), + ), + 'indexes' => array( + 'nid' => array('nid'), + 'sid_nid' => array('sid', 'nid'), + ), + 'primary key' => array('nid', 'sid', 'cid', 'no'), + ); + + return $schema; +} + +/** + * Implementation of hook_install(). + */ +function webform_install() { + module_load_include('inc', 'node', 'content_types'); + db_update('system') + ->condition('name', 'webform') + ->condition('type', 'module') + ->fields(array('weight' => -1)) + ->execute(); + + // Create the default webform type. + $webform_type = array( + 'type' => 'webform', + 'name' => st('Webform'), + 'base' => 'node_content', + 'description' => st('Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users.'), + 'custom' => TRUE, + 'modified' => TRUE, + 'locked' => FALSE, + ); + $webform_type = node_type_set_defaults($webform_type); + node_type_save($webform_type); +} + +/** + * Implementation of hook_uninstall(). + */ +function webform_uninstall() { + // Unset webform variables. + variable_del('webform_use_cookies'); + variable_del('webform_enable_fieldset'); + variable_del('webform_default_from_address'); + variable_del('webform_default_from_name'); + variable_del('webform_default_subject'); + variable_del('webform_default_format'); + variable_del('webform_format_override'); + variable_del('webform_csv_delimiter'); + variable_del('webform_allowed_tags'); + variable_del('webform_blocks'); + + $component_list = array(); + $path = drupal_get_path('module', 'webform') . '/components'; + $files = file_scan_directory($path, '/^.*\.inc$/'); + foreach ($files as $filename => $file) { + variable_del('webform_enable_' . $file->name, 1); + } + + // Delete uploaded files. + $filepath = file_build_uri('webform'); + file_unmanaged_delete_recursive($filepath); +} + +/** + * Set the minimum upgrade version. + * + * Currently you cannot upgrade from 2.x in Drupal 6 to 3.x in Drupal 7. However + * there are no database changes between the 3.x versions, so no update is + * needed at all to move from 3.x in Drupal 6 to Drupal 7. + */ +function webform_update_last_removed() { + return 6313; +} + +/** + * Ensure that the confirmation format column is correctly using size = 'tiny'. + */ +function webform_update_7301() { + db_change_field('webform', 'confirmation_format', 'confirmation_format', array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 0)); +} + +/** + * Add columns for e-mail HTML and attachment settings. + */ +function webform_update_7302() { + if (!db_field_exists('webform_emails', 'html')) { + db_add_field('webform_emails', 'html', array('type' => 'int', 'size' => 'tiny', 'unsigned' => TRUE, 'default' => 0, 'not null' => TRUE)); + db_add_field('webform_emails', 'attachments', array('type' => 'int', 'size' => 'tiny', 'unsigned' => TRUE, 'default' => 0, 'not null' => TRUE)); + } +} + +/** + * Set the default for the "submit_notice" column to 1. + */ +function webform_update_7303() { + db_change_field('webform', 'submit_notice', 'submit_notice', array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 1)); +} + +/** + * Add field for block feature and redirection setting. + */ +function webform_update_7304() { + if (!db_field_exists('webform', 'block')) { + db_add_field('webform', 'block', array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 0)); + db_change_field('webform', 'redirect_url', 'redirect_url', array('type' => 'varchar', 'length' => 255, 'default' => '<confirmation>')); + db_update('webform') + ->fields(array('redirect_url' => 'confirmation')) + ->condition('redirect_url', '') + ->execute(); + } +} + +/** + * Set additional_validate and additional_submit columns to allow NULL. + */ +function webform_update_7305() { + if (db_field_exists('webform', 'additional_validate')) { + db_change_field('webform', 'additional_validate', 'additional_validate', array('type' => 'text', 'not null' => FALSE)); + db_change_field('webform', 'additional_submit', 'additional_submit', array('type' => 'text', 'not null' => FALSE)); + } +} + +/** + * Add column for webform status (open or closed). + */ +function webform_update_7306() { + if (!db_field_exists('webform', 'status')) { + db_add_field('webform', 'status', array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 1)); + } +} diff --git a/sites/all/modules/webform/webform.module b/sites/all/modules/webform/webform.module new file mode 100644 index 0000000000000000000000000000000000000000..1d682bb10c84ecd591a5e41ddfde4d323f855092 --- /dev/null +++ b/sites/all/modules/webform/webform.module @@ -0,0 +1,3448 @@ +<?php +// $Id: webform.module,v 1.279 2011/01/12 07:09:54 quicksketch Exp $ + +/** + * This module provides a simple way to create forms and questionnaires. + * + * The initial development of this module was sponsered by ÅF Industri AB, Open + * Source City and Karlstad University Library. Continued development sponsored + * by Lullabot. + * + * @author Nathan Haug <nate@lullabot.com> + */ + +/** + * Implementation of hook_help(). + */ +function webform_help($section = 'admin/help#webform', $arg = NULL) { + $output = ''; + switch ($section) { + case 'admin/config/content/webform': + module_load_include('inc', 'webform', 'includes/webform.admin'); + $type_list = webform_admin_type_list(); + $output = t('Webform enables nodes to have attached forms and questionnaires.'); + if ($type_list) { + $output .= ' ' . t('To add one, create a !types piece of content.', array('!types' => $type_list)); + } + else { + $output .= ' <strong>' . t('Webform is currently not enabled on any content types.') . '</strong> ' . t('To use Webform, please enable it on at least one content type on this page.'); + } + $output = '<p>' . $output . '</p>'; + break; + case 'admin/content/webform': + $output = '<p>' . t('This page lists all of the content on the site that may have a webform attached to it.') . '</p>'; + break; + case 'admin/help#webform': + module_load_include('inc', 'webform', 'includes/webform.admin'); + $types = webform_admin_type_list(); + if (empty($types)) { + $types = t('Webform-enabled piece of content'); + $types_message = t('Webform is currently not enabled on any content types.') . ' ' . t('Visit the <a href="!url">Webform settings</a> page and enable Webform on at least one content type.', array('!url' => url('admin/config/content/webform'))); + } + else { + $types_message = t('Optional: Enable Webform on multiple types by visiting the <a href="!url">Webform settings</a> page.', array('!url' => url('admin/config/content/webform'))); + } + $output = t("<p>This module lets you create forms or questionnaires and define their content. Submissions from these forms are stored in the database and optionally also sent by e-mail to a predefined address.</p> + <p>Here is how to create one:</p> + <ul> + <li>!webform-types-message</li> + <li>Go to <a href=\"!create-content\">Create content</a> and add a !types piece of content.</li> + <li>After saving the new content, you will be redirected to the main field list of the form that will be created. Add the fields you would like on your form.</li> + <li>Once finished adding fields, you may want to send e-mails to administrators or back to the user who filled out the form. Click on the <em>Emails</em> sub-tab underneath the <em>Webform</em> tab on the piece of content.</li> + <li>Finally, visit the <em>Form settings</em> sub-tab under the <em>Webform</em> tab to configure remaining configurations options for your form. + <ul> + <li>Add a confirmation message and/or redirect URL that is to be displayed after successful submission.</li> + <li>Set a submission limit.</li> + <li>Determine which roles may submit the form.</li> + <li>Advanced configuration options such as allowing drafts or show users a message indicating how they can edit their submissions.</li> + </ul> + </li> + <li>Your form is now ready for viewing. After receiving submissions, you can check the results users have submitted by visiting the <em>Results</em> tab on the piece of content.</li> + </ul> + <p>Help on adding and configuring the components will be shown after you add your first component.</p> + ", array('!webform-types-message' => $types_message, '!create-content' => url('node/add'), '!types' => $types)); + break; + case 'node/%/webform/components': + $output .= '<p>' . t('This page displays all the components currently configured for this webform node. You may add any number of components to the form, even multiple of the same type. To add a new component, fill in a name and select a type from the fields at the bottom of the table. Submit the form to create the new component or update any changed form values.') . '</p>'; + $output .= '<p>' . t('Click on any existing component\'s name to edit its settings.') . '</p>'; + break; + } + + return $output; +} + +/** + * Implementation of hook_menu(). + */ +function webform_menu() { + $items = array(); + + // Submissions listing. + $items['admin/content/webform'] = array( + 'title' => 'Webforms', + 'page callback' => 'webform_admin_content', + 'access callback' => 'user_access', + 'access arguments' => array('access all webform results'), + 'description' => 'View and edit all the available webforms on your site.', + 'file' => 'includes/webform.admin.inc', + 'type' => MENU_NORMAL_ITEM, + ); + + // Admin Settings. + $items['admin/config/content/webform'] = array( + 'title' => 'Webform settings', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('webform_admin_settings'), + 'access callback' => 'user_access', + 'access arguments' => array('administer site configuration'), + 'description' => 'Global configuration of webform functionality.', + 'file' => 'includes/webform.admin.inc', + 'type' => MENU_NORMAL_ITEM, + ); + + // Node page tabs. + $items['node/%webform_menu/done'] = array( + 'title' => 'Webform confirmation', + 'page callback' => '_webform_confirmation', + 'page arguments' => array(1), + 'access callback' => 'node_access', + 'access arguments' => array('view', 1), + 'type' => MENU_CALLBACK, + ); + $items['node/%webform_menu/webform'] = array( + 'title' => 'Webform', + 'page callback' => 'webform_components_page', + 'page arguments' => array(1), + 'access callback' => 'node_access', + 'access arguments' => array('update', 1), + 'file' => 'includes/webform.components.inc', + 'weight' => 1, + 'type' => MENU_LOCAL_TASK, + ); + $items['node/%webform_menu/webform/components'] = array( + 'title' => 'Form components', + 'page callback' => 'webform_components_page', + 'page arguments' => array(1), + 'access callback' => 'node_access', + 'access arguments' => array('update', 1), + 'file' => 'includes/webform.components.inc', + 'weight' => 0, + 'type' => MENU_DEFAULT_LOCAL_TASK, + ); + $items['node/%webform_menu/webform/configure'] = array( + 'title' => 'Form settings', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('webform_configure_form', 1), + 'access callback' => 'node_access', + 'access arguments' => array('update', 1), + 'file' => 'includes/webform.pages.inc', + 'weight' => 2, + 'type' => MENU_LOCAL_TASK, + ); + + // Node e-mail forms. + $items['node/%webform_menu/webform/emails'] = array( + 'title' => 'E-mails', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('webform_emails_form', 1), + 'access callback' => 'node_access', + 'access arguments' => array('update', 1), + 'file' => 'includes/webform.emails.inc', + 'weight' => 1, + 'type' => MENU_LOCAL_TASK, + ); + $items['node/%webform_menu/webform/emails/%webform_menu_email'] = array( + 'title' => 'Edit e-mail settings', + 'load arguments' => array(1), + 'page arguments' => array('webform_email_edit_form', 1, 4), + 'access callback' => 'node_access', + 'access arguments' => array('update', 1), + 'file' => 'includes/webform.emails.inc', + 'type' => MENU_LOCAL_TASK, + ); + $items['node/%webform_menu/webform/emails/%webform_menu_email/delete'] = array( + 'title' => 'Delete e-mail settings', + 'load arguments' => array(1), + 'page arguments' => array('webform_email_delete_form', 1, 4), + 'access callback' => 'node_access', + 'access arguments' => array('update', 1), + 'type' => MENU_LOCAL_TASK, + ); + + // Node component forms. + $items['node/%webform_menu/webform/components/%webform_menu_component'] = array( + 'load arguments' => array(1, 5), + 'page callback' => 'drupal_get_form', + 'page arguments' => array('webform_component_edit_form', 1, 4, FALSE), + 'access callback' => 'node_access', + 'access arguments' => array('update', 1), + 'type' => MENU_LOCAL_TASK, + ); + $items['node/%webform_menu/webform/components/%webform_menu_component/clone'] = array( + 'load arguments' => array(1, 5), + 'page callback' => 'drupal_get_form', + 'page arguments' => array('webform_component_edit_form', 1, 4, TRUE), + 'access callback' => 'node_access', + 'access arguments' => array('update', 1), + 'type' => MENU_LOCAL_TASK, + ); + $items['node/%webform_menu/webform/components/%webform_menu_component/delete'] = array( + 'load arguments' => array(1, 5), + 'page callback' => 'drupal_get_form', + 'page arguments' => array('webform_component_delete_form', 1, 4), + 'access callback' => 'node_access', + 'access arguments' => array('update', 1), + 'type' => MENU_LOCAL_TASK, + ); + + // AJAX callback for loading select list options. + $items['webform/ajax/options/%webform_menu'] = array( + 'load arguments' => array(3), + 'page callback' => 'webform_select_options_ajax', + 'access callback' => 'node_access', + 'access arguments' => array('update', 3), + 'file' => 'components/select.inc', + 'type' => MENU_CALLBACK, + ); + + // Node webform results. + $items['node/%webform_menu/webform-results'] = array( + 'title' => 'Results', + 'page callback' => 'webform_results_submissions', + 'page arguments' => array(1, FALSE, '50'), + 'access callback' => 'webform_results_access', + 'access arguments' => array(1), + 'file' => 'includes/webform.report.inc', + 'weight' => 2, + 'type' => MENU_LOCAL_TASK, + ); + $items['node/%webform_menu/webform-results/submissions'] = array( + 'title' => 'Submissions', + 'page callback' => 'webform_results_submissions', + 'page arguments' => array(1, FALSE, '50'), + 'access callback' => 'webform_results_access', + 'access arguments' => array(1), + 'file' => 'includes/webform.report.inc', + 'weight' => 4, + 'type' => MENU_DEFAULT_LOCAL_TASK, + ); + $items['node/%webform_menu/webform-results/analysis'] = array( + 'title' => 'Analysis', + 'page callback' => 'webform_results_analysis', + 'page arguments' => array(1), + 'access callback' => 'webform_results_access', + 'access arguments' => array(1), + 'file' => 'includes/webform.report.inc', + 'weight' => 5, + 'type' => MENU_LOCAL_TASK, + ); + $items['node/%webform_menu/webform-results/analysis/%webform_menu_component'] = array( + 'title' => 'Analysis', + 'load arguments' => array(1, 4), + 'page callback' => 'webform_results_analysis', + 'page arguments' => array(1, array(), 4), + 'access callback' => 'webform_results_access', + 'access arguments' => array(1), + 'file' => 'includes/webform.report.inc', + 'type' => MENU_CALLBACK, + ); + $items['node/%webform_menu/webform-results/table'] = array( + 'title' => 'Table', + 'page callback' => 'webform_results_table', + 'page arguments' => array(1, '50'), + 'access callback' => 'webform_results_access', + 'access arguments' => array(1), + 'file' => 'includes/webform.report.inc', + 'weight' => 6, + 'type' => MENU_LOCAL_TASK, + ); + $items['node/%webform_menu/webform-results/download'] = array( + 'title' => 'Download', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('webform_results_download_form', 1), + 'access callback' => 'webform_results_access', + 'access arguments' => array(1), + 'file' => 'includes/webform.report.inc', + 'weight' => 7, + 'type' => MENU_LOCAL_TASK, + ); + $items['node/%webform_menu/webform-results/clear'] = array( + 'title' => 'Clear', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('webform_results_clear_form', 1), + 'access callback' => 'webform_results_clear_access', + 'access arguments' => array(1), + 'file' => 'includes/webform.report.inc', + 'weight' => 8, + 'type' => MENU_LOCAL_TASK, + ); + + // Node submissions. + $items['node/%webform_menu/submissions'] = array( + 'title' => 'Submissions', + 'page callback' => 'webform_results_submissions', + 'page arguments' => array(1, TRUE, '50'), + 'access callback' => 'webform_submission_access', + 'access arguments' => array(1, NULL, 'list'), + 'file' => 'includes/webform.report.inc', + 'type' => MENU_CALLBACK, + ); + $items['node/%webform_menu/submission/%webform_menu_submission'] = array( + 'title' => 'Webform submission', + 'load arguments' => array(1), + 'page callback' => 'webform_submission_page', + 'page arguments' => array(1, 3, 'html'), + 'title callback' => 'webform_submission_title', + 'title arguments' => array(1, 3), + 'access callback' => 'webform_submission_access', + 'access arguments' => array(1, 3, 'view'), + 'file' => 'includes/webform.submissions.inc', + 'type' => MENU_CALLBACK, + ); + $items['node/%webform_menu/submission/%webform_menu_submission/view'] = array( + 'title' => 'View', + 'load arguments' => array(1), + 'page callback' => 'webform_submission_page', + 'page arguments' => array(1, 3, 'html'), + 'access callback' => 'webform_submission_access', + 'access arguments' => array(1, 3, 'view'), + 'weight' => 0, + 'file' => 'includes/webform.submissions.inc', + 'type' => MENU_DEFAULT_LOCAL_TASK, + ); + $items['node/%webform_menu/submission/%webform_menu_submission/edit'] = array( + 'title' => 'Edit', + 'load arguments' => array(1), + 'page callback' => 'webform_submission_page', + 'page arguments' => array(1, 3, 'form'), + 'access callback' => 'webform_submission_access', + 'access arguments' => array(1, 3, 'edit'), + 'weight' => 1, + 'file' => 'includes/webform.submissions.inc', + 'type' => MENU_LOCAL_TASK, + ); + $items['node/%webform_menu/submission/%webform_menu_submission/delete'] = array( + 'title' => 'Delete', + 'load arguments' => array(1), + 'page callback' => 'drupal_get_form', + 'page arguments' => array('webform_submission_delete_form', 1, 3), + 'access callback' => 'webform_submission_access', + 'access arguments' => array(1, 3, 'delete'), + 'weight' => 2, + 'file' => 'includes/webform.submissions.inc', + 'type' => MENU_LOCAL_TASK, + ); + + return $items; +} + +/** + * Menu loader callback. Load a webform node if the given nid is a webform. + */ +function webform_menu_load($nid) { + if (!is_numeric($nid)) { + return FALSE; + } + $node = node_load($nid); + if (!isset($node->type) || !in_array($node->type, webform_variable_get('webform_node_types'))) { + return FALSE; + } + return $node; +} + +/** + * Menu loader callback. Load a webform submission if the given sid is a valid. + */ +function webform_menu_submission_load($sid, $nid) { + module_load_include('inc', 'webform', 'includes/webform.submissions'); + $submission = webform_get_submission($nid, $sid); + return empty($submission) ? FALSE : $submission; +} + +/** + * Menu loader callback. Load a webform component if the given cid is a valid. + */ +function webform_menu_component_load($cid, $nid, $type) { + module_load_include('inc', 'webform', 'includes/webform.components'); + if ($cid == 'new') { + $components = webform_components(); + $component = in_array($type, array_keys($components)) ? array('type' => $type, 'nid' => $nid, 'name' => $_GET['name'], 'mandatory' => $_GET['mandatory'], 'pid' => $_GET['pid'], 'weight' => $_GET['weight']) : FALSE; + } + else { + $node = node_load($nid); + $component = isset($node->webform['components'][$cid]) ? $node->webform['components'][$cid] : FALSE; + } + if ($component) { + webform_component_defaults($component); + } + return $component; +} + + +/** + * Menu loader callback. Load a webform e-mail if the given eid is a valid. + */ +function webform_menu_email_load($eid, $nid) { + module_load_include('inc', 'webform', 'includes/webform.emails'); + $node = node_load($nid); + $email = webform_email_load($eid, $nid); + if ($eid == 'new') { + if (isset($_GET['option']) && isset($_GET['email'])) { + $type = $_GET['option']; + if ($type == 'custom') { + $email['email'] = $_GET['email']; + } + elseif ($type == 'component' && isset($node->webform['components'][$_GET['email']])) { + $email['email'] = $_GET['email']; + } + } + } + + return $email; +} + +function webform_submission_access($node, $submission, $op = 'view', $account = NULL) { + global $user; + $account = isset($account) ? $account : $user; + + $access_all = user_access('access all webform results', $account); + $access_own_submission = isset($submission) && user_access('access own webform submissions', $account) && (($account->uid && $account->uid == $submission->uid) || isset($_SESSION['webform_submission'][$submission->sid])); + $access_node_submissions = user_access('access own webform results', $account) && $account->uid == $node->uid; + + $general_access = $access_all || $access_own_submission || $access_node_submissions; + + // Disable the page cache for anonymous users in this access callback, + // otherwise the "Access denied" page gets cached. + if (!$account->uid && user_access('access own webform submissions', $account)) { + webform_disable_page_cache(); + } + + $module_access = count(array_filter(module_invoke_all('webform_submission_access', $node, $submission, $op, $account))) > 0; + + switch ($op) { + case 'view': + return $module_access || $general_access; + case 'edit': + return $module_access || ($general_access && (user_access('edit all webform submissions', $account) || (user_access('edit own webform submissions', $account) && $account->uid == $submission->uid))); + case 'delete': + return $module_access || ($general_access && (user_access('delete all webform submissions', $account) || (user_access('delete own webform submissions', $account) && $account->uid == $submission->uid))); + case 'list': + return $module_access || user_access('access all webform results', $account) || (user_access('access own webform submissions', $account) && ($account->uid || isset($_SESSION['webform_submission']))) || (user_access('access own webform results', $account) && $account->uid == $node->uid); + } +} + +/** + * Menu access callback. Ensure a user both access and node 'view' permission. + */ +function webform_results_access($node, $account = NULL) { + global $user; + $account = isset($account) ? $account : $user; + + $module_access = count(array_filter(module_invoke_all('webform_results_access', $node, $account))) > 0; + + return node_access('view', $node, $account) && ($module_access || user_access('access all webform results', $account) || (user_access('access own webform results', $account) && $account->uid == $node->uid)); +} + +function webform_results_clear_access($node, $account = NULL) { + global $user; + $account = isset($account) ? $account : $user; + + $module_access = count(array_filter(module_invoke_all('webform_results_clear_access', $node, $account))) > 0; + + return webform_results_access($node, $account) && ($module_access || user_access('delete all webform submissions', $account)); +} + +/** + * Implementation of hook_admin_paths(). + */ +function webform_admin_paths() { + return array( + 'node/*/webform' => TRUE, + 'node/*/webform/*' => TRUE, + 'node/*/webform-results' => TRUE, + 'node/*/webform-results/*' => TRUE, + 'node/*/submission/*' => TRUE, + ); +} + +/** + * Implementation of hook_perm(). + */ +function webform_permission() { + return array( + 'access all webform results' => array( + 'title' => t('Access all webform results'), + 'description' => t('Grants access to the "Results" tab on all webform content. Generally an administrative permission.'), + ), + 'access own webform results' => array( + 'title' => t('Access own webform results'), + 'description' => t('Grants access to the "Results" tab to the author of webform content they have created.'), + ), + 'edit all webform submissions' => array( + 'title' => t('Edit all webform submissions'), + 'description' => t('Allows editing of any webform submission by any user. Generally an administrative permission.'), + ), + 'delete all webform submissions' => array( + 'title' => t('Delete all webform submissions'), + 'description' => t('Allows deleting of any webform submission by any user. Generally an administrative permission.'), + ), + 'access own webform submissions' => array( + 'title' => t('Access own webform submissions'), + 'description' => t('This permission has no effect for anonymous users.'), + ), + 'edit own webform submissions' => array( + 'title' => t('Edit own webform submissions'), + 'description' => t('This permission has no effect for anonymous users.'), + ), + 'delete own webform submissions' => array( + 'title' => t('Delete own webform submissions'), + 'description' => t('This permission has no effect for anonymous users.'), + ), + ); +} + +/** + * Implementation of hook_theme(). + */ +function webform_theme() { + $theme = array( + // webform.module. + 'webform_view' => array( + 'render element' => 'webform', + ), + 'webform_view_messages' => array( + 'variables' => array('node' => NULL, 'teaser' => NULL, 'page' => NULL, 'submission_count' => NULL, 'limit_exceeded' => NULL, 'allowed_roles' => NULL, 'closed' => NULL), + ), + 'webform_form' => array( + 'render element' => 'form', + 'template' => 'templates/webform-form', + 'pattern' => 'webform_form_[0-9]+', + ), + 'webform_confirmation' => array( + 'variables' => array('node' => NULL, 'sid' => NULL), + 'template' => 'templates/webform-confirmation', + 'pattern' => 'webform_confirmation_[0-9]+', + ), + 'webform_element' => array( + 'render element' => 'element', + ), + 'webform_element_text' => array( + 'render element' => 'element', + ), + 'webform_inline_radio' => array( + 'render element' => 'element', + ), + 'webform_mail_message' => array( + 'variables' => array('node' => NULL, 'submission' => NULL, 'email' => NULL), + 'template' => 'templates/webform-mail', + 'pattern' => 'webform_mail(_[0-9]+)?', + ), + 'webform_mail_headers' => array( + 'variables' => array('node' => NULL, 'submission' => NULL, 'email' => NULL), + 'pattern' => 'webform_mail_headers_[0-9]+', + ), + 'webform_token_help' => array( + 'variables' => array(), + ), + // webform.admin.inc. + 'webform_admin_settings' => array( + 'render element' => 'form', + 'file' => 'includes/webform.admin.inc', + ), + 'webform_admin_content' => array( + 'variables' => array('nodes' => NULL), + 'file' => 'includes/webform.admin.inc', + ), + // webform.emails.inc. + 'webform_emails_form' => array( + 'render element' => 'form', + 'file' => 'includes/webform.emails.inc', + ), + 'webform_email_add_form' => array( + 'render element' => 'form', + 'file' => 'includes/webform.emails.inc', + ), + 'webform_email_edit_form' => array( + 'render element' => 'form', + 'file' => 'includes/webform.emails.inc', + ), + // webform.components.inc. + 'webform_components_page' => array( + 'variables' => array('node' => NULL, 'form' => NULL), + 'file' => 'includes/webform.components.inc', + ), + 'webform_components_form' => array( + 'render element' => 'form', + 'file' => 'includes/webform.components.inc', + ), + 'webform_component_select' => array( + 'render element' => 'element', + 'file' => 'includes/webform.components.inc', + ), + // webform.pages.inc. + 'webform_advanced_redirection_form' => array( + 'render element' => 'form', + 'file' => 'includes/webform.pages.inc', + ), + 'webform_advanced_submit_limit_form' => array( + 'render element' => 'form', + 'file' => 'includes/webform.pages.inc', + ), + // webform.report.inc. + 'webform_results_per_page' => array( + 'variables' => array('total_count' => NULL, 'pager_count' => NULL), + 'file' => 'includes/webform.report.inc', + ), + 'webform_results_submissions_header' => array( + 'variables' => array('node' => NULL), + 'file' => 'includes/webform.report.inc', + ), + 'webform_results_submissions' => array( + 'render element' => 'element', + 'template' => 'templates/webform-results-submissions', + 'file' => 'includes/webform.report.inc', + ), + 'webform_results_table_header' => array( + 'variables' => array('node' => NULL), + 'file' => 'includes/webform.report.inc', + ), + 'webform_results_table' => array( + 'variables' => array('node' => NULL, 'components' => NULL, 'submissions' => NULL, 'node' => NULL, 'total_count' => NULL, 'pager_count' => NULL), + 'file' => 'includes/webform.report.inc', + ), + 'webform_results_download_form' => array( + 'render element' => 'form', + 'file' => 'includes/webform.report.inc', + ), + 'webform_results_download_select_format' => array( + 'render element' => 'element', + 'file' => 'includes/webform.report.inc', + ), + 'webform_results_analysis' => array( + 'variables' => array('node' => NULL, 'data' => NULL, 'sids' => array(), 'component' => NULL), + 'file' => 'includes/webform.report.inc', + ), + // webform.submissions.inc + 'webform_submission' => array( + 'render element' => 'renderable', + 'template' => 'templates/webform-submission', + 'pattern' => 'webform_submission_[0-9]+', + 'file' => 'includes/webform.submissions.inc', + ), + 'webform_submission_page' => array( + 'variables' => array('node' => NULL, 'submission' => NULL, 'submission_content' => NULL, 'submission_navigation' => NULL, 'submission_information' => NULL), + 'template' => 'templates/webform-submission-page', + 'file' => 'includes/webform.submissions.inc', + ), + 'webform_submission_information' => array( + 'variables' => array('node' => NULL, 'submission' => NULL), + 'template' => 'templates/webform-submission-information', + 'file' => 'includes/webform.submissions.inc', + ), + 'webform_submission_navigation' => array( + 'variables' => array('node' => NULL, 'submission' => NULL, 'mode' => NULL), + 'template' => 'templates/webform-submission-navigation', + 'file' => 'includes/webform.submissions.inc', + ), + ); + + // Theme functions in all components. + $components = webform_components(TRUE); + foreach ($components as $type => $component) { + if ($theme_additions = webform_component_invoke($type, 'theme')) { + $theme = array_merge($theme, $theme_additions); + } + } + return $theme; +} + +/** + * Implementation of hook_webform_component_info(). + */ +function webform_webform_component_info() { + return array( + 'date' => array( + 'label' => t('Date'), + 'description' => t('Presents month, day, and year fields.'), + 'features' => array( + 'conditional' => FALSE, + ), + 'file' => 'components/date.inc', + ), + 'email' => array( + 'label' => t('E-mail'), + 'description' => t('A special textfield that accepts e-mail addresses.'), + 'file' => 'components/email.inc', + 'features' => array( + 'email_address' => TRUE, + 'spam_analysis' => TRUE, + ), + ), + 'fieldset' => array( + 'label' => t('Fieldset'), + 'description' => t('Fieldsets allow you to organize multiple fields into groups.'), + 'features' => array( + 'csv' => FALSE, + 'required' => FALSE, + 'conditional' => FALSE, + 'group' => TRUE, + ), + 'file' => 'components/fieldset.inc', + ), + 'file' => array( + 'label' => t('File'), + 'description' => t('Allow users to upload files of configurable types.'), + 'features' => array( + 'conditional' => FALSE, + 'attachment' => TRUE, + ), + 'file' => 'components/file.inc', + ), + 'grid' => array( + 'label' => t('Grid'), + 'description' => t('Allows creation of grid questions, denoted by radio buttons.'), + 'features' => array( + 'conditional' => FALSE, + ), + 'file' => 'components/grid.inc', + ), + 'hidden' => array( + 'label' => t('Hidden'), + 'description' => t('A field which is not visible to the user, but is recorded with the submission.'), + 'file' => 'components/hidden.inc', + 'features' => array( + 'required' => FALSE, + 'email_address' => TRUE, + 'email_name' => TRUE, + ), + ), + 'markup' => array( + 'label' => t('Markup'), + 'description' => t('Displays text as HTML in the form; does not render a field.'), + 'features' => array( + 'csv' => FALSE, + 'email' => FALSE, + 'required' => FALSE, + 'conditional' => FALSE, + ), + 'file' => 'components/markup.inc', + ), + 'pagebreak' => array( + 'label' => t('Page break'), + 'description' => t('Organize forms into multiple pages.'), + 'features' => array( + 'csv' => FALSE, + 'required' => FALSE, + ), + 'file' => 'components/pagebreak.inc', + ), + 'select' => array( + 'label' => t('Select options'), + 'description' => t('Allows creation of checkboxes, radio buttons, or select menus.'), + 'file' => 'components/select.inc', + 'features' => array( + 'email_address' => TRUE, + 'email_name' => TRUE, + ), + ), + 'textarea' => array( + 'label' => t('Textarea'), + 'description' => t('A large text area that allows for multiple lines of input.'), + 'file' => 'components/textarea.inc', + 'features' => array( + 'spam_analysis' => TRUE, + ), + ), + 'textfield' => array( + 'label' => t('Textfield'), + 'description' => t('Basic textfield type.'), + 'file' => 'components/textfield.inc', + 'features' => array( + 'email_name' => TRUE, + 'spam_analysis' => TRUE, + ), + ), + 'time' => array( + 'label' => t('Time'), + 'description' => t('Presents the user with hour and minute fields. Optional am/pm fields.'), + 'features' => array( + 'conditional' => FALSE, + ), + 'file' => 'components/time.inc', + ), + ); +} + +/** + * Implementation of hook_forms(). + * + * All webform_client_form forms share the same form handler + */ +function webform_forms($form_id) { + $forms = array(); + if (strpos($form_id, 'webform_client_form_') === 0) { + $forms[$form_id]['callback'] = 'webform_client_form'; + } + return $forms; +} + +/** + * Implementation of hook_webform_select_options_info(). + */ +function webform_webform_select_options_info() { + module_load_include('inc', 'webform', 'includes/webform.options'); + return _webform_options_info(); +} + +/** + * Implementation of hook_file_download(). + * + * Only allow users with view webform submissions to download files. + */ +function webform_file_download($uri) { + global $user; + + // Determine whether this file was a webform upload. If it was, retrieve file + // information, plus the user id of the uploader. + $file = db_query("SELECT ws.uid, f.* FROM {file_managed} f INNER JOIN {webform_submitted_data} wsd ON f.fid = wsd.data INNER JOIN {webform_submissions} ws ON ws.sid = wsd.sid WHERE f.uri = :uri", array('uri' => $uri))->fetchObject(); + if ($file) { + // Allow file access for admins, or for users who are viewing their own + // submissions. + if (user_access('access all webform results') || ($user->uid == $file->uid && user_access('access own webform results'))) { + // TODO: This is a copy/paste from file_file_download. Switch to using + // file_get_content_headers() instead if http://drupal.org/node/943112 + // gets committed. + $name = mime_header_encode($file->filename); + $type = mime_header_encode($file->filemime); + // Serve images, text, and flash content for display rather than download. + $inline_types = variable_get('file_inline_types', array('^text/', '^image/', 'flash$')); + $disposition = 'attachment'; + foreach ($inline_types as $inline_type) { + // Exclamation marks are used as delimiters to avoid escaping slashes. + if (preg_match('!' . $inline_type . '!', $file->filemime)) { + $disposition = 'inline'; + } + } + return array( + 'Content-Type' => $type . '; name="' . $name . '"', + 'Content-Length' => $file->filesize, + 'Content-Disposition' => $disposition . '; filename="' . $name . '"', + 'Cache-Control' => 'private', + ); + } + // This is a webform-controlled file, but the user doesn't have access. + return -1; + } + // This is not a webform-controlled file. + return NULL; +} + +/** + * Implementation of hook_node_type(). + * + * Not a real hook in Drupal 7. Re-used for consistency with the D6 version. + */ +function webform_node_type($op, $info) { + $webform_types = webform_variable_get('webform_node_types'); + $affected_type = isset($info->old_type) ? $info->old_type : $info->type; + $key = array_search($affected_type, $webform_types); + if ($key !== FALSE) { + if ($op == 'update') { + $webform_types[$key] = $info->type; + } + if ($op == 'delete') { + unset($webform_types[$key]); + } + variable_set('webform_node_types', $webform_types); + } +} + +/** + * Implementation of hook_node_type_update(). + */ +function webform_node_type_update($info) { + webform_node_type('update', $info); +} + +/** + * Implementation of hook_node_type_delete(). + */ +function webform_node_type_delete($info) { + webform_node_type('delete', $info); +} + +/** + * Implementation of hook_node_insert(). + */ +function webform_node_insert($node) { + if (!in_array($node->type, webform_variable_get('webform_node_types'))) { + return; + } + + module_load_include('inc', 'webform', 'includes/webform.components'); + module_load_include('inc', 'webform', 'includes/webform.emails'); + + // Insert the webform. + $node->webform['nid'] = $node->nid; + drupal_write_record('webform', $node->webform); + + // Insert the components into the database. Used with clone.module. + if (isset($node->webform['components']) && !empty($node->webform['components'])) { + foreach ($node->webform['components'] as $cid => $component) { + $component['nid'] = $node->nid; // Required for clone.module. + webform_component_insert($component); + } + } + + // Insert emails. Also used with clone.module. + if (isset($node->webform['emails']) && !empty($node->webform['emails'])) { + foreach ($node->webform['emails'] as $eid => $email) { + $email['nid'] = $node->nid; + webform_email_insert($email); + } + } + + // Set the per-role submission access control. + foreach (array_filter($node->webform['roles']) as $rid) { + db_insert('webform_roles')->fields(array('nid' => $node->nid, 'rid' => $rid))->execute(); + } +} + +/** + * Implementation of hook_node_update(). + */ +function webform_node_update($node) { + if (!in_array($node->type, webform_variable_get('webform_node_types'))) { + return; + } + + // Update the webform entry. + $node->webform['nid'] = $node->nid; + drupal_write_record('webform', $node->webform, array('nid')); + + // Compare the webform components and don't do anything if it's not needed. + // The internal cache needs to be reset here so that the cached node entity + // does not get loaded and invalidate the comparisons. + $original = node_load($node->nid, NULL, TRUE); + + if ($original->webform['components'] != $node->webform['components']) { + module_load_include('inc', 'webform', 'includes/webform.components'); + + $original_cids = array_keys($original->webform['components']); + $current_cids = array_keys($node->webform['components']); + + $all_cids = $original_cids + $current_cids; + $deleted_cids = array_diff($original_cids, $current_cids); + $inserted_cids = array_diff($current_cids, $original_cids); + + foreach ($all_cids as $cid) { + if (in_array($cid, $inserted_cids)) { + webform_component_insert($node->webform['components'][$cid]); + } + elseif (in_array($cid, $deleted_cids)) { + webform_component_delete($node, $original->webform['components'][$cid]); + } + elseif ($node->webform['components'][$cid] != $original->webform['components'][$cid]) { + $node->webform['components'][$cid]['nid'] = $node->nid; + webform_component_update($node->webform['components'][$cid]); + } + } + } + + // Compare the webform e-mails and don't do anything if it's not needed. + if ($original->webform['emails'] != $node->webform['emails']) { + module_load_include('inc', 'webform', 'includes/webform.emails'); + + $original_eids = array_keys($original->webform['emails']); + $current_eids = array_keys($node->webform['emails']); + + $all_eids = $original_eids + $current_eids; + $deleted_eids = array_diff($original_eids, $current_eids); + $inserted_eids = array_diff($current_eids, $original_eids); + + foreach ($all_eids as $eid) { + if (in_array($eid, $inserted_eids)) { + webform_email_insert($node->webform['emails'][$eid]); + } + elseif (in_array($eid, $deleted_eids)) { + webform_email_delete($node, $original->webform['emails'][$eid]); + } + elseif ($node->webform['emails'][$eid] != $original->webform['emails'][$eid]) { + $node->webform['emails'][$eid]['nid'] = $node->nid; + webform_email_update($node->webform['emails'][$eid]); + } + } + } + + // Just delete and re-insert roles if they've changed. + if ($original->webform['roles'] != $node->webform['roles']) { + db_delete('webform_roles')->condition('nid', $node->nid)->execute(); + foreach (array_filter($node->webform['roles']) as $rid) { + db_insert('webform_roles')->fields(array('nid' => $node->nid, 'rid' => $rid))->execute(); + } + } +} + +/** + * Implementation of hook_delete(). + */ +function webform_node_delete($node) { + if (!in_array($node->type, webform_variable_get('webform_node_types'))) { + return; + } + + // Allow components clean up extra data, such as uploaded files. + module_load_include('inc', 'webform', 'includes/webform.components'); + foreach ($node->webform['components'] as $cid => $component) { + webform_component_delete($node, $component); + } + + // Remove any trace of webform data from the database. + db_delete('webform')->condition('nid', $node->nid)->execute(); + db_delete('webform_component')->condition('nid', $node->nid)->execute(); + db_delete('webform_emails')->condition('nid', $node->nid)->execute(); + db_delete('webform_roles')->condition('nid', $node->nid)->execute(); + db_delete('webform_submissions')->condition('nid', $node->nid)->execute(); + db_delete('webform_submitted_data')->condition('nid', $node->nid)->execute(); +} + +/** + * Default settings for a newly created webform node. + */ +function webform_node_defaults() { + return array( + 'confirmation' => '', + 'confirmation_format' => filter_default_format(), + 'redirect_url' => '<confirmation>', + 'teaser' => 0, + 'block' => 0, + 'allow_draft' => 0, + 'submit_notice' => 1, + 'submit_text' => '', + 'submit_limit' => -1, + 'submit_interval' => -1, + 'status' => 1, + 'roles' => array(1, 2), + 'emails' => array(), + 'components' => array(), + ); +} + +/** + * Implementation of hook_node_prepare(). + */ +function webform_node_prepare($node) { + $webform_types = webform_variable_get('webform_node_types'); + if (in_array($node->type, $webform_types) && !isset($node->webform)) { + $node->webform = webform_node_defaults(); + } +} + +/** + * Implementation of hook_node_prepare_translation(). + */ +function webform_node_prepare_translation(&$node) { + // Copy all Webform settings over to translated versions of this node. + if (isset($node->translation_source)) { + $source_node = node_load($node->translation_source->nid); + $node->webform = $source_node->webform; + } +} + +/** + * Implementation of hook_node_load(). + */ +function webform_node_load($nodes, $types) { + module_load_include('inc', 'webform', 'includes/webform.components'); + + // Quick check to see if we need to do anything at all for these nodes. + $webform_types = webform_variable_get('webform_node_types'); + if (count(array_intersect($types, $webform_types)) == 0) { + return; + } + + // Select all webforms that match these node IDs. + $result = db_select('webform') + ->fields('webform') + ->condition('nid', array_keys($nodes), 'IN') + ->execute() + ->fetchAllAssoc('nid', PDO::FETCH_ASSOC); + + foreach ($result as $nid => $webform) { + // Load the basic information for each node. + $nodes[$nid]->webform = $webform; + } + + // Load the components, emails, and defaults for all webform-enabled nodes. + // TODO: Increase efficiency here by pulling in all information all at once + // instead of individual queries. + foreach ($nodes as $nid => $node) { + if (!in_array($node->type, $webform_types)) { + continue; + } + + // If a webform record doesn't exist, just return the defaults. + if (!isset($nodes[$nid]->webform)) { + $nodes[$nid]->webform = webform_node_defaults(); + continue; + } + + $nodes[$nid]->webform['roles'] = db_select('webform_roles') + ->fields('webform_roles', array('rid')) + ->condition('nid', $nid) + ->execute() + ->fetchCol(); + $nodes[$nid]->webform['emails'] = db_select('webform_emails') + ->fields('webform_emails') + ->condition('nid', $nid) + ->execute() + ->fetchAllAssoc('eid', PDO::FETCH_ASSOC); + + // Unserialize the exclude component list for e-mails. + foreach ($nodes[$nid]->webform['emails'] as $eid => $email) { + $nodes[$nid]->webform['emails'][$eid]['excluded_components'] = array_filter(explode(',', $email['excluded_components'])); + if (variable_get('webform_format_override', 0)) { + $nodes[$nid]->webform['emails'][$eid]['html'] = variable_get('webform_default_format', 0); + } + } + + // Load components for each node. + $nodes[$nid]->webform['components'] = db_select('webform_component') + ->fields('webform_component') + ->condition('nid', $nid) + ->orderBy('weight') + ->orderBy('name') + ->execute() + ->fetchAllAssoc('cid', PDO::FETCH_ASSOC); + + // Do a little cleanup on each component. + foreach ($nodes[$nid]->webform['components'] as $cid => $component) { + $nodes[$nid]->webform['components'][$cid]['nid'] = $nid; + $nodes[$nid]->webform['components'][$cid]['extra'] = unserialize($component['extra']); + webform_component_defaults($nodes[$nid]->webform['components'][$cid]); + } + + // Organize the components into a fieldset-based order. + if (!empty($nodes[$nid]->webform['components'])) { + $component_tree = array(); + $page_count = 1; + _webform_components_tree_build($nodes[$nid]->webform['components'], $component_tree, 0, $page_count); + $nodes[$nid]->webform['components'] = _webform_components_tree_flatten($component_tree['children']); + } + } +} + +/** + * Implementation of hook_link(). + * Always add a "view form" link. + */ +function webform_link($type, $node = NULL, $teaser = FALSE) { + $links = array(); + if (isset($node->type) && $node->type === 'webform') { + if ($teaser && !$node->webform['teaser']) { + $links['webform_goto'] = array( + 'title' => t('Go to form'), + 'href' => 'node/' . $node->nid, + 'attributes' => array('title' => t('View this form.'), 'class' => array('read-more')) + ); + } + } + return $links; +} + +/** + * Implementation of hook_form_alter(). + */ +function webform_form_alter(&$form, $form_state, $form_id) { + $matches = array(); + if (isset($form['#node']->type) && $form_id == $form['#node']->type . '_node_form' && in_array($form['#node']->type, webform_variable_get('webform_node_types'))) { + $node = $form['#node']; + // Preserve all Webform options currently set on the node. + $form['webform'] = array( + '#type' => 'value', + '#value' => $node->webform, + ); + + // If a new node, redirect the user to the components form after save. + if (empty($node->nid) && in_array($node->type, webform_variable_get('webform_node_types_redirect'))) { + $form['actions']['submit']['#submit'][] = 'webform_form_submit'; + } + } +} + +/** + * Submit handler for the webform node form. + * + * Redirect the user to the components form on new node inserts. Note that this + * fires after the hook_submit() function above. + */ +function webform_form_submit($form, &$form_state) { + drupal_set_message(t('The new webform %title has been created. Add new fields to your webform with the form below.', array('%title' => $form_state['values']['title']))); + $form_state['redirect'] = 'node/' . $form_state['nid'] . '/webform/components'; +} + +/** + * Implementation of hook_node_view(). + */ +function webform_node_view($node, $view_mode) { + global $user; + + if (!in_array($node->type, webform_variable_get('webform_node_types'))) { + return; + } + + // Set teaser and page variables a la Drupal 6. + $teaser = $view_mode == 'teaser'; + $page = arg(0) == 'node' && arg(1) == $node->nid; + + // If empty, a teaser, or a new node (during preview) do not display. + if (empty($node->webform['components']) || ($teaser && !$node->webform['teaser']) || empty($node->nid)) { + return; + } + + $info = array(); + $submission = array(); + $submission_count = 0; + $enabled = TRUE; + $logging_in = FALSE; + $limit_exceeded = FALSE; + $closed = FALSE; + $allowed_roles = array(); + + // When logging in using a form on the same page as a webform node, surpress + // output messages so that they don't show up after the user has logged in. + // See http://drupal.org/node/239343. + if (isset($_POST['op']) && isset($_POST['name']) && isset($_POST['pass'])) { + $logging_in = TRUE; + } + + if ($node->webform['status'] == 0) { + $closed = TRUE; + $enabled = FALSE; + } + else { + // Check if the user's role can submit this webform. + if (variable_get('webform_submission_access_control', 1)) { + foreach ($node->webform['roles'] as $rid) { + $allowed_roles[$rid] = isset($user->roles[$rid]) ? TRUE : FALSE; + } + if (array_search(TRUE, $allowed_roles) === FALSE && $user->uid != 1) { + $enabled = FALSE; + } + } + else { + // If not using Webform submission access control, allow for all roles. + $allowed_roles = array_keys(user_roles()); + } + } + + // Check if the user can add another submission. + if ($node->webform['submit_limit'] != -1) { // -1: Submissions are never throttled. + module_load_include('inc', 'webform', 'includes/webform.submissions'); + + // Disable the form if the limit is exceeded and page cache is not active. + if (($limit_exceeded = _webform_submission_limit_check($node)) && ($user->uid != 0 || variable_get('cache', 0) == 0)) { + $enabled = FALSE; + } + } + + // Get a count of previous submissions by this user. + if ($page && webform_submission_access($node, NULL, 'list')) { + module_load_include('inc', 'webform', 'includes/webform.submissions'); + $submission_count = webform_get_submission_count($node->nid, $user->uid); + } + + // Check if this user has a draft for this webform. + $is_draft = FALSE; + if ($node->webform['allow_draft'] && $user->uid != 0) { + // Draft found - display form with draft data for further editing. + if ($draft_sid = _webform_fetch_draft_sid($node->nid, $user->uid)) { + module_load_include('inc', 'webform', 'includes/webform.submissions'); + $submission = webform_get_submission($node->nid, $draft_sid); + $enabled = TRUE; + $is_draft = TRUE; + } + } + + // Render the form and generate the output. + $form = !empty($node->webform['components']) ? drupal_get_form('webform_client_form_' . $node->nid, $node, $submission, $is_draft) : ''; + + // Remove the surrounding <form> tag if this is a preview. + if (!empty($node->in_preview)) { + $form['#type'] = 'markup'; + } + + // Print out messages for the webform. + if (empty($node->in_preview) && !isset($node->webform_block) && !$logging_in) { + theme('webform_view_messages', array('node' => $node, 'teaser' => $teaser, 'page' => $page, 'submission_count' => $submission_count, 'limit_exceeded' => $limit_exceeded, 'allowed_roles' => $allowed_roles, 'closed' => $closed)); + } + + // Add the output to the node. + $node->content['webform'] = array( + '#theme' => 'webform_view', + '#node' => $node, + '#teaser' => $teaser, + '#page' => $page, + '#form' => $form, + '#enabled' => $enabled, + // TODO: field_extra_field_weight() was removed in Drupal 7 Alpha 6. Remove + // this conditional after D7 core stabalizes. + '#weight' => function_exists('field_extra_field_weight') ? field_extra_field_weight('node', $node->type, 'webform') : 10, + ); +} + +/** + * Output the Webform into the node content. + * + * @param $node + * The webform node object. + * @param $teaser + * If this webform is being displayed as the teaser view of the node. + * @param $page + * If this webform node is being viewed as the main content of the page. + * @param $form + * The rendered form. + * @param $enabled + * If the form allowed to be completed by the current user. + */ +function theme_webform_view($variables) { + // Only show the form if this user is allowed access. + if ($variables['webform']['#enabled']) { + return drupal_render($variables['webform']['#form']); + } +} + +/** + * Display a message to a user if they are not allowed to fill out a form. + * + * @param $node + * The webform node object. + * @param $teaser + * If this webform is being displayed as the teaser view of the node. + * @param $page + * If this webform node is being viewed as the main content of the page. + * @param $submission_count + * The number of submissions this user has already submitted. Not calculated + * for anonymous users. + * @param $limit_exceeded + * Boolean value if the submission limit for this user has been exceeded. + * @param $allowed_roles + * A list of user roles that are allowed to submit this webform. + * @param $closed + * Boolean value if submissions are closed. + */ +function theme_webform_view_messages($variables) { + global $user; + + $node = $variables['node']; + $teaser = $variables['teaser']; + $page = $variables['page']; + $submission_count = $variables['submission_count']; + $limit_exceeded = $variables['limit_exceeded']; + $allowed_roles = $variables['allowed_roles']; + $closed = $variables['closed']; + + $type = 'notice'; + $cached = $user->uid == 0 && variable_get('cache', 0); + + if ($closed) { + $message = t('Submissions for this form are closed.'); + } + // If open and not allowed to submit the form, give an explanation. + elseif (array_search(TRUE, $allowed_roles) === FALSE && $user->uid != 1) { + if (empty($allowed_roles)) { + // No roles are allowed to submit the form. + $message = t('Submissions for this form are closed.'); + } + elseif (isset($allowed_roles[2])) { + // The "authenticated user" role is allowed to submit and the user is currently logged-out. + $login = url('user/login', array('query' => drupal_get_destination())); + $register = url('user/register', array('query' => drupal_get_destination())); + if (variable_get('user_register', 1) == 0) { + $message = t('You must <a href="!login">login</a> to view this form.', array('!login' => $login)); + } + else { + $message = t('You must <a href="!login">login</a> or <a href="!register">register</a> to view this form.', array('!login' => $login, '!register' => $register)); + } + } + else { + // The user must be some other role to submit. + $message = t('You do not have permission to view this form.'); + } + } + + // If the user has exceeded the limit of submissions, explain the limit. + elseif ($limit_exceeded && !$cached) { + if ($node->webform['submit_interval'] == -1 && $node->webform['submit_limit'] > 1) { + $message = t('You have submitted this form the maximum number of times (@count).', array('@count' => $node->webform['submit_limit'])); + } + elseif ($node->webform['submit_interval'] == -1 && $node->webform['submit_limit'] == 1) { + $message = t('You have already submitted this form.'); + } + else { + $message = t('You may not submit another entry at this time.'); + } + $type = 'error'; + } + + // If the user has submitted before, give them a link to their submissions. + if ($submission_count > 0 && $node->webform['submit_notice'] == 1 && !$cached) { + if (empty($message)) { + $message = t('You have already submitted this form.') . ' ' . t('<a href="!url">View your previous submissions</a>.', array('!url' => url('node/' . $node->nid . '/submissions'))); + } + else { + $message .= ' ' . t('<a href="!url">View your previous submissions</a>.', array('!url' => url('node/' . $node->nid . '/submissions'))); + } + } + + if ($page && isset($message)) { + drupal_set_message($message, $type); + } +} + +/** + * Implementation of hook_mail(). + */ +function webform_mail($key, &$message, $params) { + $message['headers'] = array_merge($message['headers'], $params['headers']); + $message['subject'] = $params['subject']; + $message['body'][] = $params['message']; +} + +/** + * Implementation of hook_block_info(). + */ +function webform_block_info() { + $blocks = array(); + $webform_node_types = webform_variable_get('webform_node_types'); + if (!empty($webform_node_types)) { + $query = db_select('webform', 'w')->fields('w')->fields('n', array('title')); + $query->leftJoin('node', 'n', 'w.nid = n.nid'); + $query->condition('w.block', 1); + $query->condition('n.type', $webform_node_types, 'IN'); + $result = $query->execute(); + foreach ($result as $data) { + $blocks['client-block-'. $data->nid] = array( + 'info' => t('Webform: !title', array('!title' => $data->title)), + 'cache' => DRUPAL_NO_CACHE, + ); + } + } + return $blocks; +} + +/** + * Implementation of hook_block_view(). + */ +function webform_block_view($delta = '') { + global $user; + + // Load the block-specific configuration settings. + $webform_blocks = variable_get('webform_blocks', array()); + $settings = isset($webform_blocks[$delta]) ? $webform_blocks[$delta] : array(); + $settings += array( + 'display' => 'form', + ); + + // Get the node ID from delta. + $nid = drupal_substr($delta, strrpos($delta, '-') + 1); + + // Load node in current language. + if (module_exists('translation')) { + global $language; + if (($translations = translation_node_get_translations($nid)) && (isset($translations[$language->language]))) { + $nid = $translations[$language->language]->nid; + } + } + + // The webform node to display in the block. + $node = node_load($nid); + + // Return if user has no access to the webform node. + if (!node_access('view', $node)) { + return; + } + + // This is a webform node block. + $node->webform_block = TRUE; + + // Use the node title for the block title. + $subject = $node->title; + + // Generate the content of the block based on display settings. + if ($settings['display'] == 'form') { + webform_node_view($node, 'full'); + $content = $node->content['webform']; + } + else { + $teaser = ($settings['display'] == 'teaser') ? 'teaser' : 'full'; + $content = node_view($node, $teaser); + } + + // Create the block. + $block = array( + 'subject' => $subject, + 'content' => $content, + ); + return $block; +} + +/** + * Implementation of hook_block_configure(). + */ +function webform_block_configure($delta = '') { + // Load the block-specific configuration settings. + $webform_blocks = variable_get('webform_blocks', array()); + $settings = isset($webform_blocks[$delta]) ? $webform_blocks[$delta] : array(); + $settings += array( + 'display' => 'form', + ); + + $form = array(); + $form['display'] = array( + '#type' => 'radios', + '#title' => t('Display mode'), + '#default_value' => $settings['display'], + '#options' => array( + 'form' => t('Form only'), + 'full' => t('Full node'), + 'teaser' => t('Teaser'), + ), + '#description' => t('The display mode determines how much of the webform to show within the block.'), + ); + return $form; +} + +/** + * Implementation of hook_block_save(). + */ +function webform_block_save($delta = '', $edit = array()) { + // Load the previously defined block-specific configuration settings. + $settings = variable_get('webform_blocks', array()); + // Build the settings array. + $new_settings[$delta] = array( + 'display' => $edit['display'], + ); + // We store settings for multiple blocks in just one variable + // so we merge the existing settings with the new ones before save. + variable_set('webform_blocks', array_merge($settings, $new_settings)); +} + +/** + * Client form generation function. If this is displaying an existing + * submission, pass in the $submission variable with the contents of the + * submission to be displayed. + * + * @param $form + * The current form array (always empty). + * @param $form_state + * The current form values of a submission, used in multipage webforms. + * @param $node + * The current webform node. + * @param $submission + * An object containing information about the form submission if we're + * displaying a result. + * @param $is_draft + * Optional. Set to TRUE if displaying a draft. + * @param $filter + * Whether or not to filter the contents of descriptions and values when + * building the form. Values need to be unfiltered to be editable by + * Form Builder. + */ +function webform_client_form($form, $form_state, $node, $submission, $is_draft = FALSE, $filter = TRUE) { + global $user; + + // Attach necessary JavaScript and CSS. + $form['#attached'] = array( + 'css' => array(drupal_get_path('module', 'webform') . '/css/webform.css'), + 'js' => array(drupal_get_path('module', 'webform') . '/js/webform.js'), + ); + module_load_include('inc', 'webform', 'includes/webform.components'); + + // Bind arguments to $form to make them available in theming and form_alter. + $form['#node'] = $node; + $form['#submission'] = $submission; + $form['#is_draft'] = $is_draft; + $form['#filter'] = $filter; + + // Add a theme function for this form. + $form['#theme'] = array('webform_form_' . $node->nid, 'webform_form'); + + // Add a css class for all client forms. + $form['#attributes'] = array('class' => array('webform-client-form')); + + // Set the encoding type (necessary for file uploads). + $form['#attributes']['enctype'] = 'multipart/form-data'; + + // Set the form action to the node ID in case this is being displayed on the + // teaser, subsequent pages should be on the node page directly. + if (!isset($node->webform_block) && empty($submission)) { + $form['#action'] = url('node/' . $node->nid); + } + + $form['#submit'] = array('webform_client_form_pages', 'webform_client_form_submit'); + $form['#validate'] = array('webform_client_form_validate'); + + if (is_array($node->webform['components']) && !empty($node->webform['components'])) { + // Prepare a new form array. + $form['submitted'] = array( + '#tree' => TRUE + ); + $form['details'] = array( + '#tree' => TRUE, + ); + + // Put the components into a tree structure. + if (!isset($form_state['storage']['component_tree'])) { + $form_state['webform']['component_tree'] = array(); + $form_state['webform']['page_count'] = 1; + $form_state['webform']['page_num'] = 1; + _webform_components_tree_build($node->webform['components'], $form_state['webform']['component_tree'], 0, $form_state['webform']['page_count']); + } + else { + $form_state['webform']['component_tree'] = $form_state['storage']['component_tree']; + $form_state['webform']['page_count'] = $form_state['storage']['page_count']; + $form_state['webform']['page_num'] = $form_state['storage']['page_num']; + } + + // Shorten up our variable names. + $component_tree = $form_state['webform']['component_tree']; + $page_count = $form_state['webform']['page_count']; + $page_num = $form_state['webform']['page_num']; + + // Recursively add components to the form. + foreach ($component_tree['children'] as $cid => $component) { + $component_value = isset($form_state['values']['submitted'][$component['form_key']]) ? $form_state['values']['submitted'][$component['form_key']] : NULL; + if (_webform_client_form_rule_check($node, $component, $page_num, $form_state)) { + _webform_client_form_add_component($node, $component, $component_value, $form['submitted'], $form, $form_state, $submission, 'form', $page_num, $filter); + } + } + + // These form details help managing data upon submission. + $form['details']['nid'] = array( + '#type' => 'value', + '#value' => $node->nid, + ); + $form['details']['sid'] = array( + '#type' => 'hidden', + '#value' => isset($submission->sid) ? $submission->sid : '', + ); + $form['details']['uid'] = array( + '#type' => 'value', + '#value' => isset($submission->uid) ? $submission->uid : $user->uid, + ); + $form['details']['page_num'] = array( + '#type' => 'hidden', + '#value' => $page_num, + ); + $form['details']['page_count'] = array( + '#type' => 'hidden', + '#value' => $page_count, + ); + $form['details']['finished'] = array( + '#type' => 'hidden', + '#value' => isset($submission->is_draft) ? (!$submission->is_draft) : 0, + ); + + // Add buttons for pages, drafts, and submissions. + $form['actions'] = array( + '#type' => 'actions', + '#weight' => 1000, + ); + + if ($page_count > 1) { + $next_page = t('Next Page >'); + $prev_page = t('< Previous Page'); + + // Add the submit button(s). + if ($node->webform['allow_draft'] && (empty($submission) || $submission->is_draft) && $user->uid != 0) { + $form['actions']['draft'] = array( + '#type' => 'submit', + '#value' => t('Save Draft'), + '#weight' => -2, + '#validate' => array(), + ); + } + if ($page_num > 1) { + $form['actions']['previous'] = array( + '#type' => 'submit', + '#value' => $prev_page, + '#weight' => 5, + '#validate' => array(), + ); + } + if ($page_num == $page_count) { + $form['actions']['submit'] = array( + '#type' => 'submit', + '#value' => empty($node->webform['submit_text']) ? t('Submit') : t($node->webform['submit_text']), + '#weight' => 10, + ); + } + elseif ($page_num < $page_count) { + $form['actions']['next'] = array( + '#type' => 'submit', + '#value' => $next_page, + '#weight' => 10, + ); + } + } + else { + // Add the submit button. + $form['actions']['submit'] = array( + '#type' => 'submit', + '#value' => empty($node->webform['submit_text']) ? t('Submit') : t($node->webform['submit_text']), + '#weight' => 10, + ); + } + } + + return $form; +} + +/** + * Check if a component should be displayed on the current page. + */ +function _webform_client_form_rule_check($node, $component, $page_num, $form_state = NULL, $submission = NULL) { + $conditional_values = isset($component['extra']['conditional_values']) ? $component['extra']['conditional_values'] : NULL; + $conditional_component = isset($component['extra']['conditional_component']) && isset($node->webform['components'][$component['extra']['conditional_component']]) ? $node->webform['components'][$component['extra']['conditional_component']] : NULL; + + // Check the rules for this entire page. Note individual page breaks are + // checked down below in the individual component rule checks. + $show_page = TRUE; + if ($component['page_num'] > 1 && $component['type'] != 'pagebreak') { + foreach ($node->webform['components'] as $cid => $page_component) { + if ($page_component['type'] == 'pagebreak' && $page_component['page_num'] == $page_num) { + $show_page = _webform_client_form_rule_check($node, $page_component, $page_num, $form_state, $submission); + break; + } + } + } + + // Check any parents' visibility rules. + $show_parent = $show_page; + if ($show_parent && $component['pid'] && isset($node->webform['components'][$component['pid']])) { + $parent_component = $node->webform['components'][$component['pid']]; + $show_parent = _webform_client_form_rule_check($node, $parent_component, $page_num, $form_state, $submission); + } + + // Check the individual component rules. + $show_component = $show_parent; + if ($show_component && ($page_num == 0 || $component['page_num'] == $page_num) && $conditional_component && strlen(trim($conditional_values))) { + $input_values = array(); + if (isset($form_state)) { + $parents = webform_component_parent_keys($node, $conditional_component); + $input_value = isset($form_state['values']['submitted']) ? $form_state['values']['submitted'] : array(); + foreach ($parents as $parent) { + if (isset($input_value[$parent])) { + $input_value = $input_value[$parent]; + } + else { + $input_value = NULL; + break; + } + } + $input_values = is_array($input_value) ? $input_value : array($input_value); + } + elseif (isset($submission)) { + $input_values = $submission->data[$conditional_component['cid']]['value']; + } + + $test_values = array_map('trim', explode("\n", $conditional_values)); + if (empty($input_values) && !empty($test_values)) { + $show_component = FALSE; + } + else { + foreach ($input_values as $input_value) { + if ($show_component = in_array($input_value, $test_values)) { + break; + } + } + } + + if ($component['extra']['conditional_operator'] == '!=') { + $show_component = !$show_component; + } + } + + return $show_component; +} + +/** + * Add a component to a renderable array. Called recursively for fieldsets. + * + * This function assists in the building of the client form, as well as the + * display of results, and the text of e-mails. + * + * @param $component + * The component to be added to the form. + * @param $component_value + * The components current value if known. + * @param $parent_fieldset + * The fieldset to which this element will be added. + * @param $form + * The entire form array. + * @param $form_state + * The form state. + * @param $submission + * The Webform submission as retrieved from the database. + * @param $format + * The format the form should be displayed as. May be one of the following: + * - form: Show as an editable form. + * - html: Show as HTML results. + * - text: Show as plain text. + * @param $filter + * Whether the form element properties should be filtered. Only set to FALSE + * if needing the raw properties for editing. + * + * @see webform_client_form + * @see webform_submission_render + */ +function _webform_client_form_add_component($node, $component, $component_value, &$parent_fieldset, &$form, $form_state, $submission, $format = 'form', $page_num = 0, $filter = TRUE) { + $cid = $component['cid']; + + // Load with submission information if necessary. + if ($format != 'form') { + // This component is display only. + $data = empty($submission->data[$cid]['value']) ? NULL : $submission->data[$cid]['value']; + if ($display_element = webform_component_invoke($component['type'], 'display', $component, $data, $format)) { + // The form_builder() function usually adds #parents and #id for us, but + // because these are not marked for #input, we need to add them manually. + if (!isset($display_element['#parents'])) { + $parents = isset($parent_fieldset['#parents']) ? $parent_fieldset['#parents'] : array('submitted'); + $parents[] = $component['form_key']; + $display_element['#parents'] = $parents; + } + if (!isset($display_element['#id'])) { + $display_element['#id'] = drupal_clean_css_identifier('edit-' . implode('-', $display_element['#parents'])); + } + $parent_fieldset[$component['form_key']] = $display_element; + } + } + elseif ($component['page_num'] == $page_num) { + // Add this user-defined field to the form (with all the values that are always available). + $data = isset($submission->data[$cid]['value']) ? $submission->data[$cid]['value'] : NULL; + if ($element = webform_component_invoke($component['type'], 'render', $component, $data, $filter)) { + $parent_fieldset[$component['form_key']] = $element; + + // Override the value if one already exists in the form state. + if (isset($component_value)) { + $parent_fieldset[$component['form_key']]['#default_value'] = $component_value; + if (is_array($component_value)) { + foreach ($component_value as $key => $value) { + if (isset($parent_fieldset[$component['form_key']][$key])) { + $parent_fieldset[$component['form_key']][$key]['#default_value'] = $value; + } + } + } + } + } + else { + drupal_set_message(t('The webform component @type is not able to be displayed', array('@type' => $component['type']))); + } + } + + // Disable validation initially on all elements. We manually validate + // all webform elements in webform_client_form_validate(). + if (isset($parent_fieldset[$component['form_key']])) { + $parent_fieldset[$component['form_key']]['#validated'] = TRUE; + $parent_fieldset[$component['form_key']]['#webform_validated'] = FALSE; + } + + if (isset($component['children']) && is_array($component['children'])) { + foreach ($component['children'] as $scid => $subcomponent) { + $subcomponent_value = isset($component_value[$subcomponent['form_key']]) ? $component_value[$subcomponent['form_key']] : NULL; + if (_webform_client_form_rule_check($node, $subcomponent, $page_num, $form_state, $submission)) { + _webform_client_form_add_component($node, $subcomponent, $subcomponent_value, $parent_fieldset[$component['form_key']], $form, $form_state, $submission, $format, $page_num, $filter); + } + } + } +} + +function webform_client_form_validate($form, &$form_state) { + $node = node_load($form_state['values']['details']['nid']); + $finished = $form_state['values']['details']['finished']; + + // Check that the user has not exceeded the submission limit. + // This usually will only apply to anonymous users when the page cache is + // enabled, because they may submit the form even if they do not have access. + if ($node->webform['submit_limit'] != -1) { // -1: Submissions are never throttled. + module_load_include('inc', 'webform', 'includes/webform.submissions'); + + if (!$finished && $limit_exceeded = _webform_submission_limit_check($node)) { + $error = theme('webform_view_messages', array('node' => $node, 'teaser' => 0, 'pager' => 1, 'submission_count' => 0, 'limit_exceeded' => $limit_exceeded, 'allowed_roles' => array_keys(user_roles()), 'closed' => FALSE)); + form_set_error('', $error); + return; + } + } + + // Run all #element_validate and #required checks. These are skipped initially + // by setting #validated = TRUE on all components when they are added. + _webform_client_form_validate($form, $form_state); +} + +/** + * Recursive validation function to trigger normal Drupal validation. + * + * This function imitates _form_validate in Drupal's form.inc, only it sets + * a different property to ensure that validation has occurred. + */ +function _webform_client_form_validate($elements, &$form_state, $first_run = TRUE) { + static $form; + if ($first_run) { + $form = $elements; + } + + // Recurse through all children. + foreach (element_children($elements) as $key) { + if (isset($elements[$key]) && $elements[$key]) { + _webform_client_form_validate($elements[$key], $form_state, FALSE); + } + } + // Validate the current input. + if (isset($elements['#webform_validated']) && $elements['#webform_validated'] == FALSE) { + if (isset($elements['#needs_validation'])) { + // Make sure a value is passed when the field is required. + // A simple call to empty() will not cut it here as some fields, like + // checkboxes, can return a valid value of '0'. Instead, check the + // length if it's a string, and the item count if it's an array. + if ($elements['#required'] && (!count($elements['#value']) || (is_string($elements['#value']) && strlen(trim($elements['#value'])) == 0))) { + form_error($elements, t('!name field is required.', array('!name' => $elements['#title']))); + } + + // Verify that the value is not longer than #maxlength. + if (isset($elements['#maxlength']) && drupal_strlen($elements['#value']) > $elements['#maxlength']) { + form_error($elements, t('!name cannot be longer than %max characters but is currently %length characters long.', array('!name' => empty($elements['#title']) ? $elements['#parents'][0] : $elements['#title'], '%max' => $elements['#maxlength'], '%length' => drupal_strlen($elements['#value'])))); + } + + if (isset($elements['#options']) && isset($elements['#value'])) { + if ($elements['#type'] == 'select') { + $options = form_options_flatten($elements['#options']); + } + else { + $options = $elements['#options']; + } + if (is_array($elements['#value'])) { + $value = $elements['#type'] == 'checkboxes' ? array_keys(array_filter($elements['#value'])) : $elements['#value']; + foreach ($value as $v) { + if (!isset($options[$v])) { + form_error($elements, t('An illegal choice has been detected. Please contact the site administrator.')); + watchdog('form', 'Illegal choice %choice in !name element.', array('%choice' => $v, '!name' => empty($elements['#title']) ? $elements['#parents'][0] : $elements['#title']), WATCHDOG_ERROR); + } + } + } + elseif ($elements['#value'] !== '' && !isset($options[$elements['#value']])) { + form_error($elements, t('An illegal choice has been detected. Please contact the site administrator.')); + watchdog('form', 'Illegal choice %choice in %name element.', array('%choice' => $elements['#value'], '%name' => empty($elements['#title']) ? $elements['#parents'][0] : $elements['#title']), WATCHDOG_ERROR); + } + } + } + + // Call any element-specific validators. These must act on the element + // #value data. + if (isset($elements['#element_validate'])) { + foreach ($elements['#element_validate'] as $function) { + if (function_exists($function)) { + $function($elements, $form_state, $form); + } + } + } + $elements['#webform_validated'] = TRUE; + } +} + +/** + * Handle the processing of pages and conditional logic. + */ +function webform_client_form_pages($form, &$form_state) { + $node = node_load($form_state['values']['details']['nid']); + + // Move special settings to storage. + if (isset($form_state['webform']['component_tree'])) { + $form_state['storage']['component_tree'] = $form_state['webform']['component_tree']; + $form_state['storage']['page_count'] = $form_state['webform']['page_count']; + $form_state['storage']['page_num'] = $form_state['webform']['page_num']; + } + + // Check for a multi-page form that is not yet complete. + $submit_op = empty($node->webform['submit_text']) ? t('Submit') : t($node->webform['submit_text']); + $draft_op = t('Save Draft'); + if (!in_array($form_state['values']['op'], array($submit_op, $draft_op))) { + // Checkboxes need post-processing to maintain their values. + _webform_client_form_submit_process($node, $form_state['values']['submitted'], array('select', 'grid')); + + // Store values from the current page in the form state storage. + if (is_array($form_state['values']['submitted'])) { + foreach ($form_state['values']['submitted'] as $key => $val) { + $form_state['storage']['submitted'][$key] = $val; + } + } + + // Update form state values with those from storage. + if (isset($form_state['storage']['submitted'])) { + foreach ($form_state['storage']['submitted'] as $key => $val) { + $form_state['values']['submitted'][$key] = $val; + } + } + + // Set the page number. + if (!isset($form_state['storage']['page_num'])) { + $form_state['storage']['page_num'] = 1; + } + if (end($form_state['clicked_button']['#parents']) == 'next') { + $direction = 1; + } + else { + $direction = 0; + } + + // If the next page has no components that need to be displayed, skip it. + if (isset($direction)) { + $components = $direction ? $node->webform['components'] : array_reverse($node->webform['components'], TRUE); + $last_component = end($node->webform['components']); + foreach ($components as $component) { + if ($component['type'] == 'pagebreak' && ( + $direction == 1 && $component['page_num'] > $form_state['storage']['page_num'] || + $direction == 0 && $component['page_num'] <= $form_state['storage']['page_num'])) { + $previous_pagebreak = $component; + continue; + } + if (isset($previous_pagebreak)) { + $page_num = $previous_pagebreak['page_num'] + $direction - 1; + // If we've found an component on this page, advance to that page. + if ($component['page_num'] == $page_num && _webform_client_form_rule_check($node, $component, $page_num, $form_state)) { + $form_state['storage']['page_num'] = $page_num; + break; + } + // If we've gotten to the end of the form without finding any more + // components, set the page number more than the max, ending the form. + elseif ($direction && $component['cid'] == $last_component['cid']) { + $form_state['storage']['page_num'] = $page_num + 1; + } + } + } + } + + // Rebuild the form and display the next page. + if ($form_state['storage']['page_num'] <= $form_state['storage']['page_count']) { + $form_state['rebuild'] = TRUE; + return; + } + } + + if (isset($form_state['storage']['submitted'])) { + // Merge any stored submission data for multistep forms. + $original_values = is_array($form_state['values']['submitted']) ? $form_state['values']['submitted'] : array(); + unset($form_state['values']['submitted']); + + foreach ($form_state['storage']['submitted'] as $key => $val) { + $form_state['values']['submitted'][$key] = $val; + } + foreach ($original_values as $key => $val) { + $form_state['values']['submitted'][$key] = $val; + } + + // Remove the variable so it doesn't show up in the additional processing. + unset($original_values); + } + + // Remove the form state storage now that we're done with the pages. + unset($form_state['rebuild']); + unset($form_state['storage']); + + // Perform post processing by components. + _webform_client_form_submit_process($node, $form_state['values']['submitted']); + + // Flatten trees within the submission. + $form_state['values']['submitted_tree'] = $form_state['values']['submitted']; + $form_state['values']['submitted'] = _webform_client_form_submit_flatten($node, $form_state['values']['submitted']); + + // Set a flag indicating processing should continue and be saved. + $form_state['webform_completed'] = TRUE; +} + +/** + * Submit handler for saving the form values and sending e-mails. + */ +function webform_client_form_submit($form, &$form_state) { + module_load_include('inc', 'webform', 'includes/webform.submissions'); + module_load_include('inc', 'webform', 'includes/webform.components'); + global $user; + + if (empty($form_state['webform_completed'])) { + return; + } + + $node = $form['#node']; + + // Check if user is submitting as a draft. + $is_draft = $form_state['values']['op'] == t('Save Draft'); + + // Create a submission object. + $submission = (object) array( + 'nid' => $node->nid, + 'uid' => $user->uid, + 'submitted' => REQUEST_TIME, + 'remote_addr' => ip_address(), + 'is_draft' => (int) $is_draft, + 'data' => webform_submission_data($node, $form_state['values']['submitted']), + ); + + // Save the submission to the database. + if (empty($form_state['values']['details']['sid'])) { + // No sid was found thus insert it in the dataabase. + $form_state['values']['details']['sid'] = webform_submission_insert($node, $submission); + $form_state['values']['details']['is_new'] = TRUE; + + // Set a cookie including the server's submission time. + // The cookie expires in the length of the interval plus a day to compensate for different timezones. + if (variable_get('webform_use_cookies', 0)) { + $cookie_name = 'webform-' . $node->nid; + $time = time(); + setcookie($cookie_name . '[' . $time . ']', $time, $time + $node->webform['submit_interval'] + 86400); + } + + // Save session information about this submission for anonymous users, + // allowing them to access or edit their submissions. + if (!$user->uid && user_access('access own webform submissions')) { + $_SESSION['webform_submission'][$form_state['values']['details']['sid']] = $node->nid; + } + } + else { + // Sid was found thus update the existing sid in the database. + $submission->sid = $form_state['values']['details']['sid']; + webform_submission_update($node, $submission); + $form_state['values']['details']['is_new'] = FALSE; + } + + $sid = $form_state['values']['details']['sid']; + + // Check if this form is sending an email. + if (!$is_draft && !$form_state['values']['details']['finished']) { + $submission = webform_get_submission($node->nid, $sid, TRUE); + + // Create a themed message for mailing. + foreach ($node->webform['emails'] as $eid => $email) { + $cid = is_numeric($email['email']) && isset($node->webform['components'][$email['email']]) ? $email['email'] : 'custom'; + + // Pass through the theme layer if using the default template. + if ($email['template'] == 'default') { + $email['message'] = theme(array('webform_mail_' . $node->nid, 'webform_mail', 'webform_mail_message'), array('node' => $node, 'submission' => $submission, 'email' => $email)); + } + else { + $email['message'] = $email['template']; + } + + // Replace tokens in the message. + $email['html'] = ($email['html'] && module_exists('mimemail')); + $email['message'] = _webform_filter_values($email['message'], $node, $submission, $email, FALSE, TRUE); + + // Build the e-mail headers. + $email['headers'] = theme(array('webform_mail_headers_' . $node->nid, 'webform_mail_headers'), array('node' => $node, 'submission' => $submission, 'email' => $email)); + + // Assemble the FROM string. + if (isset($email['headers']['From'])) { + // If a header From is already set, don't override it. + $email['from'] = $email['headers']['From']; + unset($email['headers']['From']); + } + else { + $email['from'] = webform_format_email_address($email['from_address'], $email['from_name'], $node, $submission); + } + + // Update the subject if set in the themed headers. + if (isset($email['headers']['Subject'])) { + $email['subject'] = $email['headers']['Subject']; + unset($email['headers']['Subject']); + } + else { + $email['subject'] = webform_format_email_subject($email['subject'], $node, $submission); + } + + // Update the to e-mail if set in the themed headers. + if (isset($email['headers']['To'])) { + $email['email'] = $email['headers']['To']; + unset($email['headers']['To']); + } + + // Generate the list of addresses that this e-mail will be sent to. + $addresses = array_filter(explode(',', $email['email'])); + $addresses_final = array(); + foreach ($addresses as $address) { + $address = trim($address); + + // After filtering e-mail addresses with component values, a single value + // might contain multiple addresses (such as from checkboxes or selects). + $address = webform_format_email_address($address, NULL, $node, $submission, TRUE, FALSE, 'short'); + + if (is_array($address)) { + foreach ($address as $new_address) { + $new_address = trim($new_address); + if (valid_email_address($new_address)) { + $addresses_final[] = $new_address; + } + } + } + elseif (valid_email_address($address)) { + $addresses_final[] = $address; + } + } + + // Mail the webform results. + foreach ($addresses_final as $address) { + // Verify that this submission is not attempting to send any spam hacks. + if (_webform_submission_spam_check($address, $email['subject'], $email['from'], $email['headers'])) { + watchdog('webform', 'Possible spam attempt from @remote_addr' . "<br />\n" . nl2br(htmlentities($email['message'])), array('@remote_add' => ip_address())); + drupal_set_message(t('Illegal information. Data not submitted.'), 'error'); + return FALSE; + } + + $language = $user->uid ? user_preferred_language($user) : language_default(); + $mail_params = array( + 'message' => $email['message'], + 'subject' => $email['subject'], + 'headers' => $email['headers'], + 'node' => $node, + 'submission' => $submission, + ); + + if (module_exists('mimemail')) { + // Load attachments for the e-mail. + $attachments = array(); + if ($email['attachments']) { + webform_component_include('file'); + foreach ($node->webform['components'] as $component) { + if (webform_component_feature($component['type'], 'attachment') && !empty($submission->data[$component['cid']]['value'][0])) { + $file = webform_get_file($submission->data[$component['cid']]['value'][0]); + if ($file) { + $file->list = 1; // Needed to include in attachments. + $attachments[] = $file; + } + } + } + } + + // Send the e-mail via MIME mail. + mimemail($email['from'], $address, $email['subject'], $email['message'], !$email['html'], $email['headers'], $email['html'] ? NULL : $email['message'], $attachments, 'webform'); + } + else { + // Normal Drupal mailer. + drupal_mail('webform', 'submission', $address, $language, $mail_params, $email['from']); + } + } + + } + } + + // Strip out empty tags added by WYSIWYG editors if needed. + $confirmation = strlen(trim(strip_tags($node->webform['confirmation']))) ? $node->webform['confirmation'] : ''; + $redirect_url = trim($node->webform['redirect_url']); + + // Remove the domain name from the redirect. + $redirect_url = preg_replace('/^' . preg_quote($GLOBALS['base_url'], '/') . '\//', '', $redirect_url); + + // Check confirmation and redirect_url fields. + $message = NULL; + $redirect = NULL; + $external_url = FALSE; + if ($is_draft) { + $message = t('Draft saved'); + } + elseif (!empty($form_state['values']['details']['finished'])) { + $message = t('Submission updated.'); + } + elseif ($redirect_url == '<none>') { + $redirect = NULL; + } + elseif ($redirect_url == '<confirmation>') { + $redirect = array('node/' . $node->nid . '/done', array('query' => array('sid' => $sid))); + } + elseif (valid_url($redirect_url, TRUE)) { + $redirect = $redirect_url; + $external_url = TRUE; + } + elseif ($redirect_url && strpos($redirect_url, 'http') !== 0) { + $parts = drupal_parse_url($redirect_url); + $parts['query'] ? ($parts['query']['sid'] = $sid) : ($parts['query'] = array('sid' => $sid)); + $query = $parts['query']; + $redirect = array($parts['path'], array('query' => $query, 'fragment' => $parts['fragment'])); + } + + // Show a message if manually set. + if (isset($message)) { + drupal_set_message($message); + } + // If redirecting and we have a confirmation message, show it as a message. + elseif (!$external_url && (!empty($redirect_url) && $redirect_url != '<confirmation>') && !empty($confirmation)) { + drupal_set_message(check_markup($confirmation, $node->webform['confirmation_format'], FALSE)); + } + + $form_state['redirect'] = $redirect; +} + +/** + * Post processes the submission tree with any updates from components. + * + * @param $node + * The full webform node. + * @param $form_values + * The form values for the form. + * @param $types + * Optional. Specific types to perform processing. + * @param $parent + * Internal use. The current parent CID whose children are being processed. + */ +function _webform_client_form_submit_process($node, &$form_values, $types = NULL, $parent = 0) { + if (is_array($form_values)) { + foreach ($form_values as $form_key => $value) { + $cid = webform_get_cid($node, $form_key, $parent); + if (is_array($value) && isset($node->webform['components'][$cid]['type']) && webform_component_feature($node->webform['components'][$cid]['type'], 'group')) { + _webform_client_form_submit_process($node, $form_values[$form_key], $types, $cid); + } + + if (isset($node->webform['components'][$cid])) { + // Call the component process submission function. + $component = $node->webform['components'][$cid]; + if ((!isset($types) || in_array($component['type'], $types))) { + $new_value = webform_component_invoke($component['type'], 'submit', $component, $form_values[$component['form_key']]); + if ($new_value !== NULL) { + $form_values[$component['form_key']] = $new_value; + } + } + } + } + } +} + +/** + * Flattens a submitted form back into a single array representation (rather than nested fields) + */ +function _webform_client_form_submit_flatten($node, $fieldset, $parent = 0) { + $values = array(); + + if (is_array($fieldset)) { + foreach ($fieldset as $form_key => $value) { + $cid = webform_get_cid($node, $form_key, $parent); + + if (is_array($value) && webform_component_feature($node->webform['components'][$cid]['type'], 'group')) { + $values += _webform_client_form_submit_flatten($node, $value, $cid); + } + else { + $values[$cid] = $value; + } + } + } + + return $values; +} + +/** + * Prints the confirmation message after a successful submission. + */ +function _webform_confirmation($node) { + drupal_set_title($node->title); + webform_set_breadcrumb($node); + if (empty($output)) { + $output = theme(array('webform_confirmation_' . $node->nid, 'webform_confirmation'), array('node' => $node, 'sid' => $_GET['sid'])); + } + return $output; +} + +/** + * Prepare for theming of the webform form. + */ +function template_preprocess_webform_form(&$vars) { + if (isset($vars['form']['details']['nid']['#value'])) { + $vars['nid'] = $vars['form']['details']['nid']['#value']; + } + elseif (isset($vars['form']['submission']['#value'])) { + $vars['nid'] = $vars['form']['submission']['#value']->nid; + } +} + +/** + * Prepare for theming of the webform submission confirmation. + */ +function template_preprocess_webform_confirmation(&$vars) { + $confirmation = check_markup($vars['node']->webform['confirmation'], $vars['node']->webform['confirmation_format'], FALSE); + // Strip out empty tags added by WYSIWYG editors if needed. + $vars['confirmation_message'] = strlen(trim(strip_tags($confirmation))) ? $confirmation : ''; +} + +/** + * Prepare to theme the contents of e-mails sent by webform. + */ +function template_preprocess_webform_mail_message(&$vars) { + global $user; + + $vars['user'] = $user; + $vars['ip_address'] = ip_address(); +} + +/** + * Replacement for theme_form_element(). + */ +function theme_webform_element($variables) { + // Ensure defaults. + $variables['element'] += array( + '#title_display' => 'before', + ); + + $element = $variables['element']; + + // All elements using this for display only are given the "display" type. + if (isset($element['#format']) && $element['#format'] == 'html') { + $type = 'display'; + } + else { + $type = (isset($element['#type']) && !in_array($element['#type'], array('markup', 'textfield'))) ? $element['#type'] : $element['#webform_component']['type']; + } + $parents = str_replace('_', '-', implode('--', array_slice($element['#parents'], 1))); + + $wrapper_classes = array( + 'form-item', + 'webform-component', + 'webform-component-' . $type, + ); + $output = '<div class="' . implode(' ', $wrapper_classes) . '" id="webform-component-' . $parents . '">' . "\n"; + $required = !empty($element['#required']) ? '<span class="form-required" title="' . t('This field is required.') . '">*</span>' : ''; + + // If #title is not set, we don't display any label or required marker. + if (!isset($element['#title'])) { + $element['#title_display'] = 'none'; + } + $prefix = isset($element['#field_prefix']) ? '<span class="field-prefix">' . _webform_filter_xss($element['#field_prefix']) . '</span> ' : ''; + $suffix = isset($element['#field_suffix']) ? ' <span class="field-suffix">' . _webform_filter_xss($element['#field_suffix']) . '</span>' : ''; + + switch ($element['#title_display']) { + case 'before': + case 'invisible': + $output .= ' ' . theme('form_element_label', $variables); + $output .= ' ' . $prefix . $element['#children'] . $suffix . "\n"; + break; + + case 'after': + $output .= ' ' . $prefix . $element['#children'] . $suffix; + $output .= ' ' . theme('form_element_label', $variables) . "\n"; + break; + + case 'none': + case 'attribute': + // Output no label and no required marker, only the children. + $output .= ' ' . $prefix . $element['#children'] . $suffix . "\n"; + break; + } + + if (!empty($element['#description'])) { + $output .= ' <div class="description">' . $element['#description'] . "</div>\n"; + } + + $output .= "</div>\n"; + + return $output; +} + +/** + * Output a form element in plain text format. + */ +function theme_webform_element_text($variables) { + $element = $variables['element']; + $value = $variables['element']['#children']; + + $output = ''; + $is_group = webform_component_feature($element['#webform_component']['type'], 'group'); + + // Output the element title. + if (isset($element['#title'])) { + if ($is_group) { + $output .= '--' . $element['#title'] . '--'; + } + elseif (!in_array(substr($element['#title'], -1), array('?', ':', '!', '%', ';', '@'))) { + $output .= $element['#title'] . ':'; + } + else { + $output .= $element['#title']; + } + } + + // Wrap long values at 65 characters, allowing for a few fieldset indents. + // It's common courtesy to wrap at 75 characters in e-mails. + if ($is_group && strlen($value) > 65) { + $value = wordwrap($value, 65, "\n"); + $lines = explode("\n", $value); + foreach ($lines as $key => $line) { + $lines[$key] = ' ' . $line; + } + $value = implode("\n", $lines); + } + + // Add the value to the output. + if ($value) { + $output .= (strpos($value, "\n") === FALSE ? ' ' : "\n") . $value; + } + + // Indent fieldsets. + if ($is_group) { + $lines = explode("\n", $output); + foreach ($lines as $number => $line) { + if (strlen($line)) { + $lines[$number] = ' ' . $line; + } + } + $output = implode("\n", $lines); + $output .= "\n"; + } + + if ($output) { + $output .= "\n"; + } + + return $output; +} + +/** + * Theme a radio button and another element together. + * + * This is used in the e-mail configuration to show a radio button and a text + * field or select list on the same line. + */ +function theme_webform_inline_radio($variables) { + $element = $variables['element']; + + // Add element's #type and #name as class to aid with JS/CSS selectors. + $class = array('form-item'); + if (!empty($element['#type'])) { + $class[] = 'form-type-' . strtr($element['#type'], '_', '-'); + } + if (!empty($element['#name'])) { + $class[] = 'form-item-' . strtr($element['#name'], array(' ' => '-', '_' => '-', '[' => '-', ']' => '')); + } + + // Add container-inline to all elements. + $class[] = 'webform-container-inline'; + if (isset($element['#inline_element'])) { + $variables['element']['#title'] = $variables['element']['#title'] . ': '; + } + + $output = '<div class="' . implode(' ', $class) . '">' . "\n"; + $output .= ' ' . $element['#children']; + if (!empty($element['#title'])) { + $output .= ' ' . theme('form_element_label', $variables) . "\n"; + } + if (isset($element['#inline_element'])) { + $output .= ' ' . $element['#inline_element'] . "\n"; + } + + if (!empty($element['#description'])) { + $output .= ' <div class="description">' . $element['#description'] . "</div>\n"; + } + + $output .= "</div>\n"; + + return $output; +} + +/** + * Theme the headers when sending an email from webform. + * + * @param $node + * The complete node object for the webform. + * @param $submission + * The webform submission of the user. + * @param $email + * If you desire to make different e-mail headers depending on the recipient, + * you can check the $email['email'] property to output different content. + * This will be the ID of the component that is a conditional e-mail + * recipient. For the normal e-mails, it will have the value of 'default'. + * @return + * An array of headers to be used when sending a webform email. If headers + * for "From", "To", or "Subject" are set, they will take precedence over + * the values set in the webform configuration. + */ +function theme_webform_mail_headers($variables) { + $headers = array( + 'X-Mailer' => 'Drupal Webform (PHP/' . phpversion() . ')', + ); + return $headers; +} + +/** + * Check if current user has a draft of this webform, and return the sid. + */ +function _webform_fetch_draft_sid($nid, $uid) { + return db_select('webform_submissions') + ->fields('webform_submissions', array('sid')) + ->condition('nid', $nid) + ->condition('uid', $uid) + ->condition('is_draft', 1) + ->orderBy('submitted', 'DESC') + ->execute() + ->fetchField(); +} + +/** + * Filters all special tokens provided by webform, such as %post and %profile. + * + * @param $string + * The string to have its tokens replaced. + * @param $node + * If replacing node-level tokens, the node for which tokens will be created. + * @param $submission + * If replacing submission-level tokens, the submission for which tokens will + * be created. + * @param $email + * If replacing tokens within the context of an e-mail, the Webform e-mail + * settings array. + * @param $strict + * Boolean value indicating if the results should be run through check_plain. + * This is used any time the values will be output as HTML, but not in + * default values or e-mails. + * @param $allow_anonymous + * Boolean value indicating if all tokens should be replaced for anonymous + * users, even if they contain sensitive user information such as %session or + * %ip_address. This is disabled by default to prevent user data from being + * preserved in the anonymous page cache and should only be used in + * non-cached situations, such as e-mails. + */ +function _webform_filter_values($string, $node = NULL, $submission = NULL, $email = NULL, $strict = TRUE, $allow_anonymous = FALSE) { + global $user; + static $replacements; + + // Don't do any filtering if the string is empty. + if (strlen(trim($string)) == 0) { + return $string; + } + + // Setup default token replacements. + if (!isset($replacements)) { + $replacements['unsafe'] = array(); + $replacements['safe']['%site'] = variable_get('site_name', 'drupal'); + $replacements['safe']['%date'] = format_date(REQUEST_TIME, 'large'); + } + + // Node replacements. + if (isset($node) && !array_key_exists('%title', $replacements)) { + $replacements['safe']['%title'] = $node->title; + } + + // Determine the display format. + $format = isset($email['html']) && $email['html'] ? 'html' : 'text'; + + // Submission replacements. + if (isset($submission) && !isset($replacements['email'][$format])) { + module_load_include('inc', 'webform', 'includes/webform.components.inc'); + + // E-mails may be sent in two formats, keep tokens separate for each one. + $replacements['email'][$format] = array(); + + foreach ($submission->data as $cid => $value) { + $component = $node->webform['components'][$cid]; + + // Find by form key. + $parents = webform_component_parent_keys($node, $component); + $form_key = implode('][', $parents); + $display_element = webform_component_invoke($component['type'], 'display', $component, $value['value'], $format); + if (empty($display_element['#parents'])) { + $display_element['#parents'] = array_merge(array('submitted'), $parents); + } + if (empty($display_element['#id'])) { + $display_element['#id'] = drupal_html_id('edit-' . implode('-', $display_element['#parents'])); + } + $replacements['email'][$format]['%email[' . $form_key . ']'] = render($display_element); + $display_element['#theme_wrappers'] = array(); // Remove label and wrappers. + $replacements['email'][$format]['%value[' . $form_key . ']'] = render($display_element); + } + + // Submission edit URL. + $replacements['unsafe']['%submission_url'] = url('node/' . $node->nid . '/submission/' . $submission->sid, array('absolute' => TRUE)); + } + + // Token for the entire form tree for e-mails. + if (isset($submission) && isset($email)) { + $replacements['email'][$format]['%email_values'] = webform_submission_render($node, $submission, $email, $format); + } + + // Provide a list of candidates for token replacement. + $special_tokens = array( + 'safe' => array( + '%get' => $_GET, + '%post' => $_POST, + ), + 'unsafe' => array( + '%cookie' => $_COOKIE, + '%session' => isset($_SESSION) ? $_SESSION : array(), + '%request' => $_REQUEST, + '%server' => $_SERVER, + '%profile' => (array) $user, + ), + ); + + // Replacements of global variable tokens. + if (!isset($replacements['specials_set'])) { + $replacements['specials_set'] = TRUE; + + // Load profile information if available. + if ($user->uid) { + $account = user_load($user->uid); + $special_tokens['unsafe']['%profile'] = (array) $account; + } + + // User replacements. + if (!array_key_exists('%username', $replacements['unsafe'])) { + $replacements['unsafe']['%username'] = isset($user->name) ? $user->name : ''; + $replacements['unsafe']['%useremail'] = isset($user->mail) ? $user->mail : ''; + $replacements['unsafe']['%ip_address'] = ip_address(); + } + + // Populate the replacements array with special variables. + foreach ($special_tokens as $safe_state => $tokens) { + foreach ($tokens as $token => $variable) { + // Safety check in case $_POST or some other global has been removed + // by a naughty module, in which case $variable may be NULL. + if (!is_array($variable)) { + continue; + } + + foreach ($variable as $key => $value) { + // This special case for profile module dates. + if ($token == '%profile' && is_array($value) && isset($value['year'])) { + $replacement = format_date(strtotime($value['month'] . '/' . $value['day'] . '/' . $value['year']), 'custom', 'F j, Y', '0'); + } + else { + $replacement = (!is_array($value) && !is_object($value)) ? $value : ''; + } + $replacements[$safe_state][$token . '[' . $key . ']'] = $replacement; + } + } + } + } + + // Make a copy of the replacements so we don't affect the static version. + $safe_replacements = $replacements['safe']; + + // Restrict replacements for anonymous users. Not all tokens can be used + // because they may expose session or other private data to other users when + // anonymous page caching is enabled. + if ($user->uid || $allow_anonymous) { + $safe_replacements += $replacements['unsafe']; + if (isset($replacements['email'][$format])) { + $safe_replacements += $replacements['email'][$format]; + } + } + else { + foreach ($replacements['unsafe'] as $key => $value) { + $safe_replacements[$key] = ''; + } + } + + $find = array_keys($safe_replacements); + $replace = array_values($safe_replacements); + $string = str_replace($find, $replace, $string); + + // Clean up any unused tokens. + foreach ($special_tokens as $safe_state => $tokens) { + foreach (array_keys($tokens) as $token) { + $string = preg_replace('/\\' . $token . '\[\w+\]/', '', $string); + } + } + + return $strict ? filter_xss($string) : $string; +} + +/** + * Filters all special tokens provided by webform, and allows basic layout in descriptions. + */ +function _webform_filter_descriptions($string, $node = NULL, $submission = NULL) { + return strlen($string) == 0 ? '' : check_markup(_webform_filter_values($string, $node, $submission, NULL, FALSE)); +} + +/** + * Filter labels for display by running through XSS checks. + */ +function _webform_filter_xss($string) { + static $allowed_tags; + $allowed_tags = isset($allowed_tags) ? $allowed_tags : webform_variable_get('webform_allowed_tags'); + return filter_xss($string, $allowed_tags); +} + +/** + * Given a form_key and a list of form_key parents, determine the cid. + * + * @param $node + * A fully loaded node object. + * @param $form_key + * The form key for which we're finding a cid. + * @param $parent + * The cid of the parent component. + */ +function webform_get_cid(&$node, $form_key, $pid) { + foreach ($node->webform['components'] as $cid => $component) { + if ($component['form_key'] == $form_key && $component['pid'] == $pid) { + return $cid; + } + } +} + +/** + * Retreive a Drupal variable with the appropriate default value. + */ +function webform_variable_get($variable) { + switch ($variable) { + case 'webform_allowed_tags': + $result = array('a', 'em', 'strong', 'code', 'img'); + break; + case 'webform_default_from_name': + $result = variable_get('webform_default_from_name', variable_get('site_name', '')); + break; + case 'webform_default_from_address': + $result = variable_get('webform_default_from_address', variable_get('site_mail', ini_get('sendmail_from'))); + break; + case 'webform_default_subject': + $result = variable_get('webform_default_subject', t('Form submission from: %title')); + break; + case 'webform_node_types': + $result = variable_get('webform_node_types', array('webform')); + break; + case 'webform_node_types_redirect': + $result = variable_get('webform_node_types_redirect', array('webform')); + break; + } + return $result; +} + +function theme_webform_token_help($variables) { + $basic_tokens = array( + '%username', + '%useremail', + '%ip_address', + '%site', + '%date', + ); + + $special_tokens = array( + '%profile[' . t('key') . ']', + '%server[' . t('key') . ']', + '%session[' . t('key') . ']', + '%get[' . t('key') . ']', + '%post[' . t('key') . ']', + '%request[' . t('key') . ']', + ); + + if (isset($node)) { + $submission_tokens = array( + t('@submission_url - The URL for viewing the completed submission.', array('@submission_url' => '%submission_url')), + t('@email_values - All included components in a hierarchical structure.', array('@email_values' => '%email_values')), + t('@email_key - A formatted value and field label. Elements may be accessed such as <em>%email[fieldset_a][key_b]</em>. Do not include quotes.', array('@email_key' => '%email[key]')), + t('@value_key - A value without additional formatting. Elements may be accessed such as <em>%value[fieldset_a][key_b]</em>. Do not include quotes.', array('@value_key' => '%value[key]')), + ); + } + + $output = ''; + $output .= '<p>' . t('You may use special tokens in this field that will be replaced with dynamic values.') . '</p>'; + + if (!empty($submission_tokens)) { + $output .= theme('item_list', array('items' => $submission_tokens, 'title' => t('Component variables'))); + } + + $output .= theme('item_list', array('items' => $basic_tokens, 'title' => t('Basic variables'))); + $output .= theme('item_list', array('items' => $special_tokens, 'title' => t('Special variables'))); + $output .= '<p>' . t('You can use %server[key] to add any of the special PHP <a href="http://www.php.net/reserved.variables#reserved.variables.server">$_SERVER</a> variables, %session[key] to add any of the special PHP <a href="http://www.php.net/reserved.variables#reserved.variables.session">$_SESSION</a> variables and %get[key] to create prefilled forms from the <a href="http://www.php.net/reserved.variables#reserved.variables.get">URL</a>. %cookie, %request and %post also work with their respective PHP variables. For example %server[HTTP_USER_AGENT], %session[id], or %get[q].') . '</p>'; + if (module_exists('profile')) { + $output .= '<p>' . t('If you are using the Profile module, you can also access all profile data using the syntax %profile[form_name]. If you for example have a profile value named profile_city, add the variable %profile[profile_city].') . '</p>'; + } + + $fieldset = array( + '#title' => t('Token values'), + '#type' => 'fieldset', + '#collapsible' => TRUE, + '#collapsed' => TRUE, + '#children' => '<div>' . $output . '</div>', + '#attributes' => array('class' => array('collapsible', 'collapsed')), + ); + return theme('fieldset', array('element' => $fieldset)); +} + +function _webform_safe_name($name) { + $new = trim($name); + + // If transliteration is available, use it to convert names to ASCII. + if (function_exists('transliteration_get')) { + $new = transliteration_get($new, ''); + $new = str_replace(array(' ', '-', '/'), array('_', '_', '_'), $new); + } + else { + $new = str_replace( + array(' ', '-', '/', '€', 'ƒ', 'Š', 'Ž', 'š', 'ž', 'Ÿ', '¢', '¥', 'µ', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Œ', 'œ', 'Æ', 'Ð', 'Þ', 'ß', 'æ', 'ð', 'þ'), + array('_', '_', '_', 'E', 'f', 'S', 'Z', 's', 'z', 'Y', 'c', 'Y', 'u', 'A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th'), + $new); + } + + $new = drupal_strtolower($new); + $new = preg_replace('/[^a-z0-9_]/', '', $new); + return $new; +} + +/** + * Given an email address and a name, format an e-mail address. + * + * @param $address + * The e-mail address. + * @param $name + * The name to be used in the formatted address. + * @param $node + * The webform node if replacements will be done. + * @param $submission + * The webform submission values if replacements will be done. + * @param $encode + * Encode the text for use in an e-mail. + * @param $single + * Force a single value to be returned, even if a component expands to + * multiple addresses. This is useful to ensure a single e-mail will be + * returned for the "From" address. + * @param $format + * The e-mail format, defaults to the site-wide setting. May be either "short" + * or "long". + */ +function webform_format_email_address($address, $name, $node = NULL, $submission = NULL, $encode = TRUE, $single = TRUE, $format = NULL) { + if (!isset($format)) { + $format = variable_get('webform_email_address_format', 'long'); + } + + if ($name == 'default') { + $name = webform_variable_get('webform_default_from_name'); + } + elseif (is_numeric($name) && isset($node->webform['components'][$name])) { + if (isset($submission->data[$name]['value'])) { + $name = $submission->data[$name]['value']; + } + else { + $name = t('Value of !component', array('!component' => $node->webform['components'][$name]['name'])); + } + } + + if ($address == 'default') { + $address = webform_variable_get('webform_default_from_address'); + } + elseif (is_numeric($address) && isset($node->webform['components'][$address])) { + if (isset($submission->data[$address]['value'])) { + $values = $submission->data[$address]['value'];; + $address = array(); + foreach ($values as $value) { + $address = array_merge($address, explode(',', $value)); + } + } + else { + $address = t('Value of "!component"', array('!component' => $node->webform['components'][$address]['name'])); + } + } + + // Convert arrays into a single value for From values. + if ($single) { + $address = is_array($address) ? reset($address) : $address; + $name = is_array($name) ? reset($name) : $name; + } + + // Address may be an array if a component value was used on checkboxes. + if (is_array($address)) { + foreach ($address as $key => $individual_address) { + $address[$key] = _webform_filter_values($individual_address, $node, $submission, NULL, FALSE, TRUE); + } + } + else { + $address = _webform_filter_values($address, $node, $submission, NULL, FALSE, TRUE); + } + + if ($format == 'long' && !empty($name)) { + $name = _webform_filter_values($name, $node, $submission, NULL, FALSE, TRUE); + if ($encode) { + $name = mime_header_encode($name); + } + return '"' . $name . '" <' . $address . '>'; + } + else { + return $address; + } +} + +/** + * Given an email subject, format it with any needed replacements. + */ +function webform_format_email_subject($subject, $node = NULL, $submission = NULL) { + if ($subject == 'default') { + $subject = webform_variable_get('webform_default_subject'); + } + elseif (is_numeric($subject) && isset($node->webform['components'][$subject])) { + $component = $node->webform['components'][$subject]; + if (isset($submission->data[$subject]['value'])) { + $display_function = '_webform_display_' . $component['type']; + $value = $submission->data[$subject]['value']; + + // Convert the value to a clean text representation if possible. + if (function_exists($display_function)) { + $display = $display_function($component, $value, 'text'); + $display['#theme_wrappers'] = array(); + $subject = str_replace("\n", ' ', drupal_render($display)); + } + else { + $subject = $value; + } + } + else { + $subject = t('Value of "!component"', array('!component' => $component['name'])); + } + } + + // Convert arrays to strings (may happen if checkboxes are used as the value). + if (is_array($subject)) { + $subject = reset($subject); + } + + return _webform_filter_values($subject, $node, $submission, NULL, FALSE, TRUE); +} + +/** + * Convert an array of components into a tree + */ +function _webform_components_tree_build($src, &$tree, $parent, &$page_count) { + foreach ($src as $cid => $component) { + if ($component['pid'] == $parent) { + _webform_components_tree_build($src, $component, $cid, $page_count); + if ($component['type'] == 'pagebreak') { + $page_count++; + } + $tree['children'][$cid] = $component; + $tree['children'][$cid]['page_num'] = $page_count; + } + } + return $tree; +} + +/** + * Flatten a component tree into a flat list. + */ +function _webform_components_tree_flatten($tree) { + $components = array(); + foreach ($tree as $cid => $component) { + if (isset($component['children'])) { + unset($component['children']); + $components[$cid] = $component; + // array_merge() can't be used here because the keys are numeric. + $children = _webform_components_tree_flatten($tree[$cid]['children']); + foreach ($children as $ccid => $ccomponent) { + $components[$ccid] = $ccomponent; + } + } + else { + $components[$cid] = $component; + } + } + return $components; +} + +/** + * Helper for the uasort in webform_tree_sort() + */ +function _webform_components_sort($a, $b) { + if ($a['weight'] == $b['weight']) { + return strcasecmp($a['name'], $b['name']); + } + return ($a['weight'] < $b['weight']) ? -1 : 1; +} + +/** + * Sort each level of a component tree by weight and name + */ +function _webform_components_tree_sort($tree) { + if (isset($tree['children']) && is_array($tree['children'])) { + $children = array(); + uasort($tree['children'], '_webform_components_sort'); + foreach ($tree['children'] as $cid => $component) { + $children[$cid] = _webform_components_tree_sort($component); + } + $tree['children'] = $children; + } + return $tree; +} + +/** + * Get a list of all available component definitions. + */ +function webform_components($include_disabled = FALSE, $reset = FALSE) { + static $components, $disabled; + + if (!isset($components) || $reset) { + $components = array(); + $disabled = array_flip(variable_get('webform_disabled_components', array())); + foreach (module_implements('webform_component_info') as $module) { + $module_components = module_invoke($module, 'webform_component_info'); + foreach ($module_components as $type => $info) { + $module_components[$type]['module'] = $module; + $module_components[$type]['enabled'] = !array_key_exists($type, $disabled); + } + $components += $module_components; + } + drupal_alter('webform_component_info', $components); + ksort($components); + } + + return $include_disabled ? $components : array_diff_key($components, $disabled); +} + +/** + * Build a list of components suitable for use as select list options. + */ +function webform_component_options($include_disabled = FALSE) { + $component_info = webform_components($include_disabled); + $options = array(); + foreach ($component_info as $type => $info) { + $options[$type] = $info['label']; + } + return $options; +} + +/** + * Load a component file into memory. + * + * @param $component_type + * The string machine name of a component. + */ +function webform_component_include($component_type) { + static $included = array(); + + // No need to load components that have already been added once. + if (!isset($included[$component_type])) { + $components = webform_components(TRUE); + $included[$component_type] = TRUE; + + if (($info = $components[$component_type]) && isset($info['file'])) { + $pathinfo = pathinfo($info['file']); + $basename = basename($pathinfo['basename'], '.' . $pathinfo['extension']); + $path = (!empty($pathinfo['dirname']) ? $pathinfo['dirname'] . '/' : '') . $basename; + module_load_include($pathinfo['extension'], $info['module'], $path); + } + } +} + +/** + * Invoke a component callback. + * + * @param $type + * The component type as a string. + * @param $callback + * The callback to execute. + * @param ... + * Any additional parameters required by the $callback. + */ +function webform_component_invoke($type, $callback) { + $args = func_get_args(); + $type = array_shift($args); + $callback = array_shift($args); + $function = '_webform_' . $callback . '_' . $type; + webform_component_include($type); + if (function_exists($function)) { + return call_user_func_array($function, $args); + } +} + +/** + * Disable the Drupal page cache. + */ +function webform_disable_page_cache() { + // PressFlow and Drupal 7 method. + if (function_exists('drupal_page_is_cacheable')) { + drupal_page_is_cacheable(FALSE); + } + // Drupal 6 hack to disable page cache. + else { + $GLOBALS['conf']['cache'] = FALSE; + } +} + +/** + * Set the necessary breadcrumb for the page we are on. + */ +function webform_set_breadcrumb($node, $submission = NULL) { + $breadcrumb = drupal_get_breadcrumb(); + + if (isset($node)) { + $webform_breadcrumb = array(); + $webform_breadcrumb[] = array_shift($breadcrumb); + $webform_breadcrumb[] = l($node->title, 'node/' . $node->nid); + if (isset($submission)) { + $last_link = array_shift($breadcrumb); + $webform_breadcrumb[] = l(t('Submissions'), 'node/' . $node->nid . '/submissions'); + if (isset($last_link)) { + $webform_breadcrumb[] = $last_link; + } + } + $breadcrumb = $webform_breadcrumb; + } + + drupal_set_breadcrumb($breadcrumb); +} + +/** + * Convert an ISO 8601 date or time into an array. + * + * This converst full format dates or times. Either a date or time may be + * provided, in which case only those portions will be returned. Dashes and + * colons must be used, never implied. + * + * Formats: + * Dates: YYYY-MM-DD + * Times: HH:MM:SS + * Datetimes: YYYY-MM-DDTHH:MM:SS + * + * @param $string + * An ISO 8601 date, time, or datetime. + * @param $type + * If wanting only specific fields back, specify either "date" or "time". + * Leaving empty will return an array with both date and time keys, even if + * some are empty. Returns an array with the following keys: + * - year + * - month + * - day + * - hour (in 24hr notation) + * - minute + * - second + */ +function webform_date_array($string, $type = NULL) { + $pattern = '/((\d{4}?)-(\d{2}?)-(\d{2}?))?(T?(\d{2}?):(\d{2}?):(\d{2}?))?/'; + $matches = array(); + preg_match($pattern, $string, $matches); + $matches += array_fill(0, 9, ''); + + $return = array(); + + // Check for a date string. + if ($type == 'date' || !isset($type)) { + $return['year'] = $matches[2] !== '' ? (int) $matches[2] : ''; + $return['month'] = $matches[3] !== '' ? (int) $matches[3] : ''; + $return['day'] = $matches[4] !== '' ? (int) $matches[4] : ''; + } + + // Check for a time string. + if ($type == 'time' || !isset($type)) { + $return['hour'] = $matches[6] !== '' ? (int) $matches[6] : ''; + $return['minute'] = $matches[7] !== '' ? (int) $matches[7] : ''; + $return['second'] = $matches[8] !== '' ? (int) $matches[8] : ''; + } + + return $return; +} + +/** + * Convert an array of a date or time into an ISO 8601 compatible string. + * + * @param $array + * The array to convert to a date or time string. + * @param $type + * If wanting a specific string format back specify either "date" or "time". + * Otherwise a full ISO 8601 date and time string will be returned. + */ +function webform_date_string($array, $type = NULL) { + $string = ''; + + if ($type == 'date' || !isset($type)) { + $string .= empty($array['year']) ? '0000' : sprintf('%04d', $array['year']); + $string .= '-'; + $string .= empty($array['month']) ? '00' : sprintf('%02d', $array['month']); + $string .= '-'; + $string .= empty($array['day']) ? '00' : sprintf('%02d', $array['day']); + } + + if (!isset($type)) { + $string .= 'T'; + } + + if ($type == 'time' || !isset($type)) { + $string .= empty($array['hour']) ? '00' : sprintf('%02d', $array['hour']); + $string .= ':'; + $string .= empty($array['minute']) ? '00' : sprintf('%02d', $array['minute']); + $string .= ':'; + $string .= empty($array['second']) ? '00' : sprintf('%02d', $array['second']); + } + + return $string; +} + +/** + * Get a date format according to the site settings. + * + * @param $size + * A choice of 'short', 'medium', or 'long' date formats. + */ +function webform_date_format($size = 'medium') { + // Format date according to site's given format. + $format = variable_get('date_format_' . $size, 'D, m/d/Y - H:i'); + $time = 'aABgGhHisueIOPTZ'; + $day_of_week = 'Dlw'; + $special = ',-: '; + $date_format = trim($format, $time . $day_of_week . $special); + + // Ensure that a day, month, and year value are present. Use a default + // format if all the values are not found. + if (!preg_match('/[dj]/', $date_format) || !preg_match('/[FmMn]/', $date_format) || !preg_match('/[oYy]/', $date_format)) { + $date_format = 'm/d/Y'; + } + + return $date_format; +} + +/** + * Return a date in the format specied taking into consideration user timezones. + */ +function webform_strtodate($format, $string, $timezone_name = NULL) { + // Adjust the time based on the user or site timezone. + if (variable_get('configurable_timezones', 1) && $timezone_name == 'user') { + $timezone_name = isset($GLOBALS['user']->timezone) ? $GLOBALS['user']->timezone : 'UTC'; + } + elseif (empty($timezone_name) || $timezone_name == 'user') { + $timezone_name = variable_get('date_default_timezone', 'UTC'); + } + + if (!empty($timezone_name) && class_exists('DateTimeZone')) { + $timezone = new DateTimeZone($timezone_name); + $datetime = new DateTime($string, $timezone); + return $datetime->format($format); + } + else { + return date($format, strtotime($string)); + } +} + +/** + * Get a timestamp in GMT time, ensuring timezone accuracy. + */ +function webform_strtotime($date) { + $current_tz = date_default_timezone_get(); + date_default_timezone_set('UTC'); + $timestamp = strtotime($date); + date_default_timezone_set($current_tz); + return $timestamp; +} + +/** + * Wrapper function for tt() if i18nstrings enabled. + */ +function webform_tt($name, $string, $langcode = NULL, $update = FALSE) { + if (function_exists('tt')) { + return tt($name, $string, $langcode, $update); + } + else { + return $string; + } +} + +/** + * Implementation of hook_views_api(). + */ +function webform_views_api() { + return array( + 'api' => 2.0, + 'path' => drupal_get_path('module', 'webform') .'/views', + ); +} + +/** + * Implements hook_field_extra_fields(). + */ +function webform_field_extra_fields() { + $extra = array(); + foreach (webform_variable_get('webform_node_types') as $type) { + $extra['node'][$type]['webform'] = array( + 'label' => t('Webform'), + 'description' => t('Webform client form.'), + 'weight' => 10, + ); + } + return $extra; +} + +/** + * Implements hook_mollom_form_list(). + */ +function webform_mollom_form_list() { + $forms = array(); + $webform_types = webform_variable_get('webform_node_types'); + if (empty($webform_types)) { + return $forms; + } + + $result = db_select('node', 'n') + ->fields('n', array('nid', 'title')) + ->condition('n.type', $webform_types, 'IN') + ->execute(); + + foreach ($result as $node) { + $form_id = 'webform_client_form_' . $node->nid; + $forms[$form_id] = array( + 'title' => t('@name form', array('@name' => $node->title)), + 'entity' => 'webform', + 'delete form' => 'webform_submission_delete_form', + ); + } + return $forms; +} + +/** + * Implements hook_mollom_form_info(). + */ +function webform_mollom_form_info($form_id) { + module_load_include('inc', 'webform', 'includes/webform.components'); + + $nid = drupal_substr($form_id, 20); + $node = node_load($nid); + $form_info = array( + 'title' => t('@name form', array('@name' => $node->title)), + 'mode' => MOLLOM_MODE_ANALYSIS, + 'bypass access' => array('edit all webform submissions', 'edit any webform content'), + 'entity' => 'webform', + 'elements' => array(), + 'mapping' => array( + 'post_id' => 'details][sid', + 'author_id' => 'details][uid', + ), + ); + // Add components as elements. + // These components can be enabled for textual analysis (when not using a + // CAPTCHA-only protection) in Mollom's form configuration. + foreach ($node->webform['components'] as $cid => $component) { + if (webform_component_feature($component['type'], 'spam_analysis')) { + $parents = implode('][', webform_component_parent_keys($node, $component)); + $form_info['elements']['submitted][' . $parents] = check_plain(t($component['name'])); + } + } + // Assign field mappings based on webform configuration. + // Since multiple emails can be configured, we iterate over all and take + // over the assigned component for the field mapping in any email, unless + // we already assigned one. We are not interested in administratively + // configured static strings, only user-submitted values. + foreach ($node->webform['emails'] as $email) { + // Subject (post_title). + if (!isset($form_info['mapping']['post_title'])) { + $cid = $email['subject']; + if (is_numeric($cid)) { + $parents = implode('][', webform_component_parent_keys($node, $node->webform['components'][$cid])); + $form_info['mapping']['post_title'] = 'submitted][' . $parents; + } + } + // From name (author_name). + if (!isset($form_info['mapping']['author_name'])) { + $cid = $email['from_name']; + if (is_numeric($cid)) { + $parents = implode('][', webform_component_parent_keys($node, $node->webform['components'][$cid])); + $form_info['mapping']['author_name'] = 'submitted][' . $parents; + } + } + // From address (author_mail). + if (!isset($form_info['mapping']['author_mail'])) { + $cid = $email['from_address']; + if (is_numeric($cid)) { + $parents = implode('][', webform_component_parent_keys($node, $node->webform['components'][$cid])); + $form_info['mapping']['author_mail'] = 'submitted][' . $parents; + } + } + } + + return $form_info; +} diff --git a/sites/all/modules/webform/webform_hooks.php b/sites/all/modules/webform/webform_hooks.php new file mode 100644 index 0000000000000000000000000000000000000000..2cb2badc1f11653fb1402d206465e8fe8acc65b9 --- /dev/null +++ b/sites/all/modules/webform/webform_hooks.php @@ -0,0 +1,703 @@ +<?php +// $Id: webform_hooks.php,v 1.19 2010/10/17 21:52:41 quicksketch Exp $ + +/** + * @file + * Sample hooks demonstrating usage in Webform. + */ + +/** + * @defgroup webform_hooks Webform Module Hooks + * @{ + * Webform's hooks enable other modules to intercept events within Webform, such + * as the completion of a submission or adding validation. Webform's hooks also + * allow other modules to provide additional components for use within forms. + */ + +/** + * Define callbacks that can be used as select list options. + * + * @return + * An array of callbacks that can be used for select list options. This array + * should be keyed by the "name" of the pre-defined list. The values should + * be an array with the following additional keys: + * - title: The translated title for this list. + * - options callback: The name of the function that will return the list. + * - options arguments: Any additional arguments to send to the callback. + * - file: Optional. The file containing the options callback, relative to + * the module root. + */ +function hook_webform_select_options_info() { + $items = array(); + + $items['days'] = array( + 'title' => t('Days of the week'), + 'options callback' => 'webform_options_days', + 'file' => 'includes/webform.options.inc', + ); + + return $items; +} + +/** + * Respond to the loading of Webform submissions. + * + * @param $submissions + * An array of Webform submissions that are being loaded, keyed by the + * submission ID. Modifications to the submissions are done by reference. + */ +function hook_webform_submission_load(&$submissions) { + foreach ($submissions as $sid => $submission) { + $submissions[$sid]->new_property = 'foo'; + } +} + +/** + * Modify a Webform submission, prior to saving it in the database. + * + * @param $node + * The Webform node on which this submission was made. + * @param $submission + * The Webform submission that is about to be saved to the database. + */ +function hook_webform_submission_presave($node, &$submission) { + // Update some component's value before it is saved. + $component_id = 4; + $submission->data[$component_id]['value'][0] = 'foo'; +} + +/** + * Respond to a Webform submission being inserted. + * + * Note that this hook is called after a submission has already been saved to + * the database. If needing to modify the submission prior to insertion, use + * hook_webform_submission_presave(). + * + * @param $node + * The Webform node on which this submission was made. + * @param $submission + * The Webform submission that was just inserted into the database. + */ +function hook_webform_submission_insert($node, $submission) { + // Insert a record into a 3rd-party module table when a submission is added. + db_insert('mymodule_table') + ->fields(array( + 'nid' => $node->nid, + 'sid' => $submission->sid, + 'foo' => 'foo_data', + )) + ->execute(); +} + +/** + * Respond to a Webform submission being updated. + * + * Note that this hook is called after a submission has already been saved to + * the database. If needing to modify the submission prior to updating, use + * hook_webform_submission_presave(). + * + * @param $node + * The Webform node on which this submission was made. + * @param $submission + * The Webform submission that was just updated in the database. + */ +function hook_webform_submission_update($node, $submission) { + // Update a record in a 3rd-party module table when a submission is updated. + db_update('mymodule_table') + ->fields(array( + 'foo' => 'foo_data', + )) + ->condition('nid', $node->nid) + ->condition('sid', $submission->sid) + ->execute(); +} + +/** + * Respond to a Webform submission being deleted. + * + * @param $node + * The Webform node on which this submission was made. + * @param $submission + * The Webform submission that was just deleted from the database. + */ +function hook_webform_submission_delete($node, $submission) { + // Delete a record from a 3rd-party module table when a submission is deleted. + db_delete('mymodule_table') + ->condition('nid', $node->nid) + ->condition('sid', $submission->sid) + ->execute(); +} + +/** + * Alter the display of a Webform submission. + * + * This function applies to both e-mails sent by Webform and normal display of + * submissions when viewing through the adminsitrative interface. + * + * @param $renderable + * The Webform submission in a renderable array, similar to FormAPI's + * structure. This variable must be passed in by-reference. Important + * properties of this array include #node, #submission, #email, and #format, + * which can be used to find the context of the submission that is being + * rendered. + */ +function hook_webform_submission_render_alter(&$renderable) { + // Remove page breaks from sent e-mails. + if (isset($renderable['#email'])) { + foreach (element_children($renderable) as $key) { + if ($renderable[$key]['#component']['type'] == 'pagebreak') { + unset($renderable[$key]); + } + } + } +} + +/** + * Modify a loaded Webform component. + * + * IMPORTANT: This hook does not actually exist because components are loaded + * in bulk as part of webform_node_load(). Use hook_node_load() to modify loaded + * components when the node is loaded. This example is provided merely to point + * to hook_node_load(). + * + * @see hook_nodeapi() + * @see webform_node_load() + */ +function hook_webform_component_load() { + // This hook does not exist. Instead use hook_node_load(). +} + +/** + * Modify a Webform component before it is saved to the database. + * + * Note that most of the time this hook is not necessary, because Webform will + * automatically add data to the component based on the component form. Using + * hook_form_alter() will be sufficient in most cases. + * + * @see hook_form_alter() + * @see webform_component_edit_form() + * + * @param $component + * The Webform component being saved. + */ +function hook_webform_component_presave(&$component) { + $component['extra']['new_option'] = 'foo'; +} + +/** + * Respond to a Webform component being inserted into the database. + */ +function hook_webform_component_insert($component) { + // Insert a record into a 3rd-party module table when a component is inserted. + db_insert('mymodule_table') + ->fields(array( + 'nid' => $component['nid'], + 'cid' => $component['cid'], + 'foo' => 'foo_data', + )) + ->execute(); +} + +/** + * Respond to a Webform component being updated in the database. + */ +function hook_webform_component_update($component) { + // Update a record in a 3rd-party module table when a component is updated. + db_update('mymodule_table') + ->fields(array( + 'foo' => 'foo_data', + )) + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']) + ->execute(); +} + +/** + * Respond to a Webform component being deleted. + */ +function hook_webform_component_delete($component) { + // Delete a record in a 3rd-party module table when a component is deleted. + db_delete('mymodule_table') + ->condition('nid', $component['nid']) + ->condition('cid', $component['cid']) + ->execute(); +} + +/** + * Define components to Webform. + * + * @return + * An array of components, keyed by machine name. Required properties are + * "label" and "description". The "features" array defines which capabilities + * the component has, such as being displayed in e-mails or csv downloads. + * A component like "markup" for example would not show in these locations. + * The possible features of a component include: + * + * - csv + * - email + * - email_address + * - email_name + * - required + * - conditional + * - spam_analysis + * - group + * + * Note that these features do not indicate the default state, but determine + * if the component can have this property at all. Setting "required" to TRUE + * does not mean that a field will always be required, but instead give the + * option to the administrator to choose the requiredness. See the example + * implementation for details on how these features may be set. + * + * An optional "file" may be specified to be loaded when the component is + * needed. A set of callbacks will be established based on the name of the + * component. All components follow the pattern: + * + * _webform_[callback]_[component] + * + * Where [component] is the name of the key of the component and [callback] is + * any of the following: + * + * - defaults + * - theme + * - edit + * - delete + * - render + * - display + * - analysis + * - table + * - csv_headers + * - csv_data + * + * See the sample component implementation for details on each one of these + * callbacks. + * + * @see webform_component + */ +function hook_webform_component_info() { + $components = array(); + + $components['textfield'] = array( + 'label' => t('Textfield'), + 'description' => t('Basic textfield type.'), + 'features' => array( + // Add content to CSV downloads. Defaults to TRUE. + 'csv' => TRUE, + // Show this field in e-mailed submissions. Defaults to TRUE. + 'email' => TRUE, + // Allow this field to be used as an e-mail FROM or TO address. Defaults + // to FALSE. + 'email_address' => FALSE, + // Allow this field to be used as an e-mail SUBJECT or FROM name. Defaults + // to FALSE. + 'email_name' => TRUE, + // This field may be toggled as required or not. Defaults to TRUE. + 'required' => TRUE, + // If this field can be used as a conditional SOURCE. All fields may + // always be displayed conditionally, regardless of this setting. + // Defaults to TRUE. + 'conditional' => TRUE, + // If this field allows other fields to be grouped within it (like a + // fieldset or tabs). Defaults to FALSE. + 'group' => FALSE, + // If this field saves a file that can be used as an e-mail attachment. + // Defaults to FALSE. + 'attachment' => FALSE, + ), + 'file' => 'components/textfield.inc', + ); + + return $components; +} + +/** + * Alter the list of available Webform components. + * + * @param $components + * A list of existing components as defined by hook_webform_component_info(). + * + * @see hook_webform_component_info() + */ +function hook_webform_component_info_alter(&$components) { + // Completely remove a component. + unset($components['grid']); + + // Change the name of a component. + $components['textarea']['label'] = t('Text box'); +} + +/** + * @} + */ + +/** + * @defgroup webform_component Sample Webform Component + * @{ + * In each of these examples, the word "component" should be replaced with the, + * name of the component type (such as textfield or select). These are not + * actual hooks, but instead samples of how Webform integrates with its own + * built-in components. + */ + +/** + * Specify the default properties of a component. + * + * @return + * An array defining the default structure of a component. + */ +function _webform_defaults_component() { + return array( + 'name' => '', + 'form_key' => NULL, + 'mandatory' => 0, + 'pid' => 0, + 'weight' => 0, + 'extra' => array( + 'options' => '', + 'questions' => '', + 'optrand' => 0, + 'qrand' => 0, + 'description' => '', + ), + ); +} + +/** + * Generate the form for editing a component. + * + * Create a set of form elements to be displayed on the form for editing this + * component. Use care naming the form items, as this correlates directly to the + * database schema. The component "Name" and "Description" fields are added to + * every component type and are not necessary to specify here (although they + * may be overridden if desired). + * + * @param $component + * A Webform component array. + * @return + * An array of form items to be displayed on the edit component page + */ +function _webform_edit_component($component) { + $form = array(); + + // Disabling the description if not wanted. + $form['description'] = array(); + + // Most options are stored in the "extra" array, which stores any settings + // unique to a particular component type. + $form['extra']['options'] = array( + '#type' => 'textarea', + '#title' => t('Options'), + '#default_value' => $component['extra']['options'], + '#description' => t('Key-value pairs may be entered separated by pipes. i.e. safe_key|Some readable option') . theme('webform_token_help'), + '#cols' => 60, + '#rows' => 5, + '#weight' => -3, + '#required' => TRUE, + ); + return $form; +} + +/** + * Render a Webform component to be part of a form. + * + * @param $component + * A Webform component array. + * @param $value + * If editing an existing submission or resuming a draft, this will contain + * an array of values to be shown instead of the default in the component + * configuration. This value will always be an array, keyed numerically for + * each value saved in this field. + */ +function _webform_render_component($component, $value = NULL) { + $form_item = array( + '#type' => 'textfield', + '#title' => $component['name'], + '#required' => $component['mandatory'], + '#weight' => $component['weight'], + '#description' => _webform_filter_descriptions($component['extra']['description']), + '#default_value' => $component['value'], + '#prefix' => '<div class="webform-component-'. $component['type'] .'" id="webform-component-'. $component['form_key'] .'">', + '#suffix' => '</div>', + ); + + if (isset($value)) { + $form_item['#default_value'] = $value[0]; + } + + return $form_item; +} + +/** + * Display the result of a submission for a component. + * + * The output of this function will be displayed under the "Results" tab then + * "Submissions". This should output the saved data in some reasonable manner. + * + * @param $component + * A Webform component array. + * @param $value + * An array of information containing the submission result, directly + * correlating to the webform_submitted_data database table schema. + * @param $format + * Either 'html' or 'text'. Defines the format that the content should be + * returned as. Make sure that returned content is run through check_plain() + * or other filtering functions when returning HTML. + * @return + * A renderable element containing at the very least these properties: + * - #title + * - #weight + * - #component + * - #format + * - #value + * Webform also uses #theme_wrappers to output the end result to the user, + * which will properly format the label and content for use within an e-mail + * (such as wrapping the text) or as HTML (ensuring consistent output). + */ +function _webform_display_component($component, $value, $format = 'html') { + return array( + '#title' => $component['name'], + '#weight' => $component['weight'], + '#theme' => 'webform_display_textfield', + '#theme_wrappers' => $format == 'html' ? array('webform_element') : array('webform_element_text'), + '#post_render' => array('webform_element_wrapper'), + '#field_prefix' => $component['extra']['field_prefix'], + '#field_suffix' => $component['extra']['field_suffix'], + '#component' => $component, + '#format' => $format, + '#value' => isset($value[0]) ? $value[0] : '', + ); +} + +/** + * A hook for changing the input values before saving to the database. + * + * Note that Webform will save the result of this function directly into the + * database. + * + * @param $component + * A Webform component array. + * @param $value + * The POST data associated with the user input. + * @return + * An array of values to be saved into the database. Note that this should be + * a numerically keyed array. + */ +function _webform_submit_component($component, $value) { + // Clean up a phone number into 123-456-7890 format. + if ($component['extra']['phone_number']) { + $matches = array(); + $number = preg_replace('[^0-9]', $value[0]); + if (strlen($number) == 7) { + $number = substr($number, 0, 3) . '-' . substr($number, 3, 4); + } + else { + $number = substr($number, 0, 3) . '-' . substr($number, 3, 3) . '-' . substr($number, 6, 4); + } + } + + $value[0] = $number; + return $value; +} + +/** + * Delete operation for a component or submission. + * + * @param $component + * A Webform component array. + * @param $value + * An array of information containing the submission result, directly + * correlating to the webform_submitted_data database schema. + */ +function _webform_delete_component($component, $value) { + // Delete corresponding files when a submission is deleted. + $filedata = unserialize($value['0']); + if (isset($filedata['filepath']) && is_file($filedata['filepath'])) { + unlink($filedata['filepath']); + db_query("DELETE FROM {files} WHERE filepath = '%s'", $filedata['filepath']); + } +} + +/** + * Module specific instance of hook_help(). + * + * This allows each Webform component to add information into hook_help(). + */ +function _webform_help_component($section) { + switch ($section) { + case 'admin/config/content/webform#grid_description': + return t('Allows creation of grid questions, denoted by radio buttons.'); + } +} + +/** + * Module specific instance of hook_theme(). + * + * This allows each Webform component to add information into hook_theme(). + */ +function _webform_theme_component() { + return array( + 'webform_grid' => array( + 'arguments' => array('grid_element' => NULL), + ), + 'webform_mail_grid' => array( + 'arguments' => array('component' => NULL, 'value' => NULL), + ), + ); +} + +/** + * Calculate and returns statistics about results for this component. + * + * This takes into account all submissions to this webform. The output of this + * function will be displayed under the "Results" tab then "Analysis". + * + * @param $component + * An array of information describing the component, directly correlating to + * the webform_component database schema. + * @param $sids + * An optional array of submission IDs (sid). If supplied, the analysis will + * be limited to these sids. + * @param $single + * Boolean flag determining if the details about a single component are being + * shown. May be used to provided detailed information about a single + * component's analysis, such as showing "Other" options within a select list. + * @return + * An array of data rows, each containing a statistic for this component's + * submissions. + */ +function _webform_analysis_component($component, $sids = array(), $single = FALSE) { + // Generate the list of options and questions. + $options = _webform_component_options($component['extra']['options']); + $questions = array_values(_webform_component_options($component['extra']['questions'])); + + // Generate a lookup table of results. + $placeholders = count($sids) ? array_fill(0, count($sids), "'%s'") : array(); + $sidfilter = count($sids) ? " AND sid in (".implode(",", $placeholders).")" : ""; + $query = 'SELECT no, data, count(data) as datacount '. + ' FROM {webform_submitted_data} '. + ' WHERE nid = %d '. + ' AND cid = %d '. + " AND data != '' ". $sidfilter . + ' GROUP BY no, data'; + $result = db_query($query, array_merge(array($component['nid'], $component['cid']), $sids)); + $counts = array(); + while ($data = db_fetch_object($result)) { + $counts[$data->no][$data->data] = $data->datacount; + } + + // Create an entire table to be put into the returned row. + $rows = array(); + $header = array(''); + + // Add options as a header row. + foreach ($options as $option) { + $header[] = $option; + } + + // Add questions as each row. + foreach ($questions as $qkey => $question) { + $row = array($question); + foreach ($options as $okey => $option) { + $row[] = !empty($counts[$qkey][$okey]) ? $counts[$qkey][$okey] : 0; + } + $rows[] = $row; + } + $output = theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('class' => array('webform-grid')))); + + return array(array(array('data' => $output, 'colspan' => 2))); +} + +/** + * Return the result of a component value for display in a table. + * + * The output of this function will be displayed under the "Results" tab then + * "Table". + * + * @param $component + * A Webform component array. + * @param $value + * An array of information containing the submission result, directly + * correlating to the webform_submitted_data database schema. + * @return + * Textual output formatted for human reading. + */ +function _webform_table_component($component, $value) { + $questions = array_values(_webform_component_options($component['extra']['questions'])); + $output = ''; + // Set the value as a single string. + if (is_array($value)) { + foreach ($value as $item => $value) { + if ($value !== '') { + $output .= $questions[$item] .': '. check_plain($value) .'<br />'; + } + } + } + else { + $output = check_plain(!isset($value['0']) ? '' : $value['0']); + } + return $output; +} + +/** + * Return the header for this component to be displayed in a CSV file. + * + * The output of this function will be displayed under the "Results" tab then + * "Download". + * + * @param $component + * A Webform component array. + * @param $export_options + * An array of options that may configure export of this field. + * @return + * An array of data to be displayed in the first three rows of a CSV file, not + * including either prefixed or trailing commas. + */ +function _webform_csv_headers_component($component, $export_options) { + $header = array(); + $header[0] = array(''); + $header[1] = array($component['name']); + $items = _webform_component_options($component['extra']['questions']); + $count = 0; + foreach ($items as $key => $item) { + // Empty column per sub-field in main header. + if ($count != 0) { + $header[0][] = ''; + $header[1][] = ''; + } + // The value for this option. + $header[2][] = $item; + $count++; + } + + return $header; +} + +/** + * Format the submitted data of a component for CSV downloading. + * + * The output of this function will be displayed under the "Results" tab then + * "Download". + * + * @param $component + * A Webform component array. + * @param $export_options + * An array of options that may configure export of this field. + * @param $value + * An array of information containing the submission result, directly + * correlating to the webform_submitted_data database schema. + * @return + * An array of items to be added to the CSV file. Each value within the array + * will be another column within the file. This function is called once for + * every row of data. + */ +function _webform_csv_data_component($component, $export_options, $value) { + $questions = array_keys(_webform_select_options($component['extra']['questions'])); + $return = array(); + foreach ($questions as $key => $question) { + $return[] = isset($value[$key]) ? $value[$key] : ''; + } + return $return; +} + +/** + * @} + */