├── .gitignore ├── LICENSE ├── MANIFEST.in ├── README.rst ├── cmsplugin_contact ├── __init__.py ├── admin.py ├── cms_plugins.py ├── forms.py ├── locale │ ├── de │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── es │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── fr │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── it │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── no │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── pl │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── pt │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── pt_BR │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── ru │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ └── sl │ │ └── LC_MESSAGES │ │ ├── django.mo │ │ └── django.po ├── middleware.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_auto__chg_field_contact_thanks.py │ ├── 0003_auto__add_field_contact_form_name.py │ ├── 0004_add_field_Contact_form_layout.py │ ├── 0005_auto__del_field_contact_content_label__del_field_contact_subject_label.py │ ├── 0006_fix_table_names.py │ ├── 0007_add_url_field.py │ └── __init__.py ├── migrations_django │ ├── 0001_initial.py │ ├── 0002_auto_20160810_1130.py │ ├── 0003_auto_20161107_1614.py │ ├── 0004_auto_20180630_0050.py │ ├── 0005_auto_20180701_1611.py │ └── __init__.py ├── models.py ├── nospam │ ├── __init__.py │ ├── fields.py │ ├── forms.py │ ├── utils.py │ └── widgets.py ├── settings.py ├── templates │ └── cmsplugin_contact │ │ ├── admin │ │ └── plugin_change_form.html │ │ ├── contact.html │ │ ├── email.txt │ │ └── subject.txt └── utils.py ├── examples └── cmsplugin_custom_contact │ ├── __init__.py │ ├── cms_plugins.py │ ├── forms.py │ ├── models.py │ └── templates │ └── cmsplugin_custom_contact │ └── email.txt └── setup.py /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | DS_STORE 3 | *.pyc 4 | *~ 5 | .project 6 | .pydevproject 7 | .settings 8 | build 9 | dist 10 | cmsplugin_contact.egg-info 11 | .idea 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright © 2012, Marc-Stefan Cassola 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright notice, 10 | this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 14 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 16 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 17 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 19 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 20 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 21 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include README.rst 2 | include LICENSE 3 | recursive-include cmsplugin_contact/locale *.mo 4 | graft cmsplugin_contact/templates -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | ============================== 2 | Django CMS Contact Form Plugin 3 | ============================== 4 | 5 | Contact form plugin for `Django CMS `_ with spam protection and i18n. 6 | 7 | The message entered by the web user is turned into an email which is sent to the email address 8 | configured for the specific plugin instance. 9 | 10 | Spam protection is provided by either `ReCAPTCHA `_ (free) or 11 | `Akismet `_ (free for personal use). 12 | Visit the respective website to obtain the keys required to activate the protection method of your 13 | choice. 14 | 15 | Dependencies 16 | ============ 17 | 18 | Python Libs 19 | ----------- 20 | 21 | If you decide to use the ReCAPTCHA spam protection method you need to install the python library ``django-nocaptcha-recaptcha`` 22 | 23 | If you use Akismet for spam protection ``akismet`` is needed. You also need to set your domain url in django admin in the section "sites". 24 | 25 | All libraries can be installed using ``pip``. 26 | 27 | It is recommended but not required to use South. Again it can be easily installed using ``pip``. 28 | 29 | Installation 30 | ============ 31 | 32 | Download 33 | -------- 34 | 35 | From PyPI 36 | ''''''''' 37 | 38 | You can simply type into a terminal ``pip install cmsplugin-contact``. 39 | 40 | Manually 41 | '''''''' 42 | 43 | You can download a zip archive of the `latest development version 44 | `_ from GitHub. 45 | Unzip the file you downloaded. Then go in your terminal and ``cd`` into the unpacked folder. Then type ``python setup.py install`` in your terminal. 46 | 47 | Setup 48 | ----- 49 | 50 | Put ``'cmsplugin_contact'`` in your ``INSTALLED_APPS`` section in settings.py. Don't forget to syncdb your database or migrate if you're using South. 51 | 52 | Put ``'cmsplugin_contact.middleware.ForceResponseMiddleware'`` in your ``MIDDLEWARE_CLASSES`` section in settings.py. 53 | 54 | 55 | Settings 56 | ======== 57 | 58 | DEFAULT_FROM_EMAIL 59 | ------------------ 60 | 61 | The email address that is used to send the message is picked up from ``DEFAULT_FROM_EMAIL`` 62 | `Django setting `_. 63 | Additionally, the ``Reply-To:`` header is set to the user-supplied email address. 64 | 65 | Sending the message using the user-supplied address to set ``From:`` header of the email is 66 | currently not supported. 67 | This is because many servers will reject emails that use ``From:`` addresses not registered with 68 | that server. 69 | Some servers may also strip the ``Reply-To:`` header. For this, the user-supplied email address 70 | is also added to the body of the message. 71 | 72 | .. Note: 73 | .. The info about Reply-To: header is unrelated to the DEFAULT_FROM_EMAIL setting. 74 | .. At some point it should be moved in a more suitable place in the documentation. 75 | 76 | 77 | RECAPTCHA_PUBLIC_KEY and RECAPTCHA_PRIVATE_KEY 78 | ---------------------------------------------- 79 | 80 | If you don't want to enter the ReCATPCHA keys in the admin interface you can provide them through these settings. 81 | 82 | AKISMET_API_KEY 83 | --------------- 84 | 85 | The same as for ReCAPTCHA goes fo Akismet. 86 | 87 | CMSPLUGIN_CONTACT_FORMS 88 | ----------------------- 89 | 90 | Default:: 91 | 92 | ( 93 | ('cmsplugin_contact.forms.ContactForm', _('default')), 94 | ) 95 | 96 | You can use your custom ContactForm, just add a new tuple with the class path and name pretty name to show for your user. 97 | 98 | If you want to steal using the default ContactForm, do like this in your settings:: 99 | 100 | ( 101 | ('cmsplugin_contact.forms.ContactForm', _('default')), 102 | ('my_app.forms.MyContactForm', _('My form')), 103 | ) 104 | 105 | In your custom form, you can set what template you want to use, like this:: 106 | 107 | class MyContactForm(Form): 108 | ... 109 | template = 'path/to/my_contact_template.html' 110 | 111 | Editors 112 | ======= 113 | 114 | The default editor is WYMEditor like in Django CMS. 115 | The plugin respects the ``USE_TINYMCE`` setting of Django CMS. Please see Django CMS docs for more information on how to use TinyMCE. 116 | If you have the package ``'djangocms_text_ckeditor'`` in your ``INSTALLES_APPS`` CKEditor is used. 117 | 118 | 119 | Extending 120 | ========= 121 | 122 | See ``examples/cmsplugin_custom_contact`` how to subclass 123 | ``cmsplugin_contact`` and add custom fields into it. You can override 124 | properties of the subclassed ``ContactPlugin`` and use your own templates 125 | and classes. 126 | 127 | Signals 128 | ------- 129 | 130 | Email sent 131 | '''''''''' 132 | 133 | After the contact email has been sent a signal is fired. You can use it like 134 | this:: 135 | 136 | from django.dispatch import receiver 137 | from cmsplugin_contact.cms_plugins import email_sent 138 | 139 | 140 | @receiver(email_sent) 141 | def handle_signal(sender, **kwargs): 142 | print kwargs['data'] 143 | -------------------------------------------------------------------------------- /cmsplugin_contact/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/__init__.py -------------------------------------------------------------------------------- /cmsplugin_contact/admin.py: -------------------------------------------------------------------------------- 1 | from django.forms import ModelForm, Field, CharField, HiddenInput 2 | try: 3 | #Django 1.8 4 | from django.forms.utils import ErrorList 5 | except ImportError: 6 | from django.forms.util import ErrorList 7 | from django.core.exceptions import ValidationError 8 | from django.contrib.sites.models import Site 9 | from django.conf import settings 10 | from django.utils.translation import ugettext_lazy as _ 11 | 12 | from .models import Contact 13 | 14 | class KeyField(CharField): 15 | def validate(self, value): 16 | # valdates always. validation is done in the form (see below) 17 | pass 18 | 19 | class ContactAdminForm(ModelForm): 20 | akismet_api_key = KeyField(max_length=255, label=_("Akismet API Key"), help_text=_('Get a Wordpress Key from http://akismet.com/')) 21 | recaptcha_public_key = KeyField(max_length=255, label=_("ReCAPTCHA Public Key"), help_text=_('Get this from http://www.google.com/recaptcha')) 22 | recaptcha_private_key = KeyField(max_length=255, label=_("ReCAPTCHA Private Key"), help_text=_('Get this from http://www.google.com/recaptcha')) 23 | 24 | class Meta: 25 | model = Contact 26 | exclude = [] 27 | 28 | def _add_error(self, field_name, error): 29 | if not field_name in self._errors: 30 | self._errors[field_name] = ErrorList() 31 | self._errors[field_name].append(error) 32 | 33 | def _check_akismet(self): 34 | def add_error(error): 35 | self._add_error('akismet_api_key', error) 36 | 37 | try: 38 | from akismet import Akismet 39 | except ImportError: 40 | self._add_error('spam_protection_method', _('Akismet library is not installed. Use "easy_install akismet" or "pip install akismet".')) 41 | 42 | api_key = getattr(settings, "AKISMET_API_KEY", \ 43 | self.cleaned_data['akismet_api_key']) 44 | 45 | if not hasattr(settings, "AKISMET_API_KEY"): 46 | if not api_key: 47 | add_error(Field.default_error_messages['required']) 48 | else: 49 | ak = Akismet( 50 | key = api_key, 51 | blog_url = 'http://%s/' % Site.objects.get(pk=settings.SITE_ID).domain 52 | ) 53 | if not ak.verify_key(): 54 | add_error(_('The API Key is not valid.')) 55 | 56 | 57 | def _check_recaptcha(self): 58 | 59 | try: 60 | from recaptcha.client import captcha as recaptcha 61 | except ImportError: 62 | self._add_error('spam_protection_method', _('ReCAPTCHA library is not installed. Use "easy_install recaptcha-client" or "pip install recaptcha-client".')) 63 | 64 | public_key = getattr(settings, "RECAPTCHA_PUBLIC_KEY", \ 65 | self.cleaned_data['recaptcha_public_key']) 66 | private_key = getattr(settings, "RECAPTCHA_PRIVATE_KEY", \ 67 | self.cleaned_data['recaptcha_private_key']) 68 | 69 | if not public_key: 70 | self._add_error('recaptcha_public_key', Field.default_error_messages['required']) 71 | if not private_key: 72 | self._add_error('recaptcha_private_key', Field.default_error_messages['required']) 73 | 74 | 75 | def clean(self): 76 | 77 | method = self.cleaned_data['spam_protection_method'] 78 | if method == 1: 79 | # user chose aksimet => akismet api key is required 80 | self._check_akismet() 81 | elif method == 2: 82 | # user chose recaptcha => recaptcha keys are required 83 | self._check_recaptcha() 84 | 85 | return self.cleaned_data 86 | 87 | 88 | -------------------------------------------------------------------------------- /cmsplugin_contact/cms_plugins.py: -------------------------------------------------------------------------------- 1 | import os 2 | from django import dispatch 3 | from django.conf import settings 4 | from django.utils.translation import ugettext_lazy as _ 5 | from django.forms.fields import CharField 6 | from django import forms 7 | from django.core.mail import EmailMessage 8 | from django.template.loader import render_to_string, select_template 9 | from django.http import HttpResponseRedirect 10 | 11 | from cms.plugin_base import CMSPluginBase 12 | from cms.plugin_pool import plugin_pool 13 | from cmsplugin_contact.utils import class_for_path 14 | 15 | 16 | try: 17 | from cms.plugins.text.settings import USE_TINYMCE 18 | except ImportError: 19 | USE_TINYMCE = False 20 | 21 | from .models import Contact 22 | from .forms import AkismetContactForm, RecaptchaContactForm, HoneyPotContactForm 23 | from .admin import ContactAdminForm 24 | 25 | email_sent = dispatch.Signal(providing_args=["data", ]) 26 | 27 | 28 | class ContactPlugin(CMSPluginBase): 29 | model = Contact 30 | name = _("Contact Form") 31 | render_template = "cmsplugin_contact/contact.html" 32 | form = ContactAdminForm 33 | subject_template = "cmsplugin_contact/subject.txt" 34 | email_template = "cmsplugin_contact/email.txt" 35 | 36 | cache = False # this is a form, should always be reloaded. 37 | # (New in django-cms 3.0c, all plugins are cached through django cache) 38 | 39 | fieldsets = ( 40 | (None, { 41 | 'fields': ('form_name', 'form_layout', 'site_email', 'submit_text'), 42 | }), 43 | (_('Redirection'),{ 44 | 'fields': ('thanks', 'redirect_url' ), 45 | } ), 46 | (_('Spam Protection'), { 47 | 'fields': ('spam_protection_method', 'akismet_api_key', 48 | 'recaptcha_public_key', 'recaptcha_private_key', 49 | 'recaptcha_theme', 'recaptcha_size') 50 | }) 51 | ) 52 | 53 | change_form_template = "cmsplugin_contact/admin/plugin_change_form.html" 54 | 55 | def get_editor_widget(self, request, plugins): 56 | """ 57 | Returns the Django form Widget to be used for 58 | the text area 59 | """ 60 | if USE_TINYMCE and "tinymce" in settings.INSTALLED_APPS: 61 | from cms.plugins.text.widgets.tinymce_widget import TinyMCEEditor 62 | return TinyMCEEditor(installed_plugins=plugins) 63 | elif "djangocms_text_ckeditor" in settings.INSTALLED_APPS: 64 | from djangocms_text_ckeditor.widgets import TextEditorWidget 65 | return TextEditorWidget(installed_plugins=plugins) 66 | else: 67 | from cms.plugins.text.widgets.wymeditor_widget import WYMEditor 68 | return WYMEditor(installed_plugins=plugins) 69 | 70 | def get_form_class(self, request, plugins): 71 | """ 72 | Returns a subclass of Form to be used by this plugin 73 | """ 74 | # We avoid mutating the Form declared above by subclassing 75 | class TextPluginForm(self.form): 76 | pass 77 | widget = self.get_editor_widget(request, plugins) 78 | 79 | thanks_field = self.form.base_fields['thanks'] 80 | 81 | TextPluginForm.declared_fields["thanks"] = CharField(widget=widget, required=False, label=thanks_field.label, help_text=thanks_field.help_text) 82 | return TextPluginForm 83 | 84 | def get_form(self, request, obj=None, **kwargs): 85 | plugins = plugin_pool.get_text_enabled_plugins(self.placeholder, self.page) 86 | form = self.get_form_class(request, plugins) 87 | kwargs['form'] = form # override standard form 88 | return super(ContactPlugin, self).get_form(request, obj, **kwargs) 89 | 90 | def create_form(self, instance, request): 91 | 92 | ContactFormBase = class_for_path(instance.form_layout) 93 | 94 | if instance.get_spam_protection_method_display() == 'Akismet': 95 | AkismetContactForm.aksimet_api_key = instance.akismet_api_key 96 | class ContactForm(ContactFormBase, AkismetContactForm): 97 | pass 98 | FormClass = ContactForm 99 | elif instance.get_spam_protection_method_display() == 'ReCAPTCHA': 100 | #if you really want the user to be able to set the key in 101 | # every form, this should be more flexible 102 | from nocaptcha_recaptcha.fields import NoReCaptchaField 103 | 104 | class ContactForm(ContactFormBase, RecaptchaContactForm): 105 | recaptcha_public_key = ( 106 | instance.recaptcha_public_key or 107 | getattr(settings, "RECAPTCHA_PUBLIC_KEY", None) 108 | ) 109 | recaptcha_private_key = ( 110 | instance.recaptcha_private_key or 111 | getattr(settings, "RECAPTCHA_PRIVATE_KEY", None) 112 | ) 113 | recaptcha_theme = instance.recaptcha_theme 114 | recaptcha_size = instance.recaptcha_size 115 | form_name = instance.form_name 116 | captcha = NoReCaptchaField(site_key=recaptcha_public_key, 117 | secret_key=recaptcha_private_key, 118 | gtag_attrs={'data-theme': recaptcha_theme, 119 | 'data-size': recaptcha_size} 120 | ) 121 | 122 | FormClass = ContactForm 123 | else: 124 | class ContactForm(ContactFormBase, HoneyPotContactForm): 125 | pass 126 | FormClass = ContactForm 127 | 128 | form = None 129 | if request.method == "POST": 130 | form = FormClass(request, data=request.POST, files=request.FILES) 131 | else: 132 | form = FormClass(request) 133 | form.fields['my_name'] = forms.CharField(max_length=len(instance.form_name), 134 | widget=forms.HiddenInput, 135 | label='', 136 | initial=instance.form_name, 137 | required=False) 138 | return form 139 | 140 | def send(self, form, form_name, site_email, attachments=None): 141 | from_email = getattr(settings, 'DEFAULT_FROM_EMAIL') 142 | 143 | subject_template = getattr(form, 'subject_template', self.subject_template) 144 | email_template = getattr(form, 'email_template', self.email_template) 145 | 146 | email_template_extension = os.path.splitext(email_template)[1] 147 | 148 | content_subtype = 'plain' 149 | if email_template_extension == '.html': 150 | content_subtype = 'html' 151 | 152 | email_message = EmailMessage( 153 | render_to_string(subject_template, { 154 | 'data': form.cleaned_data, 155 | 'form_name': form_name, 156 | }).splitlines()[0], 157 | render_to_string(email_template, { 158 | 'data': form.cleaned_data, 159 | 'form_name': form_name, 160 | 'from_email': from_email, 161 | }), 162 | from_email, 163 | [site_email], 164 | headers={'Reply-To': form.cleaned_data['email']}, 165 | ) 166 | if attachments: 167 | for var_name, data in attachments.iteritems(): 168 | email_message.attach(data.name, data.read(), data.content_type) 169 | email_message.content_subtype = content_subtype 170 | email_message.send(fail_silently=False) 171 | email_sent.send(sender=self, data=form.cleaned_data) 172 | 173 | def render(self, context, instance, placeholder): 174 | request = context['request'] 175 | if request.method == "POST" and 'my_name' in request.POST and instance.form_name != request.POST.get('my_name','-'): 176 | request.method = "GET" 177 | form = self.create_form(instance, request) 178 | self.render_template = getattr(form, 'template', self.render_template) 179 | if request.method == "POST" and form.is_valid(): 180 | self.send(form, instance.form_name, instance.site_email, attachments=request.FILES) 181 | 182 | if instance.redirect_url: 183 | setattr(request, 'django_cms_contact_redirect_to', HttpResponseRedirect(instance.redirect_url)) 184 | context.update({ 185 | 'contact': instance, 186 | }) 187 | else: 188 | context.update({ 189 | 'contact': instance, 190 | 'form': form, 191 | }) 192 | 193 | return context 194 | 195 | def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None): 196 | template = select_template([ 197 | "admin/cms/page/plugin_change_form.html", 198 | "admin/cms/page/plugin/change_form.html", # django-cms 3.0 199 | ]) 200 | context.update({ 201 | 'spam_protection_method': obj.spam_protection_method if obj else 0, 202 | 'recaptcha_settings': hasattr(settings, "RECAPTCHA_PUBLIC_KEY"), 203 | 'akismet_settings': hasattr(settings, "AKISMET_API_KEY"), 204 | 'parent_template': template, 205 | }) 206 | 207 | return super(ContactPlugin, self).render_change_form(request, context, add, change, form_url, obj) 208 | 209 | 210 | plugin_pool.register_plugin(ContactPlugin) 211 | -------------------------------------------------------------------------------- /cmsplugin_contact/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | from django.utils.translation import ugettext_lazy as _ 3 | #import settings 4 | from cmsplugin_contact.nospam.forms import HoneyPotForm, RecaptchaForm, AkismetForm 5 | 6 | class ContactForm(forms.Form): 7 | email = forms.EmailField(label=_("Email")) 8 | subject = forms.CharField(label=_("Subject"), required=False) 9 | content = forms.CharField(label=_("Content"), widget=forms.Textarea()) 10 | 11 | template = "cmsplugin_contact/contact.html" 12 | 13 | class HoneyPotContactForm(HoneyPotForm): 14 | pass 15 | 16 | class AkismetContactForm(AkismetForm): 17 | akismet_fields = { 18 | 'comment_author_email': 'email', 19 | 'comment_content': 'content' 20 | } 21 | akismet_api_key = None 22 | 23 | 24 | class RecaptchaContactForm(RecaptchaForm): 25 | recaptcha_public_key = None 26 | recaptcha_private_key = None 27 | recaptcha_theme = None 28 | recaptcha_size = None 29 | -------------------------------------------------------------------------------- /cmsplugin_contact/locale/de/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/locale/de/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cmsplugin_contact/locale/de/LC_MESSAGES/django.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: PACKAGE VERSION\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2018-07-01 19:55+0300\n" 11 | "PO-Revision-Date: 2013-11-27 16:07+0100\n" 12 | "Last-Translator: Tim Schhneider \n" 13 | "Language-Team: LANGUAGE \n" 14 | "Language: \n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | "X-Generator: Poedit 1.5.7\n" 20 | 21 | #: cmsplugin_contact/admin.py:20 22 | msgid "Akismet API Key" 23 | msgstr "" 24 | 25 | #: cmsplugin_contact/admin.py:20 26 | msgid "Get a Wordpress Key from http://akismet.com/" 27 | msgstr "Wordpress Key von http://akismet.com/" 28 | 29 | #: cmsplugin_contact/admin.py:21 30 | msgid "ReCAPTCHA Public Key" 31 | msgstr "" 32 | 33 | #: cmsplugin_contact/admin.py:21 cmsplugin_contact/admin.py:22 34 | msgid "Get this from http://www.google.com/recaptcha" 35 | msgstr "Erhältlich von http://www.google.com/recaptcha" 36 | 37 | #: cmsplugin_contact/admin.py:22 38 | msgid "ReCAPTCHA Private Key" 39 | msgstr "" 40 | 41 | #: cmsplugin_contact/admin.py:40 42 | msgid "" 43 | "Akismet library is not installed. Use \"easy_install akismet\" or \"pip " 44 | "install akismet\"." 45 | msgstr "" 46 | "Die Akismet Bibliothek ist nicht installiert. Zum installieren: " 47 | "\"easy_install akismet\" oder \"pip install akismet\"" 48 | 49 | #: cmsplugin_contact/admin.py:54 50 | msgid "The API Key is not valid." 51 | msgstr "Der API Key ist ungültig." 52 | 53 | #: cmsplugin_contact/admin.py:62 54 | msgid "" 55 | "ReCAPTCHA library is not installed. Use \"easy_install recaptcha-client\" or " 56 | "\"pip install recaptcha-client\"." 57 | msgstr "" 58 | "Die ReCAPTCHA Bibliothek ist nicht installiert. Zum installieren: " 59 | "\"easy_install recaptcha-client\" oder \"pip install recaptcha-client\"" 60 | 61 | #: cmsplugin_contact/cms_plugins.py:30 62 | #: cmsplugin_contact/templates/cmsplugin_contact/subject.txt:1 63 | msgid "Contact Form" 64 | msgstr "Kontaktformular" 65 | 66 | #: cmsplugin_contact/cms_plugins.py:43 67 | msgid "Redirection" 68 | msgstr "" 69 | 70 | #: cmsplugin_contact/cms_plugins.py:46 71 | msgid "Spam Protection" 72 | msgstr "Spamschutz" 73 | 74 | #: cmsplugin_contact/forms.py:7 75 | msgid "Email" 76 | msgstr "E-Mail" 77 | 78 | #: cmsplugin_contact/forms.py:8 79 | msgid "Subject" 80 | msgstr "Betreff" 81 | 82 | #: cmsplugin_contact/forms.py:9 83 | msgid "Content" 84 | msgstr "Inhalt" 85 | 86 | #: cmsplugin_contact/models.py:17 87 | msgid "Light" 88 | msgstr "" 89 | 90 | #: cmsplugin_contact/models.py:18 91 | msgid "Dark" 92 | msgstr "" 93 | 94 | #: cmsplugin_contact/models.py:21 95 | msgid "Normal" 96 | msgstr "" 97 | 98 | #: cmsplugin_contact/models.py:22 99 | msgid "Compact" 100 | msgstr "" 101 | 102 | #: cmsplugin_contact/models.py:24 103 | msgid "Form name" 104 | msgstr "Formularname" 105 | 106 | #: cmsplugin_contact/models.py:27 107 | msgid "Used to distinguish multiple contact forms on the same site." 108 | msgstr "" 109 | 110 | #: cmsplugin_contact/models.py:28 111 | msgid "Form Layout" 112 | msgstr "" 113 | 114 | #: cmsplugin_contact/models.py:30 115 | msgid "Choose the layout of contact form" 116 | msgstr "" 117 | 118 | #: cmsplugin_contact/models.py:33 119 | msgid "Email recipient" 120 | msgstr "E-Mail Empfänger" 121 | 122 | #: cmsplugin_contact/models.py:36 123 | msgid "Thanks message" 124 | msgstr "Dankesnachricht" 125 | 126 | #: cmsplugin_contact/models.py:37 127 | msgid "Message displayed on successful submit" 128 | msgstr "Nachricht nach erfolgreichem Absenden" 129 | 130 | #: cmsplugin_contact/models.py:38 131 | msgid "Thank you for your message." 132 | msgstr "Vielen Dank für Ihre Nachricht." 133 | 134 | #: cmsplugin_contact/models.py:39 135 | msgid "Submit button value" 136 | msgstr "Senden Button Beschriftung" 137 | 138 | #: cmsplugin_contact/models.py:40 139 | msgid "Submit" 140 | msgstr "Senden" 141 | 142 | #: cmsplugin_contact/models.py:43 143 | msgid "Spam protection method" 144 | msgstr "Spamschutzmethode" 145 | 146 | #: cmsplugin_contact/models.py:53 147 | msgid "ReCAPTCHA theme" 148 | msgstr "ReCAPTCHA Theme" 149 | 150 | #: cmsplugin_contact/models.py:57 151 | #, fuzzy 152 | #| msgid "ReCAPTCHA theme" 153 | msgid "ReCAPTCHA size" 154 | msgstr "ReCAPTCHA Theme" 155 | 156 | #: cmsplugin_contact/models.py:59 157 | msgid "URL Redirection" 158 | msgstr "" 159 | 160 | #: cmsplugin_contact/models.py:60 161 | msgid "If it is set, the form redirect to url when the form is valid" 162 | msgstr "" 163 | 164 | #: cmsplugin_contact/nospam/fields.py:13 165 | msgid "Please don't check this box." 166 | msgstr "Bitte nicht anklicken." 167 | 168 | #: cmsplugin_contact/nospam/widgets.py:12 169 | msgid "Are you a robot?" 170 | msgstr "Sind Sie ein Robot?" 171 | 172 | #: cmsplugin_contact/settings.py:7 173 | msgid "default" 174 | msgstr "" 175 | 176 | #: cmsplugin_contact/templates/cmsplugin_contact/email.txt:1 177 | #, fuzzy 178 | msgid "Message from" 179 | msgstr "Nachricht" 180 | 181 | #~ msgid "Please enter the two words on the image separated by a space:" 182 | #~ msgstr "" 183 | #~ "Geben Sie bitte die beiden Wörter im Bild, durch ein Leerzeichen " 184 | #~ "getrennt, ein." 185 | 186 | #~ msgid "Please enter the two words shown in the image." 187 | #~ msgstr "Bitte geben Sie die beiden im Bild angezeigten Wörter ein." 188 | 189 | #~ msgid "An unexpected Error occurred, please try again." 190 | #~ msgstr "" 191 | #~ "Ein unerwarteted Fehler ist aufgetreten. Bitte versuchen Sie es erneut" 192 | 193 | #~ msgid "The words you entered did not match the image. Please try again." 194 | #~ msgstr "" 195 | #~ "Die von Ihnen eingegebenen Wörter stimmten nicht mit dem Bild überein. " 196 | #~ "Bitte versuchen Sie es erneut." 197 | 198 | #~ msgid "Incorrect please try again" 199 | #~ msgstr "Eingabe nicht korrekt, bitte erneut versuchen" 200 | 201 | #~ msgid "Enter the words above:" 202 | #~ msgstr "Obige Wörter eingeben:" 203 | 204 | #~ msgid "Enter the numbers you hear:" 205 | #~ msgstr "Die gehörten Zahlen eingeben:" 206 | 207 | #~ msgid "Get another CAPTCHA" 208 | #~ msgstr "Anderes CAPTCHA" 209 | 210 | #~ msgid "Get an audio CAPTCHA" 211 | #~ msgstr "Audio CAPTCHA" 212 | 213 | #~ msgid "Get an image CAPTCHA" 214 | #~ msgstr "Bild CAPTCHA" 215 | 216 | #~ msgid "Help" 217 | #~ msgstr "Hilfe" 218 | 219 | #~ msgid "No subject" 220 | #~ msgstr "Kein Betreff" 221 | 222 | #~ msgid "Email sender label" 223 | #~ msgstr "E-Mail Absender Beschriftung" 224 | 225 | #~ msgid "Your email address" 226 | #~ msgstr "Ihre E-Mail Adresse" 227 | 228 | #~ msgid "Subject label" 229 | #~ msgstr "Betreff Beschriftung" 230 | 231 | #~ msgid "Message content label" 232 | #~ msgstr "Nachrichteninhalt Beschriftung" 233 | 234 | #~ msgid "You did not enter any of the words." 235 | #~ msgstr "Sie haben keines der Wörter eingegeben." 236 | -------------------------------------------------------------------------------- /cmsplugin_contact/locale/es/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/locale/es/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cmsplugin_contact/locale/es/LC_MESSAGES/django.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # Pedro A. Gracia Fajardo , 2011. 6 | # 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: 0.9.8\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-07-01 19:55+0300\n" 12 | "PO-Revision-Date: 2011-12-21 19:46+0100\n" 13 | "Last-Translator: Pedro A. Gracia Fajardo \n" 14 | "Language-Team: es \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1)\n" 20 | 21 | #: cmsplugin_contact/admin.py:20 22 | msgid "Akismet API Key" 23 | msgstr "Clave para la API de Akismet" 24 | 25 | #: cmsplugin_contact/admin.py:20 26 | msgid "Get a Wordpress Key from http://akismet.com/" 27 | msgstr "Obtenga una Clave para Wordpress en http://akismet.com/" 28 | 29 | #: cmsplugin_contact/admin.py:21 30 | msgid "ReCAPTCHA Public Key" 31 | msgstr "Clave Pública de ReCAPTCHA" 32 | 33 | #: cmsplugin_contact/admin.py:21 cmsplugin_contact/admin.py:22 34 | msgid "Get this from http://www.google.com/recaptcha" 35 | msgstr "Obténgala en http://www.google.com/recaptcha" 36 | 37 | #: cmsplugin_contact/admin.py:22 38 | msgid "ReCAPTCHA Private Key" 39 | msgstr "Clave Privada de ReCAPTCHA" 40 | 41 | #: cmsplugin_contact/admin.py:40 42 | msgid "" 43 | "Akismet library is not installed. Use \"easy_install akismet\" or \"pip " 44 | "install akismet\"." 45 | msgstr "" 46 | "La librería Akismet no está instalada. Use \"easy_install akismet\" o \"pip " 47 | "install akismet\"." 48 | 49 | #: cmsplugin_contact/admin.py:54 50 | msgid "The API Key is not valid." 51 | msgstr "La Clave de la API no es válida." 52 | 53 | #: cmsplugin_contact/admin.py:62 54 | msgid "" 55 | "ReCAPTCHA library is not installed. Use \"easy_install recaptcha-client\" or " 56 | "\"pip install recaptcha-client\"." 57 | msgstr "" 58 | "La librería ReCAPTCHA no está instalada. Use \"easy_install recaptcha-client" 59 | "\" o \"pip install recaptcha-client\"." 60 | 61 | #: cmsplugin_contact/cms_plugins.py:30 62 | #: cmsplugin_contact/templates/cmsplugin_contact/subject.txt:1 63 | msgid "Contact Form" 64 | msgstr "Formulario de Contacto" 65 | 66 | #: cmsplugin_contact/cms_plugins.py:43 67 | msgid "Redirection" 68 | msgstr "" 69 | 70 | #: cmsplugin_contact/cms_plugins.py:46 71 | msgid "Spam Protection" 72 | msgstr "Protección de Spam" 73 | 74 | #: cmsplugin_contact/forms.py:7 75 | msgid "Email" 76 | msgstr "" 77 | 78 | #: cmsplugin_contact/forms.py:8 79 | msgid "Subject" 80 | msgstr "Asunto" 81 | 82 | #: cmsplugin_contact/forms.py:9 83 | msgid "Content" 84 | msgstr "" 85 | 86 | #: cmsplugin_contact/models.py:17 87 | msgid "Light" 88 | msgstr "" 89 | 90 | #: cmsplugin_contact/models.py:18 91 | msgid "Dark" 92 | msgstr "" 93 | 94 | #: cmsplugin_contact/models.py:21 95 | msgid "Normal" 96 | msgstr "" 97 | 98 | #: cmsplugin_contact/models.py:22 99 | msgid "Compact" 100 | msgstr "" 101 | 102 | #: cmsplugin_contact/models.py:24 103 | msgid "Form name" 104 | msgstr "" 105 | 106 | #: cmsplugin_contact/models.py:27 107 | msgid "Used to distinguish multiple contact forms on the same site." 108 | msgstr "" 109 | 110 | #: cmsplugin_contact/models.py:28 111 | msgid "Form Layout" 112 | msgstr "" 113 | 114 | #: cmsplugin_contact/models.py:30 115 | msgid "Choose the layout of contact form" 116 | msgstr "" 117 | 118 | #: cmsplugin_contact/models.py:33 119 | msgid "Email recipient" 120 | msgstr "Receptor del email" 121 | 122 | #: cmsplugin_contact/models.py:36 123 | msgid "Thanks message" 124 | msgstr "Mensaje de agradecimiento" 125 | 126 | #: cmsplugin_contact/models.py:37 127 | msgid "Message displayed on successful submit" 128 | msgstr "Mensaje mostrado si el envío ha sido un éxito" 129 | 130 | #: cmsplugin_contact/models.py:38 131 | msgid "Thank you for your message." 132 | msgstr "Gracias por su mensaje." 133 | 134 | #: cmsplugin_contact/models.py:39 135 | msgid "Submit button value" 136 | msgstr "Valor del botón de envío" 137 | 138 | #: cmsplugin_contact/models.py:40 139 | msgid "Submit" 140 | msgstr "Enviar" 141 | 142 | #: cmsplugin_contact/models.py:43 143 | msgid "Spam protection method" 144 | msgstr "Método de protección contra el spam" 145 | 146 | #: cmsplugin_contact/models.py:53 147 | msgid "ReCAPTCHA theme" 148 | msgstr "Tema del ReCAPTCHA" 149 | 150 | #: cmsplugin_contact/models.py:57 151 | #, fuzzy 152 | #| msgid "ReCAPTCHA theme" 153 | msgid "ReCAPTCHA size" 154 | msgstr "Tema del ReCAPTCHA" 155 | 156 | #: cmsplugin_contact/models.py:59 157 | msgid "URL Redirection" 158 | msgstr "" 159 | 160 | #: cmsplugin_contact/models.py:60 161 | msgid "If it is set, the form redirect to url when the form is valid" 162 | msgstr "" 163 | 164 | #: cmsplugin_contact/nospam/fields.py:13 165 | msgid "Please don't check this box." 166 | msgstr "Por favor, no marque esta caja." 167 | 168 | #: cmsplugin_contact/nospam/widgets.py:12 169 | msgid "Are you a robot?" 170 | msgstr "¿Eres un robot?" 171 | 172 | #: cmsplugin_contact/settings.py:7 173 | msgid "default" 174 | msgstr "" 175 | 176 | #: cmsplugin_contact/templates/cmsplugin_contact/email.txt:1 177 | #, fuzzy 178 | #| msgid "Message" 179 | msgid "Message from" 180 | msgstr "Mensaje" 181 | 182 | #~ msgid "No subject" 183 | #~ msgstr "Sin asunto" 184 | 185 | #~ msgid "Email sender label" 186 | #~ msgstr "Etiqueta del que envía el email" 187 | 188 | #~ msgid "Your email address" 189 | #~ msgstr "Su dirección de email" 190 | 191 | #~ msgid "Subject label" 192 | #~ msgstr "Etiqueta del asunto" 193 | 194 | #~ msgid "Message content label" 195 | #~ msgstr "Etiqueta del contenido del mensaje" 196 | 197 | #~ msgid "Please enter the two words on the image separated by a space:" 198 | #~ msgstr "" 199 | #~ "Por favor, introduzca las dos palabras de la imágen separadas por un " 200 | #~ "espacio." 201 | 202 | #~ msgid "You did not enter any of the words." 203 | #~ msgstr "No ha introducido ninguna de las palabras." 204 | 205 | #~ msgid "You did not enter the two words shown in the image." 206 | #~ msgstr "No has introducido las dos palabras mostradas en la imágen." 207 | 208 | #~ msgid "The words you entered did not match the image" 209 | #~ msgstr "Las palabras que ha introducido no concuerdan con las de la imágen." 210 | 211 | #~ msgid "Incorrect please try again" 212 | #~ msgstr "Incorrecto, por favor inténtelo de nuevo" 213 | 214 | #~ msgid "Enter the words above:" 215 | #~ msgstr "Introduzca las palabras de arriba:" 216 | 217 | #~ msgid "Enter the numbers you hear:" 218 | #~ msgstr "Introduzca los números que escuche:" 219 | 220 | #~ msgid "Get another CAPTCHA" 221 | #~ msgstr "Obtener otro CAPTCHA" 222 | 223 | #~ msgid "Get an audio CAPTCHA" 224 | #~ msgstr "Obtener un CAPTCHA de audio" 225 | 226 | #~ msgid "Get an image CAPTCHA" 227 | #~ msgstr "Obtener un CAPTCHA de imágen" 228 | 229 | #~ msgid "Help" 230 | #~ msgstr "Ayuda" 231 | -------------------------------------------------------------------------------- /cmsplugin_contact/locale/fr/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/locale/fr/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cmsplugin_contact/locale/fr/LC_MESSAGES/django.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Gregory Favre , 2012. 6 | # 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: PACKAGE VERSION\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-07-01 19:55+0300\n" 12 | "PO-Revision-Date: 2014-08-08 10:05+0100\n" 13 | "Last-Translator: Rémi Saurel \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: fr\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1)\n" 20 | 21 | #: cmsplugin_contact/admin.py:20 22 | msgid "Akismet API Key" 23 | msgstr "Clé de l'API d'Akismet" 24 | 25 | #: cmsplugin_contact/admin.py:20 26 | msgid "Get a Wordpress Key from http://akismet.com/" 27 | msgstr "Clé Wordpress de http://akismet.com/" 28 | 29 | #: cmsplugin_contact/admin.py:21 30 | msgid "ReCAPTCHA Public Key" 31 | msgstr "Clé publique ReCAPTCHA" 32 | 33 | #: cmsplugin_contact/admin.py:21 cmsplugin_contact/admin.py:22 34 | msgid "Get this from http://www.google.com/recaptcha" 35 | msgstr "Récupérable sur http://www.google.com/recaptcha" 36 | 37 | #: cmsplugin_contact/admin.py:22 38 | msgid "ReCAPTCHA Private Key" 39 | msgstr "Clé privée ReCAPTCHA" 40 | 41 | #: cmsplugin_contact/admin.py:40 42 | msgid "" 43 | "Akismet library is not installed. Use \"easy_install akismet\" or \"pip " 44 | "install akismet\"." 45 | msgstr "" 46 | "La bibliothèque Akismet n'est pas installée. Pour l'installer: " 47 | "\"easy_install akismet\" ou \"pip install akismet\"" 48 | 49 | #: cmsplugin_contact/admin.py:54 50 | msgid "The API Key is not valid." 51 | msgstr "La clé de l'API n'est pas valide." 52 | 53 | #: cmsplugin_contact/admin.py:62 54 | msgid "" 55 | "ReCAPTCHA library is not installed. Use \"easy_install recaptcha-client\" or " 56 | "\"pip install recaptcha-client\"." 57 | msgstr "" 58 | "La bibliothèque ReCAPTCHA n'est pas installée. Pour l'installer: " 59 | "\"easy_install recaptcha-client\" ou \"pip install recaptcha-client\"" 60 | 61 | #: cmsplugin_contact/cms_plugins.py:30 62 | #: cmsplugin_contact/templates/cmsplugin_contact/subject.txt:1 63 | msgid "Contact Form" 64 | msgstr "Formulaire de contact" 65 | 66 | #: cmsplugin_contact/cms_plugins.py:43 67 | msgid "Redirection" 68 | msgstr "" 69 | 70 | #: cmsplugin_contact/cms_plugins.py:46 71 | msgid "Spam Protection" 72 | msgstr "Protection contre le spam" 73 | 74 | #: cmsplugin_contact/forms.py:7 75 | msgid "Email" 76 | msgstr "Email" 77 | 78 | #: cmsplugin_contact/forms.py:8 79 | msgid "Subject" 80 | msgstr "Objet" 81 | 82 | #: cmsplugin_contact/forms.py:9 83 | msgid "Content" 84 | msgstr "Contenu" 85 | 86 | #: cmsplugin_contact/models.py:17 87 | msgid "Light" 88 | msgstr "" 89 | 90 | #: cmsplugin_contact/models.py:18 91 | msgid "Dark" 92 | msgstr "" 93 | 94 | #: cmsplugin_contact/models.py:21 95 | msgid "Normal" 96 | msgstr "" 97 | 98 | #: cmsplugin_contact/models.py:22 99 | msgid "Compact" 100 | msgstr "" 101 | 102 | #: cmsplugin_contact/models.py:24 103 | msgid "Form name" 104 | msgstr "Nom du formulaire" 105 | 106 | #: cmsplugin_contact/models.py:27 107 | msgid "Used to distinguish multiple contact forms on the same site." 108 | msgstr "" 109 | "Utilisé pour distinguer plusieurs formulaires de contact sur un même site." 110 | 111 | #: cmsplugin_contact/models.py:28 112 | msgid "Form Layout" 113 | msgstr "Mise en page du formulaire" 114 | 115 | #: cmsplugin_contact/models.py:30 116 | #, fuzzy 117 | #| msgid "Choice the layout of contact form" 118 | msgid "Choose the layout of contact form" 119 | msgstr "Choisissez la mise en page du formulaire de contact" 120 | 121 | #: cmsplugin_contact/models.py:33 122 | msgid "Email recipient" 123 | msgstr "Destinataire de l'email" 124 | 125 | #: cmsplugin_contact/models.py:36 126 | msgid "Thanks message" 127 | msgstr "Message de remerciement" 128 | 129 | #: cmsplugin_contact/models.py:37 130 | msgid "Message displayed on successful submit" 131 | msgstr "Message affiché après la réception du formulaire" 132 | 133 | #: cmsplugin_contact/models.py:38 134 | msgid "Thank you for your message." 135 | msgstr "Merci pour votre message." 136 | 137 | #: cmsplugin_contact/models.py:39 138 | msgid "Submit button value" 139 | msgstr "Libellé du bouton d'envoi" 140 | 141 | #: cmsplugin_contact/models.py:40 142 | msgid "Submit" 143 | msgstr "Envoyer" 144 | 145 | #: cmsplugin_contact/models.py:43 146 | msgid "Spam protection method" 147 | msgstr "Méthode de protection contre le spam" 148 | 149 | #: cmsplugin_contact/models.py:53 150 | msgid "ReCAPTCHA theme" 151 | msgstr "Thème de ReCAPTCHA" 152 | 153 | #: cmsplugin_contact/models.py:57 154 | #, fuzzy 155 | #| msgid "ReCAPTCHA theme" 156 | msgid "ReCAPTCHA size" 157 | msgstr "Thème de ReCAPTCHA" 158 | 159 | #: cmsplugin_contact/models.py:59 160 | msgid "URL Redirection" 161 | msgstr "" 162 | 163 | #: cmsplugin_contact/models.py:60 164 | msgid "If it is set, the form redirect to url when the form is valid" 165 | msgstr "" 166 | 167 | #: cmsplugin_contact/nospam/fields.py:13 168 | msgid "Please don't check this box." 169 | msgstr "Veuillez ne pas cocher cette case." 170 | 171 | #: cmsplugin_contact/nospam/widgets.py:12 172 | msgid "Are you a robot?" 173 | msgstr "Êtes-vous un robot?" 174 | 175 | #: cmsplugin_contact/settings.py:7 176 | msgid "default" 177 | msgstr "par défaut" 178 | 179 | #: cmsplugin_contact/templates/cmsplugin_contact/email.txt:1 180 | msgid "Message from" 181 | msgstr "Message envoyé par" 182 | 183 | #~ msgid "Please enter the two words on the image separated by a space:" 184 | #~ msgstr "" 185 | #~ "Veuillez saisir les deux mots présents sur l'image, séparés par un " 186 | #~ "espace :" 187 | 188 | #~ msgid "You did not enter any of the words." 189 | #~ msgstr "Vous n'avez saisi aucun des mots." 190 | 191 | #~ msgid "An unexpected Error occurred, please try again." 192 | #~ msgstr "Une erreur inattendue s'est produite, veuillez réessayer." 193 | 194 | #~ msgid "Please enter the two words shown in the image." 195 | #~ msgstr "Veuillez saisir les deux mots apparaissant dans l'image." 196 | 197 | #~ msgid "The words you entered did not match the image. Please try again." 198 | #~ msgstr "" 199 | #~ "Les mots que vous avez saisis ne correspondent pas à ceux de l'image. " 200 | #~ "Veuillez réessayer." 201 | 202 | #~ msgid "Incorrect please try again" 203 | #~ msgstr "La saisie est incorrecte, veuillez réessayer" 204 | 205 | #~ msgid "Enter the words above:" 206 | #~ msgstr "Veuillez saisir les mots affichés ci-dessus :" 207 | 208 | #~ msgid "Enter the numbers you hear:" 209 | #~ msgstr "Veuillez saisir les chiffres que vous entendez :" 210 | 211 | #~ msgid "Get another CAPTCHA" 212 | #~ msgstr "Obtenir un nouveau CAPTCHA" 213 | 214 | #~ msgid "Get an audio CAPTCHA" 215 | #~ msgstr "Obtenir un CAPTCHA audio" 216 | 217 | #~ msgid "Get an image CAPTCHA" 218 | #~ msgstr "Obtenir un CAPTCHA visuel" 219 | 220 | #~ msgid "Help" 221 | #~ msgstr "Aide" 222 | -------------------------------------------------------------------------------- /cmsplugin_contact/locale/it/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/locale/it/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cmsplugin_contact/locale/it/LC_MESSAGES/django.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: PACKAGE VERSION\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-07-01 19:55+0300\n" 12 | "PO-Revision-Date: 2011-10-27 11:54\n" 13 | "Last-Translator: \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1)\n" 20 | "X-Translated-Using: django-rosetta 0.6.2\n" 21 | 22 | #: cmsplugin_contact/admin.py:20 23 | msgid "Akismet API Key" 24 | msgstr "Chiave API Akismet" 25 | 26 | #: cmsplugin_contact/admin.py:20 27 | msgid "Get a Wordpress Key from http://akismet.com/" 28 | msgstr "Otteni una chiave Wordpress da http://akismet.com/" 29 | 30 | #: cmsplugin_contact/admin.py:21 31 | msgid "ReCAPTCHA Public Key" 32 | msgstr "ReCAPTCHA chiave pubblica" 33 | 34 | #: cmsplugin_contact/admin.py:21 cmsplugin_contact/admin.py:22 35 | msgid "Get this from http://www.google.com/recaptcha" 36 | msgstr "Ottenila da http://www.google.com/recaptcha" 37 | 38 | #: cmsplugin_contact/admin.py:22 39 | msgid "ReCAPTCHA Private Key" 40 | msgstr "ReCAPTCHA chiave privata" 41 | 42 | #: cmsplugin_contact/admin.py:40 43 | msgid "" 44 | "Akismet library is not installed. Use \"easy_install akismet\" or \"pip " 45 | "install akismet\"." 46 | msgstr "" 47 | "La libreria Akismet non è installata. Usa \"easy_install akismet\" o \"pip " 48 | "install akismet\"." 49 | 50 | #: cmsplugin_contact/admin.py:54 51 | msgid "The API Key is not valid." 52 | msgstr "La chiave API non è valida." 53 | 54 | #: cmsplugin_contact/admin.py:62 55 | msgid "" 56 | "ReCAPTCHA library is not installed. Use \"easy_install recaptcha-client\" or " 57 | "\"pip install recaptcha-client\"." 58 | msgstr "" 59 | "La libreria ReCAPTCHA non è installata. Usa \"easy_install ReCaptcha-client" 60 | "\" o \"pip install recaptcha-client\"." 61 | 62 | #: cmsplugin_contact/cms_plugins.py:30 63 | #: cmsplugin_contact/templates/cmsplugin_contact/subject.txt:1 64 | msgid "Contact Form" 65 | msgstr "Modulo Contatti" 66 | 67 | #: cmsplugin_contact/cms_plugins.py:43 68 | msgid "Redirection" 69 | msgstr "" 70 | 71 | #: cmsplugin_contact/cms_plugins.py:46 72 | msgid "Spam Protection" 73 | msgstr "Protezione dallo Spam" 74 | 75 | #: cmsplugin_contact/forms.py:7 76 | msgid "Email" 77 | msgstr "" 78 | 79 | #: cmsplugin_contact/forms.py:8 80 | msgid "Subject" 81 | msgstr "Titolo" 82 | 83 | #: cmsplugin_contact/forms.py:9 84 | msgid "Content" 85 | msgstr "" 86 | 87 | #: cmsplugin_contact/models.py:17 88 | msgid "Light" 89 | msgstr "" 90 | 91 | #: cmsplugin_contact/models.py:18 92 | msgid "Dark" 93 | msgstr "" 94 | 95 | #: cmsplugin_contact/models.py:21 96 | msgid "Normal" 97 | msgstr "" 98 | 99 | #: cmsplugin_contact/models.py:22 100 | msgid "Compact" 101 | msgstr "" 102 | 103 | #: cmsplugin_contact/models.py:24 104 | msgid "Form name" 105 | msgstr "" 106 | 107 | #: cmsplugin_contact/models.py:27 108 | msgid "Used to distinguish multiple contact forms on the same site." 109 | msgstr "" 110 | 111 | #: cmsplugin_contact/models.py:28 112 | msgid "Form Layout" 113 | msgstr "" 114 | 115 | #: cmsplugin_contact/models.py:30 116 | msgid "Choose the layout of contact form" 117 | msgstr "" 118 | 119 | #: cmsplugin_contact/models.py:33 120 | msgid "Email recipient" 121 | msgstr "Email del destinatario" 122 | 123 | #: cmsplugin_contact/models.py:36 124 | msgid "Thanks message" 125 | msgstr "Messaggio di ringraziamento" 126 | 127 | #: cmsplugin_contact/models.py:37 128 | msgid "Message displayed on successful submit" 129 | msgstr "Messaggio visualizzato in caso di invio con successo" 130 | 131 | #: cmsplugin_contact/models.py:38 132 | msgid "Thank you for your message." 133 | msgstr "Grazie per il tuo messaggio." 134 | 135 | #: cmsplugin_contact/models.py:39 136 | msgid "Submit button value" 137 | msgstr "Valore del bottone \"Invia\"" 138 | 139 | #: cmsplugin_contact/models.py:40 140 | msgid "Submit" 141 | msgstr "Invia" 142 | 143 | #: cmsplugin_contact/models.py:43 144 | msgid "Spam protection method" 145 | msgstr "Metodo di protezione anti-spam" 146 | 147 | #: cmsplugin_contact/models.py:53 148 | msgid "ReCAPTCHA theme" 149 | msgstr "Tema ReCAPTCHA" 150 | 151 | #: cmsplugin_contact/models.py:57 152 | #, fuzzy 153 | #| msgid "ReCAPTCHA theme" 154 | msgid "ReCAPTCHA size" 155 | msgstr "Tema ReCAPTCHA" 156 | 157 | #: cmsplugin_contact/models.py:59 158 | msgid "URL Redirection" 159 | msgstr "" 160 | 161 | #: cmsplugin_contact/models.py:60 162 | msgid "If it is set, the form redirect to url when the form is valid" 163 | msgstr "" 164 | 165 | #: cmsplugin_contact/nospam/fields.py:13 166 | msgid "Please don't check this box." 167 | msgstr "Non selezionare questa casella." 168 | 169 | #: cmsplugin_contact/nospam/widgets.py:12 170 | msgid "Are you a robot?" 171 | msgstr "Sei un robot?" 172 | 173 | #: cmsplugin_contact/settings.py:7 174 | msgid "default" 175 | msgstr "" 176 | 177 | #: cmsplugin_contact/templates/cmsplugin_contact/email.txt:1 178 | #, fuzzy 179 | #| msgid "Message" 180 | msgid "Message from" 181 | msgstr "Messaggio" 182 | 183 | #~ msgid "No subject" 184 | #~ msgstr "Nessun oggetto" 185 | 186 | #~ msgid "Email sender label" 187 | #~ msgstr "Etichetta e-mail del mittente" 188 | 189 | #~ msgid "Your email address" 190 | #~ msgstr "Il tuo indirizzo e-mail" 191 | 192 | #~ msgid "Subject label" 193 | #~ msgstr "Etichetta titolo" 194 | 195 | #~ msgid "Message content label" 196 | #~ msgstr "Etichetta contenuto messaggio" 197 | 198 | #~ msgid "Please enter the two words on the image separated by a space:" 199 | #~ msgstr "Inserisci le due parole nell'immagine separate da uno spazio:" 200 | 201 | #~ msgid "You did not enter any of the words." 202 | #~ msgstr "Non hai inserito nessuna delle parole." 203 | 204 | #~ msgid "You did not enter the two words shown in the image." 205 | #~ msgstr "Non hai inserito le due parole mostrate nell'immagine." 206 | 207 | #~ msgid "The words you entered did not match the image." 208 | #~ msgstr "Le parole inserite non corrispondono a quelle dell'immagine." 209 | 210 | #~ msgid "Incorrect please try again" 211 | #~ msgstr "Errore, riprova di nuovo" 212 | 213 | #~ msgid "Enter the words above:" 214 | #~ msgstr "Inserisci le parole sopra:" 215 | 216 | #~ msgid "Enter the numbers you hear:" 217 | #~ msgstr "Inserisci i numeri che senti:" 218 | 219 | #~ msgid "Get another CAPTCHA" 220 | #~ msgstr "Chiedi un altro CAPTCHA" 221 | 222 | #~ msgid "Get an audio CAPTCHA" 223 | #~ msgstr "Chiedi un audio CAPTCHA" 224 | 225 | #~ msgid "Get an image CAPTCHA" 226 | #~ msgstr "Chiedi un'immagine CAPTCHA" 227 | 228 | #~ msgid "Help" 229 | #~ msgstr "Aiuto" 230 | -------------------------------------------------------------------------------- /cmsplugin_contact/locale/no/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/locale/no/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cmsplugin_contact/locale/no/LC_MESSAGES/django.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: PACKAGE VERSION\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-07-01 19:55+0300\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1)\n" 20 | 21 | #: cmsplugin_contact/admin.py:20 22 | msgid "Akismet API Key" 23 | msgstr "API-nøkkel for Akismet" 24 | 25 | #: cmsplugin_contact/admin.py:20 26 | msgid "Get a Wordpress Key from http://akismet.com/" 27 | msgstr "Hent Wordspress-nøkkel fra http://akismet.com/" 28 | 29 | #: cmsplugin_contact/admin.py:21 30 | msgid "ReCAPTCHA Public Key" 31 | msgstr "Offentlig ReCAPTCHA-nøkkel" 32 | 33 | #: cmsplugin_contact/admin.py:21 cmsplugin_contact/admin.py:22 34 | msgid "Get this from http://www.google.com/recaptcha" 35 | msgstr "Hent denne fra http://www.google.com/recaptcha" 36 | 37 | #: cmsplugin_contact/admin.py:22 38 | msgid "ReCAPTCHA Private Key" 39 | msgstr "Privat ReCAPTCHA-nøkkel" 40 | 41 | #: cmsplugin_contact/admin.py:40 42 | msgid "" 43 | "Akismet library is not installed. Use \"easy_install akismet\" or \"pip " 44 | "install akismet\"." 45 | msgstr "" 46 | "Akismet-biblioteket er ikke installert. Benytt \"easy_install akismet\" " 47 | "eller \"pip install akismet\"" 48 | 49 | #: cmsplugin_contact/admin.py:54 50 | msgid "The API Key is not valid." 51 | msgstr "API-nøkkelen er ikke gyldig." 52 | 53 | #: cmsplugin_contact/admin.py:62 54 | msgid "" 55 | "ReCAPTCHA library is not installed. Use \"easy_install recaptcha-client\" or " 56 | "\"pip install recaptcha-client\"." 57 | msgstr "" 58 | "ReCAPTCHA-biblioteket er ikke installert. Benytt \"easy_install recaptcha-" 59 | "client\" eller \"pip install recaptcha-client\"" 60 | 61 | #: cmsplugin_contact/cms_plugins.py:30 62 | #: cmsplugin_contact/templates/cmsplugin_contact/subject.txt:1 63 | msgid "Contact Form" 64 | msgstr "Kontaktskjema" 65 | 66 | #: cmsplugin_contact/cms_plugins.py:43 67 | msgid "Redirection" 68 | msgstr "" 69 | 70 | #: cmsplugin_contact/cms_plugins.py:46 71 | msgid "Spam Protection" 72 | msgstr "Søpplebeskyttelse" 73 | 74 | #: cmsplugin_contact/forms.py:7 75 | msgid "Email" 76 | msgstr "" 77 | 78 | #: cmsplugin_contact/forms.py:8 79 | msgid "Subject" 80 | msgstr "Emne" 81 | 82 | #: cmsplugin_contact/forms.py:9 83 | msgid "Content" 84 | msgstr "" 85 | 86 | #: cmsplugin_contact/models.py:17 87 | msgid "Light" 88 | msgstr "" 89 | 90 | #: cmsplugin_contact/models.py:18 91 | msgid "Dark" 92 | msgstr "" 93 | 94 | #: cmsplugin_contact/models.py:21 95 | msgid "Normal" 96 | msgstr "" 97 | 98 | #: cmsplugin_contact/models.py:22 99 | msgid "Compact" 100 | msgstr "" 101 | 102 | #: cmsplugin_contact/models.py:24 103 | msgid "Form name" 104 | msgstr "" 105 | 106 | #: cmsplugin_contact/models.py:27 107 | msgid "Used to distinguish multiple contact forms on the same site." 108 | msgstr "" 109 | 110 | #: cmsplugin_contact/models.py:28 111 | msgid "Form Layout" 112 | msgstr "" 113 | 114 | #: cmsplugin_contact/models.py:30 115 | msgid "Choose the layout of contact form" 116 | msgstr "" 117 | 118 | #: cmsplugin_contact/models.py:33 119 | msgid "Email recipient" 120 | msgstr "Epost-mottaker" 121 | 122 | #: cmsplugin_contact/models.py:36 123 | msgid "Thanks message" 124 | msgstr "Bekreftelsesmelding" 125 | 126 | #: cmsplugin_contact/models.py:37 127 | msgid "Message displayed on successful submit" 128 | msgstr "Melding vises ved gjennomført sending" 129 | 130 | #: cmsplugin_contact/models.py:38 131 | msgid "Thank you for your message." 132 | msgstr "Takk for din beskjed." 133 | 134 | #: cmsplugin_contact/models.py:39 135 | msgid "Submit button value" 136 | msgstr "Etikett for send-knapp" 137 | 138 | #: cmsplugin_contact/models.py:40 139 | msgid "Submit" 140 | msgstr "Send" 141 | 142 | #: cmsplugin_contact/models.py:43 143 | msgid "Spam protection method" 144 | msgstr "Metode for søppelbeskyttelse" 145 | 146 | #: cmsplugin_contact/models.py:53 147 | msgid "ReCAPTCHA theme" 148 | msgstr "ReCAPTCHA-tema" 149 | 150 | #: cmsplugin_contact/models.py:57 151 | #, fuzzy 152 | #| msgid "ReCAPTCHA theme" 153 | msgid "ReCAPTCHA size" 154 | msgstr "ReCAPTCHA-tema" 155 | 156 | #: cmsplugin_contact/models.py:59 157 | msgid "URL Redirection" 158 | msgstr "" 159 | 160 | #: cmsplugin_contact/models.py:60 161 | msgid "If it is set, the form redirect to url when the form is valid" 162 | msgstr "" 163 | 164 | #: cmsplugin_contact/nospam/fields.py:13 165 | msgid "Please don't check this box." 166 | msgstr "Vennligst ikke huk av denne boksen." 167 | 168 | #: cmsplugin_contact/nospam/widgets.py:12 169 | msgid "Are you a robot?" 170 | msgstr "Er du en robot?" 171 | 172 | #: cmsplugin_contact/settings.py:7 173 | msgid "default" 174 | msgstr "" 175 | 176 | #: cmsplugin_contact/templates/cmsplugin_contact/email.txt:1 177 | #, fuzzy 178 | #| msgid "Message" 179 | msgid "Message from" 180 | msgstr "Melding" 181 | 182 | #~ msgid "No subject" 183 | #~ msgstr "Uten emne" 184 | 185 | #~ msgid "Email sender label" 186 | #~ msgstr "Etikett for avsender" 187 | 188 | #~ msgid "Your email address" 189 | #~ msgstr "Din epostadresse" 190 | 191 | #~ msgid "Subject label" 192 | #~ msgstr "Etikett for emne" 193 | 194 | #~ msgid "Message content label" 195 | #~ msgstr "Etikett for meldingsinnhold" 196 | 197 | #~ msgid "Please enter the two words on the image separated by a space:" 198 | #~ msgstr "Vennligst oppgi de to ordene på bidet, separert med et mellomrom:" 199 | 200 | #~ msgid "You did not enter any of the words." 201 | #~ msgstr "Du oppga ingen av ordene." 202 | 203 | #~ msgid "You did not enter the two words shown in the image." 204 | #~ msgstr "Du oppga ikke de to ordene vist på bildet." 205 | 206 | #~ msgid "The words you entered did not match the image" 207 | #~ msgstr "Ordene du oppga stemte ikke overens med de på bildet" 208 | 209 | #~ msgid "Incorrect please try again" 210 | #~ msgstr "Ikke korrekt, vennligst prøv igjen" 211 | 212 | #~ msgid "Enter the words above:" 213 | #~ msgstr "Oppgi ordene ovenfor:" 214 | 215 | #~ msgid "Enter the numbers you hear:" 216 | #~ msgstr "Oppgi tallene du hører:" 217 | 218 | #~ msgid "Get another CAPTCHA" 219 | #~ msgstr "Få en ny CAPTCHA" 220 | 221 | #~ msgid "Get an audio CAPTCHA" 222 | #~ msgstr "Få en lydbasert CAPTCHA" 223 | 224 | #~ msgid "Get an image CAPTCHA" 225 | #~ msgstr "Få en bilde-CAPTCHA" 226 | 227 | #~ msgid "Help" 228 | #~ msgstr "Hjelp" 229 | -------------------------------------------------------------------------------- /cmsplugin_contact/locale/pl/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/locale/pl/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cmsplugin_contact/locale/pl/LC_MESSAGES/django.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: \n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2018-07-01 19:56+0300\n" 11 | "PO-Revision-Date: 2016-07-22 13:48+0200\n" 12 | "Last-Translator: \n" 13 | "Language-Team: \n" 14 | "Language: pl\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Generator: Poedit 1.8.8\n" 19 | 20 | #: cmsplugin_contact/admin.py:20 21 | msgid "Akismet API Key" 22 | msgstr "Klucz API Akismet" 23 | 24 | #: cmsplugin_contact/admin.py:20 25 | msgid "Get a Wordpress Key from http://akismet.com/" 26 | msgstr "Pobierz klucz Wordpressa z http://akismet.com/" 27 | 28 | #: cmsplugin_contact/admin.py:21 29 | msgid "ReCAPTCHA Public Key" 30 | msgstr "Publiczny klucz ReCAPTCHA" 31 | 32 | #: cmsplugin_contact/admin.py:21 cmsplugin_contact/admin.py:22 33 | msgid "Get this from http://www.google.com/recaptcha" 34 | msgstr "Pobierz z http://www.google.com/recaptcha" 35 | 36 | #: cmsplugin_contact/admin.py:22 37 | msgid "ReCAPTCHA Private Key" 38 | msgstr "Prywatny klucz ReCAPTCHA" 39 | 40 | #: cmsplugin_contact/admin.py:40 41 | msgid "" 42 | "Akismet library is not installed. Use \"easy_install akismet\" or \"pip " 43 | "install akismet\"." 44 | msgstr "" 45 | "Biblioteka Akismet nie jest zainstalowana. Użyj \"easy_install akisment\" or " 46 | "\"pip install akismet\"." 47 | 48 | #: cmsplugin_contact/admin.py:54 49 | msgid "The API Key is not valid." 50 | msgstr "Klucz API jest nieważny" 51 | 52 | #: cmsplugin_contact/admin.py:62 53 | msgid "" 54 | "ReCAPTCHA library is not installed. Use \"easy_install recaptcha-client\" or " 55 | "\"pip install recaptcha-client\"." 56 | msgstr "" 57 | "Biblioteka ReCAPTCHA nie jest zainstalowana. Użyj \"easy_install recaptcha-" 58 | "client\" or \"pip install recaptcha-client\"." 59 | 60 | #: cmsplugin_contact/cms_plugins.py:30 61 | #: cmsplugin_contact/templates/cmsplugin_contact/subject.txt:1 62 | msgid "Contact Form" 63 | msgstr "Formularz kontaktowy" 64 | 65 | #: cmsplugin_contact/cms_plugins.py:43 66 | msgid "Redirection" 67 | msgstr "" 68 | 69 | #: cmsplugin_contact/cms_plugins.py:46 70 | msgid "Spam Protection" 71 | msgstr "Ochrona przed SPAMem" 72 | 73 | #: cmsplugin_contact/forms.py:7 74 | msgid "Email" 75 | msgstr "" 76 | 77 | #: cmsplugin_contact/forms.py:8 78 | msgid "Subject" 79 | msgstr "Temat" 80 | 81 | #: cmsplugin_contact/forms.py:9 82 | msgid "Content" 83 | msgstr "" 84 | 85 | #: cmsplugin_contact/models.py:17 86 | msgid "Light" 87 | msgstr "" 88 | 89 | #: cmsplugin_contact/models.py:18 90 | msgid "Dark" 91 | msgstr "" 92 | 93 | #: cmsplugin_contact/models.py:21 94 | msgid "Normal" 95 | msgstr "" 96 | 97 | #: cmsplugin_contact/models.py:22 98 | msgid "Compact" 99 | msgstr "" 100 | 101 | #: cmsplugin_contact/models.py:24 102 | msgid "Form name" 103 | msgstr "" 104 | 105 | #: cmsplugin_contact/models.py:27 106 | msgid "Used to distinguish multiple contact forms on the same site." 107 | msgstr "" 108 | 109 | #: cmsplugin_contact/models.py:28 110 | msgid "Form Layout" 111 | msgstr "" 112 | 113 | #: cmsplugin_contact/models.py:30 114 | msgid "Choose the layout of contact form" 115 | msgstr "" 116 | 117 | #: cmsplugin_contact/models.py:33 118 | msgid "Email recipient" 119 | msgstr "Odbiorca e-mail" 120 | 121 | #: cmsplugin_contact/models.py:36 122 | msgid "Thanks message" 123 | msgstr "Wiadomość końcowa" 124 | 125 | #: cmsplugin_contact/models.py:37 126 | msgid "Message displayed on successful submit" 127 | msgstr "Wiadomość wyświetlana po pomyślnym wysłaniu" 128 | 129 | #: cmsplugin_contact/models.py:38 130 | msgid "Thank you for your message." 131 | msgstr "Dziękujemy za Twoją wiadomość." 132 | 133 | #: cmsplugin_contact/models.py:39 134 | msgid "Submit button value" 135 | msgstr "Tekst przycisku wyślij" 136 | 137 | #: cmsplugin_contact/models.py:40 138 | msgid "Submit" 139 | msgstr "Wyślij" 140 | 141 | #: cmsplugin_contact/models.py:43 142 | msgid "Spam protection method" 143 | msgstr "Metoda ochrony przed SPAMem" 144 | 145 | #: cmsplugin_contact/models.py:53 146 | msgid "ReCAPTCHA theme" 147 | msgstr "Skórka ReCAPTCHA" 148 | 149 | #: cmsplugin_contact/models.py:57 150 | #, fuzzy 151 | #| msgid "ReCAPTCHA theme" 152 | msgid "ReCAPTCHA size" 153 | msgstr "Skórka ReCAPTCHA" 154 | 155 | #: cmsplugin_contact/models.py:59 156 | msgid "URL Redirection" 157 | msgstr "" 158 | 159 | #: cmsplugin_contact/models.py:60 160 | msgid "If it is set, the form redirect to url when the form is valid" 161 | msgstr "" 162 | 163 | #: cmsplugin_contact/nospam/fields.py:13 164 | msgid "Please don't check this box." 165 | msgstr "Nie zaznaczaj tego pola." 166 | 167 | #: cmsplugin_contact/nospam/widgets.py:12 168 | msgid "Are you a robot?" 169 | msgstr "Czy jesteś botem?" 170 | 171 | #: cmsplugin_contact/settings.py:7 172 | msgid "default" 173 | msgstr "" 174 | 175 | #: cmsplugin_contact/templates/cmsplugin_contact/email.txt:1 176 | #, fuzzy 177 | #| msgid "Message" 178 | msgid "Message from" 179 | msgstr "Wiadomość" 180 | 181 | #~ msgid "No subject" 182 | #~ msgstr "Brak tematu" 183 | 184 | #~ msgid "Email sender label" 185 | #~ msgstr "Etykieta pola \"Wysyłający\"" 186 | 187 | #~ msgid "Your email address" 188 | #~ msgstr "Twój adres e-mail" 189 | 190 | #~ msgid "Subject label" 191 | #~ msgstr "Etykieta pola \"temat\"" 192 | 193 | #~ msgid "Message content label" 194 | #~ msgstr "Etykieta pola \"treść\"" 195 | 196 | #~ msgid "Please enter the two words on the image separated by a space:" 197 | #~ msgstr "Wpisz dwa sława z obrazka oddzielone spacją:" 198 | 199 | #~ msgid "You did not enter any of the words." 200 | #~ msgstr "Nie zostało wpisane żadne ze słów." 201 | 202 | #~ msgid "You did not enter the two words shown in the image." 203 | #~ msgstr "Nie zostały wpisane dwa słowa z obrazka." 204 | 205 | #~ msgid "The words you entered did not match the image." 206 | #~ msgstr "Wpisane słowa nie pasują do tych na obrazku." 207 | 208 | #~ msgid "Incorrect please try again" 209 | #~ msgstr "Nieprawidłowo, spróbuj ponownie." 210 | 211 | #~ msgid "Enter the words above:" 212 | #~ msgstr "Wpisz słowa powyżej:" 213 | 214 | #~ msgid "Enter the numbers you hear:" 215 | #~ msgstr "Wpisz cyfry które słyszysz:" 216 | 217 | #~ msgid "Get another CAPTCHA" 218 | #~ msgstr "Użyj innej CAPTCHA" 219 | 220 | #~ msgid "Get an audio CAPTCHA" 221 | #~ msgstr "Użyj dźwiękowego CAPTCHA" 222 | 223 | #~ msgid "Get an image CAPTCHA" 224 | #~ msgstr "Uzyj obrazkowego CAPTCHA" 225 | 226 | #~ msgid "Help" 227 | #~ msgstr "Pomoc" 228 | -------------------------------------------------------------------------------- /cmsplugin_contact/locale/pt/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/locale/pt/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cmsplugin_contact/locale/pt/LC_MESSAGES/django.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: PACKAGE VERSION\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-07-01 19:56+0300\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1)\n" 20 | 21 | #: cmsplugin_contact/admin.py:20 22 | msgid "Akismet API Key" 23 | msgstr "Chave API Akismet" 24 | 25 | #: cmsplugin_contact/admin.py:20 26 | msgid "Get a Wordpress Key from http://akismet.com/" 27 | msgstr "Obtenha um chave Wordpress em http://akismet.com/" 28 | 29 | #: cmsplugin_contact/admin.py:21 30 | msgid "ReCAPTCHA Public Key" 31 | msgstr "Chave Pública ReCAPTCHA" 32 | 33 | #: cmsplugin_contact/admin.py:21 cmsplugin_contact/admin.py:22 34 | msgid "Get this from http://www.google.com/recaptcha" 35 | msgstr "Obtenha em http://www.google.com/recaptcha" 36 | 37 | #: cmsplugin_contact/admin.py:22 38 | msgid "ReCAPTCHA Private Key" 39 | msgstr "Chave Privada ReCAPTCHA" 40 | 41 | #: cmsplugin_contact/admin.py:40 42 | msgid "" 43 | "Akismet library is not installed. Use \"easy_install akismet\" or \"pip " 44 | "install akismet\"." 45 | msgstr "" 46 | "Biblioteca Akismet não está instalada. Use \"easy_install akismet\" ou \"pip " 47 | "install akismet\"." 48 | 49 | #: cmsplugin_contact/admin.py:54 50 | msgid "The API Key is not valid." 51 | msgstr "A Chave da API não é válida." 52 | 53 | #: cmsplugin_contact/admin.py:62 54 | msgid "" 55 | "ReCAPTCHA library is not installed. Use \"easy_install recaptcha-client\" or " 56 | "\"pip install recaptcha-client\"." 57 | msgstr "" 58 | "Biblioteca ReCAPTCHA não está instalada. Use \"easy_install recaptcha-client" 59 | "\" or \"pip install recaptcha-client\"." 60 | 61 | #: cmsplugin_contact/cms_plugins.py:30 62 | #: cmsplugin_contact/templates/cmsplugin_contact/subject.txt:1 63 | msgid "Contact Form" 64 | msgstr "Formulário de Contacto" 65 | 66 | #: cmsplugin_contact/cms_plugins.py:43 67 | msgid "Redirection" 68 | msgstr "" 69 | 70 | #: cmsplugin_contact/cms_plugins.py:46 71 | msgid "Spam Protection" 72 | msgstr "Proteção de Spam" 73 | 74 | #: cmsplugin_contact/forms.py:7 75 | msgid "Email" 76 | msgstr "" 77 | 78 | #: cmsplugin_contact/forms.py:8 79 | msgid "Subject" 80 | msgstr "Assunto" 81 | 82 | #: cmsplugin_contact/forms.py:9 83 | msgid "Content" 84 | msgstr "" 85 | 86 | #: cmsplugin_contact/models.py:17 87 | msgid "Light" 88 | msgstr "" 89 | 90 | #: cmsplugin_contact/models.py:18 91 | msgid "Dark" 92 | msgstr "" 93 | 94 | #: cmsplugin_contact/models.py:21 95 | msgid "Normal" 96 | msgstr "" 97 | 98 | #: cmsplugin_contact/models.py:22 99 | msgid "Compact" 100 | msgstr "" 101 | 102 | #: cmsplugin_contact/models.py:24 103 | msgid "Form name" 104 | msgstr "" 105 | 106 | #: cmsplugin_contact/models.py:27 107 | msgid "Used to distinguish multiple contact forms on the same site." 108 | msgstr "" 109 | 110 | #: cmsplugin_contact/models.py:28 111 | msgid "Form Layout" 112 | msgstr "" 113 | 114 | #: cmsplugin_contact/models.py:30 115 | msgid "Choose the layout of contact form" 116 | msgstr "" 117 | 118 | #: cmsplugin_contact/models.py:33 119 | msgid "Email recipient" 120 | msgstr "E-mail de destino" 121 | 122 | #: cmsplugin_contact/models.py:36 123 | msgid "Thanks message" 124 | msgstr "Mensagem de agradecimento" 125 | 126 | #: cmsplugin_contact/models.py:37 127 | msgid "Message displayed on successful submit" 128 | msgstr "Mensagem exibida ao enviar com sucesso" 129 | 130 | #: cmsplugin_contact/models.py:38 131 | msgid "Thank you for your message." 132 | msgstr "Obrigado for sua mensagem." 133 | 134 | #: cmsplugin_contact/models.py:39 135 | msgid "Submit button value" 136 | msgstr "Nome do botão de envio" 137 | 138 | #: cmsplugin_contact/models.py:40 139 | msgid "Submit" 140 | msgstr "Enviar" 141 | 142 | #: cmsplugin_contact/models.py:43 143 | msgid "Spam protection method" 144 | msgstr "Método de proteção de spam" 145 | 146 | #: cmsplugin_contact/models.py:53 147 | msgid "ReCAPTCHA theme" 148 | msgstr "Tema do ReCAPTCHA" 149 | 150 | #: cmsplugin_contact/models.py:57 151 | #, fuzzy 152 | #| msgid "ReCAPTCHA theme" 153 | msgid "ReCAPTCHA size" 154 | msgstr "Tema do ReCAPTCHA" 155 | 156 | #: cmsplugin_contact/models.py:59 157 | msgid "URL Redirection" 158 | msgstr "" 159 | 160 | #: cmsplugin_contact/models.py:60 161 | msgid "If it is set, the form redirect to url when the form is valid" 162 | msgstr "" 163 | 164 | #: cmsplugin_contact/nospam/fields.py:13 165 | msgid "Please don't check this box." 166 | msgstr "Não seleccionar esta caixa" 167 | 168 | #: cmsplugin_contact/nospam/widgets.py:12 169 | msgid "Are you a robot?" 170 | msgstr "És um Robô?" 171 | 172 | #: cmsplugin_contact/settings.py:7 173 | msgid "default" 174 | msgstr "" 175 | 176 | #: cmsplugin_contact/templates/cmsplugin_contact/email.txt:1 177 | #, fuzzy 178 | #| msgid "Message" 179 | msgid "Message from" 180 | msgstr "Mensagem" 181 | 182 | #~ msgid "No subject" 183 | #~ msgstr "Sem assunto" 184 | 185 | #~ msgid "Email sender label" 186 | #~ msgstr "Rótulo de e-mail do remetente" 187 | 188 | #~ msgid "Your email address" 189 | #~ msgstr "Seu endereço de e-mail" 190 | 191 | #~ msgid "Subject label" 192 | #~ msgstr "Rótulo do assunto" 193 | 194 | #~ msgid "Message content label" 195 | #~ msgstr "Rótulo do conteúdo da mensagem" 196 | 197 | #~ msgid "Please enter the two words on the image separated by a space:" 198 | #~ msgstr "Introduza as duas palavras na imagem separada por um espaço" 199 | 200 | #~ msgid "You did not enter any of the words." 201 | #~ msgstr "Não introduziu nenhuma palavra " 202 | 203 | #~ msgid "You did not enter the two words shown in the image." 204 | #~ msgstr "Não introduziu as duas palavras da imagem" 205 | 206 | #~ msgid "The words you entered did not match the image." 207 | #~ msgstr "As palavras não coincidem com as da imagem" 208 | 209 | #~ msgid "Incorrect please try again" 210 | #~ msgstr "Incorrecto, por favor tente novamente" 211 | 212 | #~ msgid "Enter the words above:" 213 | #~ msgstr "Digita as palavras acima" 214 | 215 | #~ msgid "Enter the numbers you hear:" 216 | #~ msgstr "Digita os números que ouvires" 217 | 218 | #~ msgid "Get another CAPTCHA" 219 | #~ msgstr "Obter outro CAPTCHA" 220 | 221 | #~ msgid "Get an audio CAPTCHA" 222 | #~ msgstr "Obter um CAPTCHA de áudio" 223 | 224 | #~ msgid "Get an image CAPTCHA" 225 | #~ msgstr "Obter uma imagem CAPTCHA" 226 | 227 | #~ msgid "Help" 228 | #~ msgstr "Ajuda" 229 | -------------------------------------------------------------------------------- /cmsplugin_contact/locale/pt_BR/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/locale/pt_BR/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cmsplugin_contact/locale/pt_BR/LC_MESSAGES/django.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2011 2 | # This file is distributed under the same license as the PACKAGE package. 3 | # William Grzybowski 2011. 4 | # 5 | #, fuzzy 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: PACKAGE VERSION\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2018-07-01 19:56+0300\n" 11 | "PO-Revision-Date: 2011-05-15 11:54\n" 12 | "Last-Translator: \n" 13 | "Language-Team: LANGUAGE \n" 14 | "Language: \n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n > 1)\n" 19 | "X-Translated-Using: django-rosetta 0.6.1\n" 20 | 21 | #: cmsplugin_contact/admin.py:20 22 | msgid "Akismet API Key" 23 | msgstr "Chave API Akismet" 24 | 25 | #: cmsplugin_contact/admin.py:20 26 | msgid "Get a Wordpress Key from http://akismet.com/" 27 | msgstr "Obtenha um chave Wordpress em http://akismet.com/" 28 | 29 | #: cmsplugin_contact/admin.py:21 30 | msgid "ReCAPTCHA Public Key" 31 | msgstr "Chave Pública ReCAPTCHA" 32 | 33 | #: cmsplugin_contact/admin.py:21 cmsplugin_contact/admin.py:22 34 | msgid "Get this from http://www.google.com/recaptcha" 35 | msgstr "Obtenha em http://www.google.com/recaptcha" 36 | 37 | #: cmsplugin_contact/admin.py:22 38 | msgid "ReCAPTCHA Private Key" 39 | msgstr "Chave Privada ReCAPTCHA" 40 | 41 | #: cmsplugin_contact/admin.py:40 42 | msgid "" 43 | "Akismet library is not installed. Use \"easy_install akismet\" or \"pip " 44 | "install akismet\"." 45 | msgstr "" 46 | "Biblioteca Akismet não está instalada. Use \"easy_install akismet\" ou \"pip " 47 | "install akismet\"." 48 | 49 | #: cmsplugin_contact/admin.py:54 50 | msgid "The API Key is not valid." 51 | msgstr "A Chave da API não é válida." 52 | 53 | #: cmsplugin_contact/admin.py:62 54 | msgid "" 55 | "ReCAPTCHA library is not installed. Use \"easy_install recaptcha-client\" or " 56 | "\"pip install recaptcha-client\"." 57 | msgstr "" 58 | "Biblioteca ReCAPTCHA não está instalada. Use \"easy_install recaptcha-client" 59 | "\" or \"pip install recaptcha-client\"." 60 | 61 | #: cmsplugin_contact/cms_plugins.py:30 62 | #: cmsplugin_contact/templates/cmsplugin_contact/subject.txt:1 63 | msgid "Contact Form" 64 | msgstr "Formulário de Contato" 65 | 66 | #: cmsplugin_contact/cms_plugins.py:43 67 | msgid "Redirection" 68 | msgstr "" 69 | 70 | #: cmsplugin_contact/cms_plugins.py:46 71 | msgid "Spam Protection" 72 | msgstr "Proteção de Spam" 73 | 74 | #: cmsplugin_contact/forms.py:7 75 | msgid "Email" 76 | msgstr "" 77 | 78 | #: cmsplugin_contact/forms.py:8 79 | msgid "Subject" 80 | msgstr "Assunto" 81 | 82 | #: cmsplugin_contact/forms.py:9 83 | msgid "Content" 84 | msgstr "Conteúdo" 85 | 86 | #: cmsplugin_contact/models.py:17 87 | msgid "Light" 88 | msgstr "" 89 | 90 | #: cmsplugin_contact/models.py:18 91 | msgid "Dark" 92 | msgstr "" 93 | 94 | #: cmsplugin_contact/models.py:21 95 | msgid "Normal" 96 | msgstr "" 97 | 98 | #: cmsplugin_contact/models.py:22 99 | msgid "Compact" 100 | msgstr "" 101 | 102 | #: cmsplugin_contact/models.py:24 103 | msgid "Form name" 104 | msgstr "Nome do formulário" 105 | 106 | #: cmsplugin_contact/models.py:27 107 | msgid "Used to distinguish multiple contact forms on the same site." 108 | msgstr "Usado para distingüir múltiplos formulários de contato no mesmo site." 109 | 110 | #: cmsplugin_contact/models.py:28 111 | msgid "Form Layout" 112 | msgstr "Layout do Formulário" 113 | 114 | #: cmsplugin_contact/models.py:30 115 | #, fuzzy 116 | #| msgid "Choice the layout of contact form" 117 | msgid "Choose the layout of contact form" 118 | msgstr "Selecione o layout do formulário de contato" 119 | 120 | #: cmsplugin_contact/models.py:33 121 | msgid "Email recipient" 122 | msgstr "E-mail de destino" 123 | 124 | #: cmsplugin_contact/models.py:36 125 | msgid "Thanks message" 126 | msgstr "Mensagem de agradecimento" 127 | 128 | #: cmsplugin_contact/models.py:37 129 | msgid "Message displayed on successful submit" 130 | msgstr "Mensagem exibida em caso de sucesso" 131 | 132 | #: cmsplugin_contact/models.py:38 133 | msgid "Thank you for your message." 134 | msgstr "Obrigado for sua mensagem." 135 | 136 | #: cmsplugin_contact/models.py:39 137 | msgid "Submit button value" 138 | msgstr "Nome do botão de envio" 139 | 140 | #: cmsplugin_contact/models.py:40 141 | msgid "Submit" 142 | msgstr "Enviar" 143 | 144 | #: cmsplugin_contact/models.py:43 145 | msgid "Spam protection method" 146 | msgstr "Método de proteção de spam" 147 | 148 | #: cmsplugin_contact/models.py:53 149 | msgid "ReCAPTCHA theme" 150 | msgstr "Tema do ReCAPTCHA" 151 | 152 | #: cmsplugin_contact/models.py:57 153 | #, fuzzy 154 | #| msgid "ReCAPTCHA theme" 155 | msgid "ReCAPTCHA size" 156 | msgstr "Tema do ReCAPTCHA" 157 | 158 | #: cmsplugin_contact/models.py:59 159 | msgid "URL Redirection" 160 | msgstr "" 161 | 162 | #: cmsplugin_contact/models.py:60 163 | msgid "If it is set, the form redirect to url when the form is valid" 164 | msgstr "" 165 | 166 | #: cmsplugin_contact/nospam/fields.py:13 167 | msgid "Please don't check this box." 168 | msgstr "Por favor não selecione esta caixa." 169 | 170 | #: cmsplugin_contact/nospam/widgets.py:12 171 | msgid "Are you a robot?" 172 | msgstr "Você é um robô?" 173 | 174 | #: cmsplugin_contact/settings.py:7 175 | msgid "default" 176 | msgstr "" 177 | 178 | #: cmsplugin_contact/templates/cmsplugin_contact/email.txt:1 179 | #, fuzzy 180 | msgid "Message from" 181 | msgstr "Mensagem" 182 | 183 | #~ msgid "Please enter the two words on the image separated by a space:" 184 | #~ msgstr "" 185 | #~ "Por favor digite as duas palavras da imagem separadas por um espaço:" 186 | 187 | #~ msgid "You did not enter any of the words." 188 | #~ msgstr "Você não digitou com as palavras." 189 | 190 | #, fuzzy 191 | #~ msgid "An unexpected Error occurred, please try again." 192 | #~ msgstr "Incorreto, por favor tente novamente" 193 | 194 | #~ msgid "Please enter the two words shown in the image." 195 | #~ msgstr "Por favor digite as duas palavras mostradas na imagem." 196 | 197 | #~ msgid "The words you entered did not match the image. Please try again." 198 | #~ msgstr "" 199 | #~ "As palavras que você digitou não combinam com a imagem. Por favor tente " 200 | #~ "novamente." 201 | 202 | #~ msgid "Incorrect please try again" 203 | #~ msgstr "Incorreto, por favor tente novamente" 204 | 205 | #~ msgid "Enter the words above:" 206 | #~ msgstr "Digita as palavras acima:" 207 | 208 | #~ msgid "Enter the numbers you hear:" 209 | #~ msgstr "Digita os número que você ouvir:" 210 | 211 | #~ msgid "Get another CAPTCHA" 212 | #~ msgstr "Obter outro CAPTCHA" 213 | 214 | #~ msgid "Get an audio CAPTCHA" 215 | #~ msgstr "Obter um audio CAPTCHA" 216 | 217 | #~ msgid "Get an image CAPTCHA" 218 | #~ msgstr "Obter uma imagem CAPTCHA" 219 | 220 | #~ msgid "Help" 221 | #~ msgstr "Ajuda" 222 | 223 | #~ msgid "No subject" 224 | #~ msgstr "Sem assunto" 225 | 226 | #~ msgid "Email sender label" 227 | #~ msgstr "Rótulo de e-mail do remetente" 228 | 229 | #~ msgid "Your email address" 230 | #~ msgstr "Seu endereço de e-mail" 231 | 232 | #~ msgid "Subject label" 233 | #~ msgstr "Rótulo do assunto" 234 | 235 | #~ msgid "Message content label" 236 | #~ msgstr "Rótulo do conteúdo da mensagem" 237 | -------------------------------------------------------------------------------- /cmsplugin_contact/locale/ru/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/locale/ru/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cmsplugin_contact/locale/ru/LC_MESSAGES/django.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Sergey.Voronezhskiy , 2012. 5 | # Oleg Rybkin aka Fish , 2018 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: PACKAGE VERSION\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2019-02-27 00:47+0300\n" 11 | "PO-Revision-Date: 2012-03-20 13:56+0400\n" 12 | "Last-Translator: Oleg Rybkin aka Fish \n" 13 | "Language-Team: LANGUAGE \n" 14 | "Language: \n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1)\n" 19 | 20 | #: admin.py:20 21 | msgid "Akismet API Key" 22 | msgstr "Akismet API Ключ" 23 | 24 | #: admin.py:20 25 | msgid "Get a Wordpress Key from http://akismet.com/" 26 | msgstr "Создайте новый ключ на сайте http://akismet.com/" 27 | 28 | #: admin.py:21 29 | msgid "ReCAPTCHA Public Key" 30 | msgstr "ReCAPTCHA Публичный ключ" 31 | 32 | #: admin.py:21 admin.py:22 33 | msgid "Get this from http://www.google.com/recaptcha" 34 | msgstr "Создайте новый ключ на сайте http://www.google.com/recaptcha" 35 | 36 | #: admin.py:22 37 | msgid "ReCAPTCHA Private Key" 38 | msgstr "ReCAPTCHA Приватный ключ" 39 | 40 | #: admin.py:40 41 | msgid "" 42 | "Akismet library is not installed. Use \"easy_install akismet\" or \"pip " 43 | "install akismet\"." 44 | msgstr "" 45 | "Библиотека Akismet не установлена. Установите её с помощью \"easy_install " 46 | "akismet\" либо \"pip install akismet\"" 47 | 48 | #: admin.py:54 49 | msgid "The API Key is not valid." 50 | msgstr "Неверный API ключ" 51 | 52 | #: admin.py:62 53 | msgid "" 54 | "ReCAPTCHA library is not installed. Use \"easy_install recaptcha-client\" or " 55 | "\"pip install recaptcha-client\"." 56 | msgstr "" 57 | "Библиотека ReCAPTCHA не установлена. Установите её с помощью \"easy_install " 58 | "recaptcha-client\" либо \"pip install recaptcha-client\"" 59 | 60 | #: cms_plugins.py:30 templates/cmsplugin_contact/subject.txt:1 61 | msgid "Contact Form" 62 | msgstr "Форма обратной связи" 63 | 64 | #: cms_plugins.py:43 65 | msgid "Redirection" 66 | msgstr "Перенаправление" 67 | 68 | #: cms_plugins.py:46 69 | msgid "Spam Protection" 70 | msgstr "Защита от спама" 71 | 72 | #: forms.py:7 73 | msgid "Email" 74 | msgstr "Эл.почта" 75 | 76 | #: forms.py:8 77 | msgid "Subject" 78 | msgstr "Тема" 79 | 80 | #: forms.py:9 81 | msgid "Content" 82 | msgstr "Содержание" 83 | 84 | #: models.py:17 85 | msgid "Light" 86 | msgstr "Светлая" 87 | 88 | #: models.py:18 89 | msgid "Dark" 90 | msgstr "Темная" 91 | 92 | #: models.py:21 93 | msgid "Normal" 94 | msgstr "Обычная" 95 | 96 | #: models.py:22 97 | msgid "Compact" 98 | msgstr "Компактная" 99 | 100 | #: models.py:24 101 | msgid "Form name" 102 | msgstr "Название формы" 103 | 104 | #: models.py:27 105 | msgid "Used to distinguish multiple contact forms on the same site." 106 | msgstr "Используется, чтобы различать несколько форм на одном сайте" 107 | 108 | #: models.py:28 109 | msgid "Form Layout" 110 | msgstr "Вид формы" 111 | 112 | #: models.py:30 113 | msgid "Choose the layout of contact form" 114 | msgstr "Выберите макет контактной формы" 115 | 116 | #: models.py:33 117 | msgid "Email recipient" 118 | msgstr "E-mail адрес получателя" 119 | 120 | #: models.py:36 121 | msgid "Thanks message" 122 | msgstr "Благодарное сообщение" 123 | 124 | #: models.py:37 125 | msgid "Message displayed on successful submit" 126 | msgstr "Сообщение о успешной отправки" 127 | 128 | #: models.py:38 129 | msgid "Thank you for your message." 130 | msgstr "Спасибо за Ваше сообщение." 131 | 132 | #: models.py:39 133 | msgid "Submit button value" 134 | msgstr "Надпись на кнопке отправить" 135 | 136 | #: models.py:40 137 | msgid "Submit" 138 | msgstr "Отправить" 139 | 140 | #: models.py:43 141 | msgid "Spam protection method" 142 | msgstr "Метод защиты от спама" 143 | 144 | #: models.py:53 145 | msgid "ReCAPTCHA theme" 146 | msgstr "ReCAPTCHA тема" 147 | 148 | #: models.py:57 149 | msgid "ReCAPTCHA size" 150 | msgstr "Размер ReCAPTCHA" 151 | 152 | #: models.py:59 153 | msgid "URL Redirection" 154 | msgstr "Перенаправление на URL" 155 | 156 | #: models.py:60 157 | msgid "If it is set, the form redirect to url when the form is valid" 158 | msgstr "Если установлено, пользователь будет перенаправлен на этот адрес" 159 | 160 | #: nospam/fields.py:13 161 | msgid "Please don't check this box." 162 | msgstr "Пожалуйста не устанавливайте этот чекбокс" 163 | 164 | #: nospam/widgets.py:12 165 | msgid "Are you a robot?" 166 | msgstr "Вы робот?" 167 | 168 | #: settings.py:7 169 | msgid "default" 170 | msgstr "по умолчанию" 171 | 172 | #: templates/cmsplugin_contact/email.txt:1 173 | msgid "Message from" 174 | msgstr "Сообщение от" 175 | 176 | #~ msgid "No subject" 177 | #~ msgstr "Без темы" 178 | 179 | #~ msgid "Email sender label" 180 | #~ msgstr "Надпись для поля email" 181 | 182 | #~ msgid "Your email address" 183 | #~ msgstr "Ваш E-mail адрес" 184 | 185 | #~ msgid "Subject label" 186 | #~ msgstr "Надпись для поля subject" 187 | 188 | #~ msgid "Message content label" 189 | #~ msgstr "Надпись для поля content" 190 | 191 | #~ msgid "Please enter the two words on the image separated by a space:" 192 | #~ msgstr "Пожалуйста введите два слова на картинке разделенные пробелом:" 193 | 194 | #~ msgid "You did not enter any of the words." 195 | #~ msgstr "Вы не ввели никаких слов." 196 | 197 | #~ msgid "You did not enter the two words shown in the image." 198 | #~ msgstr "Вы не ввели двух слва указанных на картинке" 199 | 200 | #~ msgid "The words you entered did not match the image" 201 | #~ msgstr "Слова введенные вами не совпадают с указанными на картинке" 202 | 203 | #~ msgid "Incorrect please try again" 204 | #~ msgstr "Неверно, пожалуста попробуйте снова" 205 | 206 | #~ msgid "Enter the words above:" 207 | #~ msgstr "Введите слова указанные выше:" 208 | 209 | #~ msgid "Enter the numbers you hear:" 210 | #~ msgstr "Введите числа которые вы услышали:" 211 | 212 | #~ msgid "Get another CAPTCHA" 213 | #~ msgstr "Поменять CAPTCHA на другую" 214 | 215 | #~ msgid "Get an audio CAPTCHA" 216 | #~ msgstr "Прослушать звуковую CAPTCHA" 217 | 218 | #~ msgid "Get an image CAPTCHA" 219 | #~ msgstr "Вывести изображение с CAPTCHA" 220 | 221 | #~ msgid "Help" 222 | #~ msgstr "Помощь" 223 | -------------------------------------------------------------------------------- /cmsplugin_contact/locale/sl/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/locale/sl/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cmsplugin_contact/locale/sl/LC_MESSAGES/django.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: PACKAGE VERSION\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2018-07-01 19:56+0300\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | 20 | #: cmsplugin_contact/admin.py:20 21 | msgid "Akismet API Key" 22 | msgstr "" 23 | 24 | #: cmsplugin_contact/admin.py:20 25 | msgid "Get a Wordpress Key from http://akismet.com/" 26 | msgstr "" 27 | 28 | #: cmsplugin_contact/admin.py:21 29 | msgid "ReCAPTCHA Public Key" 30 | msgstr "" 31 | 32 | #: cmsplugin_contact/admin.py:21 cmsplugin_contact/admin.py:22 33 | msgid "Get this from http://www.google.com/recaptcha" 34 | msgstr "" 35 | 36 | #: cmsplugin_contact/admin.py:22 37 | msgid "ReCAPTCHA Private Key" 38 | msgstr "" 39 | 40 | #: cmsplugin_contact/admin.py:40 41 | msgid "" 42 | "Akismet library is not installed. Use \"easy_install akismet\" or \"pip " 43 | "install akismet\"." 44 | msgstr "" 45 | 46 | #: cmsplugin_contact/admin.py:54 47 | msgid "The API Key is not valid." 48 | msgstr "" 49 | 50 | #: cmsplugin_contact/admin.py:62 51 | msgid "" 52 | "ReCAPTCHA library is not installed. Use \"easy_install recaptcha-client\" or " 53 | "\"pip install recaptcha-client\"." 54 | msgstr "" 55 | 56 | #: cmsplugin_contact/cms_plugins.py:30 57 | #: cmsplugin_contact/templates/cmsplugin_contact/subject.txt:1 58 | msgid "Contact Form" 59 | msgstr "" 60 | 61 | #: cmsplugin_contact/cms_plugins.py:43 62 | msgid "Redirection" 63 | msgstr "" 64 | 65 | #: cmsplugin_contact/cms_plugins.py:46 66 | msgid "Spam Protection" 67 | msgstr "" 68 | 69 | #: cmsplugin_contact/forms.py:7 70 | msgid "Email" 71 | msgstr "" 72 | 73 | #: cmsplugin_contact/forms.py:8 74 | msgid "Subject" 75 | msgstr "Zadeva" 76 | 77 | #: cmsplugin_contact/forms.py:9 78 | msgid "Content" 79 | msgstr "" 80 | 81 | #: cmsplugin_contact/models.py:17 82 | msgid "Light" 83 | msgstr "" 84 | 85 | #: cmsplugin_contact/models.py:18 86 | msgid "Dark" 87 | msgstr "" 88 | 89 | #: cmsplugin_contact/models.py:21 90 | msgid "Normal" 91 | msgstr "" 92 | 93 | #: cmsplugin_contact/models.py:22 94 | msgid "Compact" 95 | msgstr "" 96 | 97 | #: cmsplugin_contact/models.py:24 98 | msgid "Form name" 99 | msgstr "" 100 | 101 | #: cmsplugin_contact/models.py:27 102 | msgid "Used to distinguish multiple contact forms on the same site." 103 | msgstr "" 104 | 105 | #: cmsplugin_contact/models.py:28 106 | msgid "Form Layout" 107 | msgstr "" 108 | 109 | #: cmsplugin_contact/models.py:30 110 | msgid "Choose the layout of contact form" 111 | msgstr "" 112 | 113 | #: cmsplugin_contact/models.py:33 114 | msgid "Email recipient" 115 | msgstr "" 116 | 117 | #: cmsplugin_contact/models.py:36 118 | msgid "Thanks message" 119 | msgstr "" 120 | 121 | #: cmsplugin_contact/models.py:37 122 | msgid "Message displayed on successful submit" 123 | msgstr "" 124 | 125 | #: cmsplugin_contact/models.py:38 126 | msgid "Thank you for your message." 127 | msgstr "Hvala za tvoje sporočilo." 128 | 129 | #: cmsplugin_contact/models.py:39 130 | msgid "Submit button value" 131 | msgstr "" 132 | 133 | #: cmsplugin_contact/models.py:40 134 | msgid "Submit" 135 | msgstr "Pošlji" 136 | 137 | #: cmsplugin_contact/models.py:43 138 | msgid "Spam protection method" 139 | msgstr "" 140 | 141 | #: cmsplugin_contact/models.py:53 142 | msgid "ReCAPTCHA theme" 143 | msgstr "" 144 | 145 | #: cmsplugin_contact/models.py:57 146 | msgid "ReCAPTCHA size" 147 | msgstr "" 148 | 149 | #: cmsplugin_contact/models.py:59 150 | msgid "URL Redirection" 151 | msgstr "" 152 | 153 | #: cmsplugin_contact/models.py:60 154 | msgid "If it is set, the form redirect to url when the form is valid" 155 | msgstr "" 156 | 157 | #: cmsplugin_contact/nospam/fields.py:13 158 | msgid "Please don't check this box." 159 | msgstr "Ne označi tega polja." 160 | 161 | #: cmsplugin_contact/nospam/widgets.py:12 162 | msgid "Are you a robot?" 163 | msgstr "Si robot?" 164 | 165 | #: cmsplugin_contact/settings.py:7 166 | msgid "default" 167 | msgstr "" 168 | 169 | #: cmsplugin_contact/templates/cmsplugin_contact/email.txt:1 170 | #, fuzzy 171 | #| msgid "Message" 172 | msgid "Message from" 173 | msgstr "Sporočilo" 174 | 175 | #~ msgid "Your email address" 176 | #~ msgstr "Naslov tvoje elektronske pošte" 177 | 178 | #~ msgid "Please enter the two words on the image separated by a space:" 179 | #~ msgstr "Prepiši besedi prikazani na sliki, loči ju s presledkom:" 180 | 181 | #~ msgid "You did not enter any of the words." 182 | #~ msgstr "Nisi prepisal/a dveh besed prikazanih na sliki." 183 | 184 | #~ msgid "You did not enter the two words shown in the image." 185 | #~ msgstr "Nisi prepisal/a dveh besed prikazanih na sliki." 186 | 187 | #~ msgid "The words you entered did not match the image." 188 | #~ msgstr "Prepisani besedi se nista ujemali s sliko." 189 | 190 | #~ msgid "Incorrect please try again" 191 | #~ msgstr "Nepravilno. Poskusi znova." 192 | 193 | #~ msgid "Enter the words above:" 194 | #~ msgstr "Prepiši besedi odzgoraj:" 195 | 196 | #~ msgid "Enter the numbers you hear:" 197 | #~ msgstr "Vnesi števila, ki jih slišiš:" 198 | 199 | #~ msgid "Get another CAPTCHA" 200 | #~ msgstr "Ponudi drugo CAPTCHA" 201 | 202 | #~ msgid "Get an audio CAPTCHA" 203 | #~ msgstr "Ponudi zvočno CAPTCHA" 204 | 205 | #~ msgid "Get an image CAPTCHA" 206 | #~ msgstr "Ponudi slikovno CAPTCHA" 207 | 208 | #~ msgid "Help" 209 | #~ msgstr "Pomoč" 210 | -------------------------------------------------------------------------------- /cmsplugin_contact/middleware.py: -------------------------------------------------------------------------------- 1 | 2 | class ForceResponseMiddleware: 3 | 4 | def process_response(self, request, response): 5 | if getattr(request, 'django_cms_contact_redirect_to', None) : 6 | return request.django_cms_contact_redirect_to 7 | return response 8 | -------------------------------------------------------------------------------- /cmsplugin_contact/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | import datetime 3 | from south.db import db 4 | from south.v2 import SchemaMigration 5 | from django.db import models 6 | 7 | class Migration(SchemaMigration): 8 | 9 | def forwards(self, orm): 10 | 11 | # Adding model 'Contact' 12 | db.create_table('cmsplugin_contact', ( 13 | ('cmsplugin_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['cms.CMSPlugin'], unique=True, primary_key=True)), 14 | ('site_email', self.gf('django.db.models.fields.EmailField')(max_length=75)), 15 | ('email_label', self.gf('django.db.models.fields.CharField')(default=u'Your email address', max_length=100)), 16 | ('subject_label', self.gf('django.db.models.fields.CharField')(default=u'Subject', max_length=200)), 17 | ('content_label', self.gf('django.db.models.fields.CharField')(default=u'Message', max_length=100)), 18 | ('thanks', self.gf('django.db.models.fields.CharField')(default=u'Thank you for your message.', max_length=200)), 19 | ('submit', self.gf('django.db.models.fields.CharField')(default=u'Submit', max_length=30)), 20 | ('spam_protection_method', self.gf('django.db.models.fields.SmallIntegerField')(default=0)), 21 | ('akismet_api_key', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), 22 | ('recaptcha_public_key', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), 23 | ('recaptcha_private_key', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)), 24 | ('recaptcha_theme', self.gf('django.db.models.fields.CharField')(default='clean', max_length=20)), 25 | )) 26 | db.send_create_signal('cmsplugin_contact', ['Contact']) 27 | 28 | 29 | def backwards(self, orm): 30 | 31 | # Deleting model 'Contact' 32 | db.delete_table('cmsplugin_contact') 33 | 34 | 35 | models = { 36 | 'cms.cmsplugin': { 37 | 'Meta': {'object_name': 'CMSPlugin'}, 38 | 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), 39 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 40 | 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), 41 | 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 42 | 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 43 | 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), 44 | 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), 45 | 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), 46 | 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), 47 | 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 48 | 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) 49 | }, 50 | 'cms.placeholder': { 51 | 'Meta': {'object_name': 'Placeholder'}, 52 | 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), 53 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 54 | 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 55 | }, 56 | 'cmsplugin_contact.contact': { 57 | 'Meta': {'object_name': 'Contact', 'db_table': "'cmsplugin_contact'", '_ormbases': ['cms.CMSPlugin']}, 58 | 'akismet_api_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 59 | 'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), 60 | 'content_label': ('django.db.models.fields.CharField', [], {'default': "u'Message'", 'max_length': '100'}), 61 | 'email_label': ('django.db.models.fields.CharField', [], {'default': "u'Your email address'", 'max_length': '100'}), 62 | 'recaptcha_private_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 63 | 'recaptcha_public_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 64 | 'recaptcha_theme': ('django.db.models.fields.CharField', [], {'default': "'clean'", 'max_length': '20'}), 65 | 'site_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), 66 | 'spam_protection_method': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), 67 | 'subject_label': ('django.db.models.fields.CharField', [], {'default': "u'Subject'", 'max_length': '200'}), 68 | 'submit': ('django.db.models.fields.CharField', [], {'default': "u'Submit'", 'max_length': '30'}), 69 | 'thanks': ('django.db.models.fields.CharField', [], {'default': "u'Thank you for your message.'", 'max_length': '200'}) 70 | } 71 | } 72 | 73 | complete_apps = ['cmsplugin_contact'] 74 | -------------------------------------------------------------------------------- /cmsplugin_contact/migrations/0002_auto__chg_field_contact_thanks.py: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | import datetime 3 | from south.db import db 4 | from south.v2 import SchemaMigration 5 | from django.db import models 6 | 7 | class Migration(SchemaMigration): 8 | 9 | def forwards(self, orm): 10 | 11 | # Changing field 'Contact.thanks' 12 | db.alter_column('cmsplugin_contact', 'thanks', self.gf('django.db.models.fields.TextField')(max_length=200)) 13 | 14 | 15 | def backwards(self, orm): 16 | 17 | # Changing field 'Contact.thanks' 18 | db.alter_column('cmsplugin_contact', 'thanks', self.gf('django.db.models.fields.CharField')(max_length=200)) 19 | 20 | 21 | models = { 22 | 'cms.cmsplugin': { 23 | 'Meta': {'object_name': 'CMSPlugin'}, 24 | 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), 25 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 26 | 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), 27 | 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 28 | 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 29 | 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), 30 | 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), 31 | 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), 32 | 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), 33 | 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 34 | 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) 35 | }, 36 | 'cms.placeholder': { 37 | 'Meta': {'object_name': 'Placeholder'}, 38 | 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), 39 | 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 40 | 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 41 | }, 42 | 'cmsplugin_contact.contact': { 43 | 'Meta': {'object_name': 'Contact', 'db_table': "'cmsplugin_contact'", '_ormbases': ['cms.CMSPlugin']}, 44 | 'akismet_api_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 45 | 'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), 46 | 'content_label': ('django.db.models.fields.CharField', [], {'default': "u'Message'", 'max_length': '100'}), 47 | 'email_label': ('django.db.models.fields.CharField', [], {'default': "u'Your email address'", 'max_length': '100'}), 48 | 'recaptcha_private_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 49 | 'recaptcha_public_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 50 | 'recaptcha_theme': ('django.db.models.fields.CharField', [], {'default': "'clean'", 'max_length': '20'}), 51 | 'site_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), 52 | 'spam_protection_method': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), 53 | 'subject_label': ('django.db.models.fields.CharField', [], {'default': "u'Subject'", 'max_length': '200'}), 54 | 'submit': ('django.db.models.fields.CharField', [], {'default': "u'Submit'", 'max_length': '30'}), 55 | 'thanks': ('django.db.models.fields.TextField', [], {'default': "u'Thank you for your message.'", 'max_length': '200'}) 56 | } 57 | } 58 | 59 | complete_apps = ['cmsplugin_contact'] 60 | -------------------------------------------------------------------------------- /cmsplugin_contact/migrations/0003_auto__add_field_contact_form_name.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import datetime 3 | from south.db import db 4 | from south.v2 import SchemaMigration 5 | from django.db import models 6 | 7 | 8 | class Migration(SchemaMigration): 9 | 10 | def forwards(self, orm): 11 | # Adding field 'Contact.form_name' 12 | db.add_column(u'cmsplugin_contact', 'form_name', 13 | self.gf('django.db.models.fields.CharField')(default='', max_length=60, blank=True), 14 | keep_default=False) 15 | 16 | 17 | def backwards(self, orm): 18 | # Deleting field 'Contact.form_name' 19 | db.delete_column(u'cmsplugin_contact', 'form_name') 20 | 21 | 22 | models = { 23 | 'cms.cmsplugin': { 24 | 'Meta': {'object_name': 'CMSPlugin'}, 25 | 'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), 26 | 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), 27 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 28 | 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), 29 | 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 30 | 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 31 | 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), 32 | 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), 33 | 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), 34 | 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), 35 | 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 36 | 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) 37 | }, 38 | 'cms.placeholder': { 39 | 'Meta': {'object_name': 'Placeholder'}, 40 | 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), 41 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 42 | 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 43 | }, 44 | u'cmsplugin_contact.contact': { 45 | 'Meta': {'object_name': 'Contact', 'db_table': "u'cmsplugin_contact'"}, 46 | 'akismet_api_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 47 | u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), 48 | 'content_label': ('django.db.models.fields.CharField', [], {'default': "u'Message'", 'max_length': '100'}), 49 | 'email_label': ('django.db.models.fields.CharField', [], {'default': "u'Your email address'", 'max_length': '100'}), 50 | 'form_name': ('django.db.models.fields.CharField', [], {'max_length': '60', 'blank': 'True'}), 51 | 'recaptcha_private_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 52 | 'recaptcha_public_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 53 | 'recaptcha_theme': ('django.db.models.fields.CharField', [], {'default': "'clean'", 'max_length': '20'}), 54 | 'site_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), 55 | 'spam_protection_method': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), 56 | 'subject_label': ('django.db.models.fields.CharField', [], {'default': "u'Subject'", 'max_length': '200'}), 57 | 'submit': ('django.db.models.fields.CharField', [], {'default': "u'Submit'", 'max_length': '30'}), 58 | 'thanks': ('django.db.models.fields.TextField', [], {'default': "u'Thank you for your message.'", 'max_length': '200'}) 59 | } 60 | } 61 | 62 | complete_apps = ['cmsplugin_contact'] -------------------------------------------------------------------------------- /cmsplugin_contact/migrations/0004_add_field_Contact_form_layout.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import datetime 3 | from south.db import db 4 | from south.v2 import SchemaMigration 5 | from django.db import models 6 | 7 | 8 | class Migration(SchemaMigration): 9 | 10 | def forwards(self, orm): 11 | # Adding field 'Contact.form_layout' 12 | db.add_column(u'cmsplugin_contact', 'form_layout', 13 | self.gf('django.db.models.fields.CharField')(default='cmsplugin_contact.forms.ContactForm', max_length=255), 14 | keep_default=False) 15 | 16 | 17 | def backwards(self, orm): 18 | # Deleting field 'Contact.form_layout' 19 | db.delete_column(u'cmsplugin_contact', 'form_layout') 20 | 21 | 22 | models = { 23 | 'cms.cmsplugin': { 24 | 'Meta': {'object_name': 'CMSPlugin'}, 25 | 'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), 26 | 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), 27 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 28 | 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), 29 | 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 30 | 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 31 | 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), 32 | 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), 33 | 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), 34 | 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), 35 | 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 36 | 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) 37 | }, 38 | 'cms.placeholder': { 39 | 'Meta': {'object_name': 'Placeholder'}, 40 | 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), 41 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 42 | 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 43 | }, 44 | u'cmsplugin_contact.contact': { 45 | 'Meta': {'object_name': 'Contact', 'db_table': "u'cmsplugin_contact'"}, 46 | 'akismet_api_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 47 | u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), 48 | 'content_label': ('django.db.models.fields.CharField', [], {'default': "u'Message'", 'max_length': '100'}), 49 | 'email_label': ('django.db.models.fields.CharField', [], {'default': "u'Your email address'", 'max_length': '100'}), 50 | 'form_layout': ('django.db.models.fields.CharField', [], {'max_length': '255'}), 51 | 'form_name': ('django.db.models.fields.CharField', [], {'max_length': '60', 'blank': 'True'}), 52 | 'recaptcha_private_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 53 | 'recaptcha_public_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 54 | 'recaptcha_theme': ('django.db.models.fields.CharField', [], {'default': "'clean'", 'max_length': '20'}), 55 | 'site_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), 56 | 'spam_protection_method': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), 57 | 'subject_label': ('django.db.models.fields.CharField', [], {'default': "u'Subject'", 'max_length': '200'}), 58 | 'submit': ('django.db.models.fields.CharField', [], {'default': "u'Submit'", 'max_length': '30'}), 59 | 'thanks': ('django.db.models.fields.TextField', [], {'default': "u'Thank you for your message.'", 'max_length': '200'}) 60 | } 61 | } 62 | 63 | complete_apps = ['cmsplugin_contact'] -------------------------------------------------------------------------------- /cmsplugin_contact/migrations/0005_auto__del_field_contact_content_label__del_field_contact_subject_label.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import datetime 3 | from south.db import db 4 | from south.v2 import SchemaMigration 5 | from django.db import models 6 | 7 | 8 | class Migration(SchemaMigration): 9 | 10 | def forwards(self, orm): 11 | # Deleting field 'Contact.content_label' 12 | db.delete_column(u'cmsplugin_contact', 'content_label') 13 | 14 | # Deleting field 'Contact.subject_label' 15 | db.delete_column(u'cmsplugin_contact', 'subject_label') 16 | 17 | # Deleting field 'Contact.email_label' 18 | db.delete_column(u'cmsplugin_contact', 'email_label') 19 | 20 | 21 | def backwards(self, orm): 22 | # Adding field 'Contact.content_label' 23 | db.add_column(u'cmsplugin_contact', 'content_label', 24 | self.gf('django.db.models.fields.CharField')(default=u'Message', max_length=100), 25 | keep_default=False) 26 | 27 | # Adding field 'Contact.subject_label' 28 | db.add_column(u'cmsplugin_contact', 'subject_label', 29 | self.gf('django.db.models.fields.CharField')(default=u'Subject', max_length=200), 30 | keep_default=False) 31 | 32 | # Adding field 'Contact.email_label' 33 | db.add_column(u'cmsplugin_contact', 'email_label', 34 | self.gf('django.db.models.fields.CharField')(default=u'Your email address', max_length=100), 35 | keep_default=False) 36 | 37 | 38 | models = { 39 | 'cms.cmsplugin': { 40 | 'Meta': {'object_name': 'CMSPlugin'}, 41 | 'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), 42 | 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), 43 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 44 | 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), 45 | 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 46 | 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 47 | 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), 48 | 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), 49 | 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), 50 | 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), 51 | 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 52 | 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) 53 | }, 54 | 'cms.placeholder': { 55 | 'Meta': {'object_name': 'Placeholder'}, 56 | 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), 57 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 58 | 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 59 | }, 60 | u'cmsplugin_contact.contact': { 61 | 'Meta': {'object_name': 'Contact', 'db_table': "u'cmsplugin_contact'"}, 62 | 'akismet_api_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 63 | u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), 64 | 'form_layout': ('django.db.models.fields.CharField', [], {'max_length': '255'}), 65 | 'form_name': ('django.db.models.fields.CharField', [], {'max_length': '60', 'blank': 'True'}), 66 | 'recaptcha_private_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 67 | 'recaptcha_public_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 68 | 'recaptcha_theme': ('django.db.models.fields.CharField', [], {'default': "'clean'", 'max_length': '20'}), 69 | 'site_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), 70 | 'spam_protection_method': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), 71 | 'submit': ('django.db.models.fields.CharField', [], {'default': "u'Submit'", 'max_length': '30'}), 72 | 'thanks': ('django.db.models.fields.TextField', [], {'default': "u'Thank you for your message.'", 'max_length': '200'}) 73 | } 74 | } 75 | 76 | complete_apps = ['cmsplugin_contact'] -------------------------------------------------------------------------------- /cmsplugin_contact/migrations/0006_fix_table_names.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from south.utils import datetime_utils as datetime 3 | from south.db import db 4 | from south.v2 import SchemaMigration 5 | from django.db import models 6 | 7 | 8 | class Migration(SchemaMigration): 9 | 10 | def forwards(self, orm): 11 | db.rename_table('cmsplugin_contact', 'cmsplugin_contact_contact') 12 | 13 | def backwards(self, orm): 14 | db.rename_table('cmsplugin_contact_contact', 'cmsplugin_contact') 15 | 16 | models = { 17 | 'cms.cmsplugin': { 18 | 'Meta': {'object_name': 'CMSPlugin'}, 19 | 'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), 20 | 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), 21 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 22 | 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), 23 | 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 24 | 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 25 | 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), 26 | 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), 27 | 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), 28 | 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), 29 | 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 30 | 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) 31 | }, 32 | 'cms.placeholder': { 33 | 'Meta': {'object_name': 'Placeholder'}, 34 | 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), 35 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 36 | 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 37 | }, 38 | u'cmsplugin_contact.contact': { 39 | 'Meta': {'object_name': 'Contact'}, 40 | 'akismet_api_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 41 | u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), 42 | 'form_layout': ('django.db.models.fields.CharField', [], {'max_length': '255'}), 43 | 'form_name': ('django.db.models.fields.CharField', [], {'max_length': '60', 'blank': 'True'}), 44 | 'recaptcha_private_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 45 | 'recaptcha_public_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 46 | 'recaptcha_theme': ('django.db.models.fields.CharField', [], {'default': "'clean'", 'max_length': '20'}), 47 | 'site_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), 48 | 'spam_protection_method': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), 49 | 'submit': ('django.db.models.fields.CharField', [], {'default': "u'Submit'", 'max_length': '30'}), 50 | 'thanks': ('django.db.models.fields.TextField', [], {'default': "u'Thank you for your message.'", 'max_length': '200'}) 51 | } 52 | } 53 | 54 | complete_apps = ['cmsplugin_contact'] 55 | 56 | -------------------------------------------------------------------------------- /cmsplugin_contact/migrations/0007_add_url_field.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from south.utils import datetime_utils as datetime 3 | from south.db import db 4 | from south.v2 import SchemaMigration 5 | from django.db import models 6 | 7 | 8 | class Migration(SchemaMigration): 9 | 10 | def forwards(self, orm): 11 | db.add_column(u'cmsplugin_contact_contact', 'redirect_url', 12 | self.gf('django.db.models.fields.URLField')(blank=True, default=''), 13 | keep_default=False) 14 | 15 | def backwards(self, orm): 16 | db.delete_column(u'cmsplugin_contact_contact', 'redirect_url') 17 | 18 | models = { 19 | 'cms.cmsplugin': { 20 | 'Meta': {'object_name': 'CMSPlugin'}, 21 | 'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), 22 | 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), 23 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 24 | 'language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}), 25 | 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 26 | 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 27 | 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}), 28 | 'placeholder': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Placeholder']", 'null': 'True'}), 29 | 'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}), 30 | 'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}), 31 | 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), 32 | 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) 33 | }, 34 | 'cms.placeholder': { 35 | 'Meta': {'object_name': 'Placeholder'}, 36 | 'default_width': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True'}), 37 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 38 | 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 39 | }, 40 | u'cmsplugin_contact.contact': { 41 | 'Meta': {'object_name': 'Contact'}, 42 | 'akismet_api_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 43 | u'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}), 44 | 'form_layout': ('django.db.models.fields.CharField', [], {'max_length': '255'}), 45 | 'form_name': ('django.db.models.fields.CharField', [], {'max_length': '60', 'blank': 'True'}), 46 | 'recaptcha_private_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 47 | 'recaptcha_public_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 48 | 'recaptcha_theme': ('django.db.models.fields.CharField', [], {'default': "'clean'", 'max_length': '20'}), 49 | 'site_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}), 50 | 'spam_protection_method': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}), 51 | 'submit': ('django.db.models.fields.CharField', [], {'default': "u'Submit'", 'max_length': '30'}), 52 | 'thanks': ('django.db.models.fields.TextField', [], {'default': "u'Thank you for your message.'", 'max_length': '200'}), 53 | 'redirect_url': ('django.db.models.fields.URLField', [], {'blank': 'True'}) 54 | } 55 | } 56 | 57 | complete_apps = ['cmsplugin_contact'] 58 | 59 | -------------------------------------------------------------------------------- /cmsplugin_contact/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/migrations/__init__.py -------------------------------------------------------------------------------- /cmsplugin_contact/migrations_django/0001_initial.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import models, migrations 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cms', '0003_auto_20140926_2347'), 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name='Contact', 16 | fields=[ 17 | ('cmsplugin_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='cms.CMSPlugin')), 18 | ('form_name', models.CharField(help_text='Used to distinguish multiple contact forms on the same site.', max_length=60, verbose_name='Form name', blank=True)), 19 | ('form_layout', models.CharField(help_text='Choice the layout of contact form', max_length=255, verbose_name='Form Layout', choices=[(b'cmsplugin_contact.forms.ContactForm', b'Default')])), 20 | ('site_email', models.EmailField(max_length=75, verbose_name='Email recipient')), 21 | ('thanks', models.TextField(default='Thank you for your message.', help_text='Message displayed on successful submit', max_length=200, verbose_name='Thanks message')), 22 | ('submit', models.CharField(default='Submit', max_length=30, verbose_name='Submit button value')), 23 | ('spam_protection_method', models.SmallIntegerField(default=0, verbose_name='Spam protection method', choices=[(0, b'Honeypot'), (1, b'Akismet'), (2, b'ReCAPTCHA')])), 24 | ('akismet_api_key', models.CharField(max_length=255, blank=True)), 25 | ('recaptcha_public_key', models.CharField(max_length=255, blank=True)), 26 | ('recaptcha_private_key', models.CharField(max_length=255, blank=True)), 27 | ('recaptcha_theme', models.CharField(default=b'clean', max_length=20, verbose_name='ReCAPTCHA theme', choices=[(b'clean', b'Clean'), (b'red', b'Red'), (b'white', b'White'), (b'blackglass', b'Black Glass'), (b'custom', b'Custom')])), 28 | ('redirect_url', models.URLField(help_text='If it is set, the form redirect to url when the form is valid', verbose_name='URL Redirection', blank=True)), 29 | ], 30 | options={ 31 | 'abstract': False, 32 | }, 33 | bases=('cms.cmsplugin',), 34 | ), 35 | ] 36 | -------------------------------------------------------------------------------- /cmsplugin_contact/migrations_django/0002_auto_20160810_1130.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cmsplugin_contact', '0001_initial'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='contact', 16 | name='form_layout', 17 | field=models.CharField(help_text='Choice the layout of contact form', max_length=255, verbose_name='Form Layout', choices=[(b'dashcare_website.contact_form.forms.CustomContactForm', b'Custom')]), 18 | ), 19 | migrations.AlterField( 20 | model_name='contact', 21 | name='site_email', 22 | field=models.EmailField(max_length=254, verbose_name='Email recipient'), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /cmsplugin_contact/migrations_django/0003_auto_20161107_1614.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.9 on 2016-11-07 15:14 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | import django.db.models.deletion 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | dependencies = [ 12 | ('cmsplugin_contact', '0002_auto_20160810_1130'), 13 | ] 14 | 15 | operations = [ 16 | migrations.AlterField( 17 | model_name='contact', 18 | name='cmsplugin_ptr', 19 | field=models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='cmsplugin_contact_contact', serialize=False, to='cms.CMSPlugin'), 20 | ), 21 | migrations.AlterField( 22 | model_name='contact', 23 | name='form_layout', 24 | field=models.CharField(choices=[(b'cmsplugin_contact.forms.ContactForm', 'default')], help_text='Choice the layout of contact form', max_length=255, verbose_name='Form Layout'), 25 | ), 26 | ] 27 | -------------------------------------------------------------------------------- /cmsplugin_contact/migrations_django/0004_auto_20180630_0050.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.11.13 on 2018-06-29 21:50 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('cmsplugin_contact', '0003_auto_20161107_1614'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RenameField( 16 | model_name='contact', 17 | old_name='submit', 18 | new_name='submit_text', 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /cmsplugin_contact/migrations_django/0005_auto_20180701_1611.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.11.13 on 2018-07-01 13:11 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('cmsplugin_contact', '0004_auto_20180630_0050'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='contact', 17 | name='recaptcha_size', 18 | field=models.CharField(choices=[(b'normal', 'Normal'), (b'compact', 'Compact')], default=b'normal', max_length=20, verbose_name='ReCAPTCHA size'), 19 | ), 20 | migrations.AlterField( 21 | model_name='contact', 22 | name='form_layout', 23 | field=models.CharField(choices=[(b'cmsplugin_contact.forms.ContactForm', 'default')], help_text='Choose the layout of contact form', max_length=255, verbose_name='Form Layout'), 24 | ), 25 | migrations.AlterField( 26 | model_name='contact', 27 | name='recaptcha_theme', 28 | field=models.CharField(choices=[(b'light', 'Light'), (b'dark', 'Dark')], default=b'light', max_length=20, verbose_name='ReCAPTCHA theme'), 29 | ), 30 | ] 31 | -------------------------------------------------------------------------------- /cmsplugin_contact/migrations_django/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/cmsplugin_contact/migrations_django/__init__.py -------------------------------------------------------------------------------- /cmsplugin_contact/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.utils.translation import ugettext_lazy as _ 3 | from cms.models import CMSPlugin 4 | 5 | # Feel free to extend this class instead of Contact. 6 | from cmsplugin_contact import settings 7 | 8 | 9 | class BaseContact(CMSPlugin): 10 | SPAM_PROTECTION_CHOICES = ( 11 | (0, 'Honeypot'), 12 | (1, 'Akismet'), 13 | (2, 'ReCAPTCHA'), 14 | ) 15 | 16 | THEME_CHOICES = ( 17 | ('light', _('Light')), 18 | ('dark', _('Dark')), 19 | ) 20 | SIZE_CHOICES = ( 21 | ('normal', _('Normal')), 22 | ('compact', _('Compact')), 23 | ) 24 | form_name = models.CharField(_('Form name'), 25 | blank=True, 26 | max_length=60, 27 | help_text=_('Used to distinguish multiple contact forms on the same site.')) 28 | form_layout = models.CharField(_('Form Layout'), 29 | max_length=255, 30 | help_text=_('Choose the layout of contact form'), 31 | choices=settings.CMSPLUGIN_CONTACT_FORMS 32 | ) 33 | site_email = models.EmailField(_('Email recipient')) 34 | 35 | thanks = models.TextField( 36 | verbose_name=_("Thanks message"), 37 | help_text=_('Message displayed on successful submit'), 38 | default=_('Thank you for your message.'), max_length=200) 39 | submit_text = models.CharField(_('Submit button value'), 40 | default=_('Submit'), max_length=30) 41 | 42 | spam_protection_method = models.SmallIntegerField( 43 | verbose_name=_('Spam protection method'), 44 | choices=SPAM_PROTECTION_CHOICES, default=0) 45 | 46 | akismet_api_key = models.CharField(max_length=255, blank=True) 47 | 48 | recaptcha_public_key = models.CharField(max_length=255, blank=True) 49 | recaptcha_private_key = models.CharField(max_length=255, blank=True) 50 | recaptcha_theme = models.CharField(max_length=20, 51 | choices=THEME_CHOICES, 52 | default='light', 53 | verbose_name=_('ReCAPTCHA theme')) 54 | recaptcha_size = models.CharField(max_length=20, 55 | choices=SIZE_CHOICES, 56 | default='normal', 57 | verbose_name=_('ReCAPTCHA size')) 58 | 59 | redirect_url = models.URLField(_('URL Redirection'), 60 | help_text=_('If it is set, the form redirect to url ' 61 | 'when the form is valid'), blank=True) 62 | 63 | class Meta: 64 | abstract = True 65 | 66 | def __unicode__(self): 67 | return self.site_email 68 | 69 | 70 | class Contact(BaseContact): 71 | pass 72 | -------------------------------------------------------------------------------- /cmsplugin_contact/nospam/__init__.py: -------------------------------------------------------------------------------- 1 | #Don't use import * - causes all sorts of namespace clashes 2 | 3 | from .widgets import HoneypotWidget 4 | from .fields import HoneypotField 5 | from .forms import BaseForm, AkismetForm, RecaptchaForm, HoneyPotForm, SuperSpamKillerForm 6 | -------------------------------------------------------------------------------- /cmsplugin_contact/nospam/fields.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | from django.core.exceptions import ValidationError 3 | from django.utils.translation import ugettext_lazy as _ 4 | 5 | from .widgets import HoneypotWidget 6 | 7 | 8 | class HoneypotField(forms.BooleanField): 9 | def __init__(self, *args, **kwargs): 10 | super(HoneypotField, self).__init__( 11 | widget = HoneypotWidget, 12 | required = False, 13 | error_messages = { 'checked': _("Please don't check this box.") }, 14 | *args, **kwargs) 15 | 16 | def clean(self, value): 17 | val = super(HoneypotField, self).clean(value) 18 | if val: 19 | raise ValidationError(self.error_messages['checked']) 20 | return val 21 | -------------------------------------------------------------------------------- /cmsplugin_contact/nospam/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | 3 | from ..nospam import utils 4 | from .fields import HoneypotField 5 | 6 | 7 | class BaseForm(forms.Form): 8 | 9 | def __init__(self, request, *args, **kwargs): 10 | self._request = request 11 | super(BaseForm, self).__init__(*args, **kwargs) 12 | 13 | 14 | class AkismetForm(BaseForm): 15 | 16 | akismet_fields = { 17 | 'comment_author': 'name', 18 | 'comment_author_email': 'email', 19 | 'comment_author_url': 'url', 20 | 'comment_content': 'comment', 21 | } 22 | akismet_api_key = None 23 | 24 | def akismet_check(self): 25 | fields = {} 26 | for key, value in self.akismet_fields.items(): 27 | fields[key] = self.cleaned_data[value] 28 | return utils.akismet_check(self._request, akismet_api_key=self.akismet_api_key, **fields) 29 | 30 | 31 | class RecaptchaForm(BaseForm): 32 | pass 33 | 34 | 35 | class HoneyPotForm(BaseForm): 36 | accept_terms = HoneypotField() 37 | 38 | 39 | class SuperSpamKillerForm(RecaptchaForm, HoneyPotForm, AkismetForm): 40 | pass 41 | -------------------------------------------------------------------------------- /cmsplugin_contact/nospam/utils.py: -------------------------------------------------------------------------------- 1 | from django.contrib.sites.models import Site 2 | from django.core.exceptions import ImproperlyConfigured 3 | from django.conf import settings 4 | 5 | 6 | def akismet_check(request=None, comment_author='', comment_author_email='', comment_author_url='', comment_content='', akismet_api_key=None): 7 | """ 8 | Connects to Akismet and returns True if Akismet marks this content as 9 | spam. Otherwise returns False. 10 | """ 11 | 12 | # Check if the akismet library is installed 13 | try: 14 | from akismet import Akismet 15 | except ImportError: 16 | raise ImportError('Akismet library is not installed. "easy_install akismet" does the job.') 17 | 18 | # Check if the akismet api key is set, fail silently if 19 | # settings.DEBUG is False and return False (not moderated) 20 | AKISMET_API_KEY = akismet_api_key or getattr(settings, 'AKISMET_API_KEY', False) 21 | if not AKISMET_API_KEY: 22 | raise ImproperlyConfigured('You must set AKISMET_API_KEY with your api key in your settings file.') 23 | 24 | ak = Akismet( 25 | key = AKISMET_API_KEY, 26 | blog_url = 'http://%s/' % Site.objects.get(pk=settings.SITE_ID).domain 27 | ) 28 | 29 | if ak.verify_key(): 30 | if request is not None: 31 | data = { 32 | 'user_ip': request.META.get('REMOTE_ADDR', '127.0.0.1'), 33 | 'user_agent': request.META.get('HTTP_USER_AGENT', ''), 34 | 'referrer': request.META.get('HTTP_REFERER', ''), 35 | } 36 | else: 37 | data = { 38 | 'user_ip': '', 39 | 'user_agent': '', 40 | 'referrer': '', 41 | } 42 | data.update({'comment_author': comment_author.encode('utf-8')}) 43 | data.update({'comment_author_email': comment_author_email.encode('utf-8')}) 44 | data.update({'comment_author_url': comment_author_url.encode('utf-8')}) 45 | # Send the request to Akismet 46 | if ak.comment_check(comment_content.encode('utf-8'), data=data, build_data=True): 47 | return True 48 | 49 | return False -------------------------------------------------------------------------------- /cmsplugin_contact/nospam/widgets.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | from django.utils.translation import ugettext as _ 3 | from django.utils.safestring import mark_safe 4 | 5 | 6 | # Honeypot widget -- most automated spam posters will check any checkbox 7 | # assuming it's an "I accept terms and conditions" box 8 | class HoneypotWidget(forms.CheckboxInput): 9 | is_hidden = True 10 | 11 | def render(self, *args, **kwargs): 12 | wrapper_html = u'
%%s
' % (_('Are you a robot?')) 13 | return mark_safe(wrapper_html % super(HoneypotWidget, self).render(*args, **kwargs)) 14 | -------------------------------------------------------------------------------- /cmsplugin_contact/settings.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | from django.utils.translation import ugettext_lazy as _ 3 | 4 | from django.conf import settings as project_settings 5 | 6 | CMSPLUGIN_CONTACT_FORMS = getattr(project_settings, "CMSPLUGIN_CONTACT_FORMS", ( 7 | ('cmsplugin_contact.forms.ContactForm', _('default')), 8 | ) 9 | ) 10 | -------------------------------------------------------------------------------- /cmsplugin_contact/templates/cmsplugin_contact/admin/plugin_change_form.html: -------------------------------------------------------------------------------- 1 | {% extends parent_template %} 2 | 3 | {% block extrahead %}{{ block.super }} 4 | 35 | 36 | {% endblock extrahead %} 37 | 38 | {% block extrastyle %}{{ block.super }} 39 | 69 | {% endblock extrastyle %} 70 | -------------------------------------------------------------------------------- /cmsplugin_contact/templates/cmsplugin_contact/contact.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | 3 | {% if form %} 4 |
5 | {% for field in form %} 6 | {% if field.name != 'accept_terms' %} 7 | 8 | {{ field.label_tag }} 9 | {{ field }} 10 | {% if field.errors %} 11 | {% for error in field.errors %} 12 | {{ error }} 13 | {% endfor %} 14 | {% endif %} 15 |

16 | {% endif %} 17 | {% endfor %} 18 | {% if form.accept_terms %} 19 | {{ form.accept_terms }} 20 | {% endif %} 21 |

22 | 23 |

24 | 25 | {% csrf_token %} 26 | 27 | 28 | {% else %} 29 | {{ contact.thanks|safe }} 30 | {% endif %} 31 | -------------------------------------------------------------------------------- /cmsplugin_contact/templates/cmsplugin_contact/email.txt: -------------------------------------------------------------------------------- 1 | {% load i18n %}{% trans "Message from" %}: {{ data.email }} 2 | 3 | {{ data.content|safe }} 4 | -------------------------------------------------------------------------------- /cmsplugin_contact/templates/cmsplugin_contact/subject.txt: -------------------------------------------------------------------------------- 1 | [{{ form_name|default:_("Contact Form") }}] {{ data.subject|safe }} 2 | -------------------------------------------------------------------------------- /cmsplugin_contact/utils.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | import importlib 3 | 4 | 5 | def class_for_path(class_path): 6 | module_name, class_name = class_path.rsplit(".", 1) 7 | m = importlib.import_module(module_name) 8 | c = getattr(m, class_name) 9 | return c 10 | 11 | -------------------------------------------------------------------------------- /examples/cmsplugin_custom_contact/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maccesch/cmsplugin-contact/6bb275958d231c1d18da3578d5a6ba196aee9943/examples/cmsplugin_custom_contact/__init__.py -------------------------------------------------------------------------------- /examples/cmsplugin_custom_contact/cms_plugins.py: -------------------------------------------------------------------------------- 1 | from django.utils.translation import ugettext_lazy as _ 2 | 3 | from cms.plugin_pool import plugin_pool 4 | 5 | from cmsplugin_contact.cms_plugins import ContactPlugin 6 | from models import CustomContact 7 | 8 | class CustomContactPlugin(ContactPlugin): 9 | name = _("Custom Contact Form") 10 | 11 | model = CustomContact 12 | 13 | # Important: You have to add the following to your settings.py 14 | # CMSPLUGIN_CONTACT_FORMS = ( 15 | # ('cmsplugin_contact.forms.ContactForm', _('default')), 16 | # ('cmsplugin_custom_contact.forms.CustomContactForm', _('custom')), 17 | # ) 18 | # if you're only using your custom plugin you can omit the first line 19 | 20 | # We're using the original cmsplugin_contact render templates here which 21 | # works fine but requires that the original plugin is in INSTALLED_APPS. 22 | render_template = "cmsplugin_contact/contact.html" 23 | 24 | # Custom email template to incorporate you custom data 25 | email_template = "cmsplugin_custom_contact/email.txt" 26 | 27 | fieldsets = ( 28 | (None, { 29 | 'fields': ('form_name', 'form_layout', 'site_email', 'submit_text', 'custom_label'), 30 | }), 31 | (_('Redirection'), { 32 | 'fields': ('thanks', 'redirect_url' ), 33 | } ), 34 | (_('Spam Protection'), { 35 | 'fields': ('spam_protection_method', 'akismet_api_key', 36 | 'recaptcha_public_key', 'recaptcha_private_key', 'recaptcha_theme') 37 | }) 38 | ) 39 | 40 | plugin_pool.register_plugin(CustomContactPlugin) 41 | -------------------------------------------------------------------------------- /examples/cmsplugin_custom_contact/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | from cmsplugin_contact.forms import ContactForm 3 | 4 | class CustomContactForm(ContactForm): 5 | custom = forms.CharField() 6 | -------------------------------------------------------------------------------- /examples/cmsplugin_custom_contact/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from cmsplugin_contact.models import BaseContact 3 | from django.utils.translation import ugettext_lazy as _ 4 | 5 | class CustomContact(BaseContact): 6 | custom_label = models.CharField( 7 | _('Custom sender label'), 8 | default=_('Your custom value'), max_length=20) 9 | -------------------------------------------------------------------------------- /examples/cmsplugin_custom_contact/templates/cmsplugin_custom_contact/email.txt: -------------------------------------------------------------------------------- 1 | {% load i18n %}{% trans "Message from" %}: {{ data.email }} 2 | 3 | {{ data.content|safe }} 4 | 5 | The awesome custom value: 6 | {{ data.custom }} -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup, find_packages 2 | 3 | setup( 4 | name='cmsplugin-contact', 5 | version='1.1.3', 6 | description='Extendable contact form plugin for Django CMS with spam protection and i18n', 7 | long_description=open('README.rst').read(), 8 | author='Maccesch', 9 | author_email='maccesch@gmail.com', 10 | url='http://github.com/maccesch/cmsplugin-contact', 11 | packages=find_packages(), 12 | keywords='contact form django cms django-cms spam protection email', 13 | classifiers=[ 14 | 'Development Status :: 5 - Production/Stable', 15 | 'Environment :: Web Environment', 16 | 'Intended Audience :: Developers', 17 | 'License :: OSI Approved :: BSD License', 18 | 'Operating System :: OS Independent', 19 | 'Programming Language :: Python', 20 | 'Framework :: Django', 21 | ], 22 | include_package_data=True, 23 | zip_safe=False, 24 | install_requires=[], 25 | ) 26 | --------------------------------------------------------------------------------