Metadata-Version: 2.1
Name: rer.newsletter
Version: 2.0.0a1
Summary: An add-on for Plone
Home-page: https://pypi.python.org/pypi/rer.newsletter
Author: Filippo Campi
Author-email: filippo.campi@redturtle.it
License: GPL version 2
Keywords: Python Plone
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Plone
Classifier: Framework :: Plone :: 5.0
Classifier: Framework :: Plone :: 6.0
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Requires-Python: >=3.7
Provides-Extra: test
License-File: LICENSE.GPL
License-File: LICENSE.rst

==============
rer.newsletter
==============

|python| |version| |ci| |license| |number|

.. |python| image:: https://img.shields.io/pypi/pyversions/rer.newsletter.svg
  :target: https://pypi.python.org/pypi/rer.newsletter/

.. |version| image:: http://img.shields.io/pypi/v/rer.newsletter.svg
  :target: https://pypi.python.org/pypi/rer.newsletter

.. |number| image:: http://img.shields.io/pypi/dm/rer.newsletter.svg
  :target: https://pypi.python.org/pypi/rer.newsletter

.. |license| image:: http://img.shields.io/pypi/l/rer.newsletter.svg
  :target: https://pypi.python.org/pypi/rer.newsletter

.. |ci| image:: https://github.com/RegioneER/rer.newsletter/actions/workflows/tests.yml/badge.svg
  :target: https://github.com/RegioneER/rer.newsletter/actions


This product allows the complete management of a newsletter.

========
Features
========

New Content-type
----------------

- Channel

  * Totally customizable because it is possible to set a header, a footer and CSS styles. This fields allows to uniform template of email that will be sent from one channel.
  * content type that inherit from folder content.

- Message

  * content type that inherit from folder content.

Portlet and Tile
----------------

The product provide a portlet and a tile for user subscribe.

Form for user subscribe have an email field and is protected for spam with `collective.honeypot <https://github.com/plone/collective.honeypot>`__.


User Management
---------------

Allows complete management of user.

- Add user from admin setting
- Delete user from admin setting
- Import users directly from CSV file
- Export users directly to CSV file
- Delete a group of user directly from CSV file
- Subscribe users
- Unsubscribe users


=================
Advanced Features
=================


Customize how to send your newsletter
-------------------------------------

By default, this product send all the emails through the standard plone mailer.
The actual sending mechanism is handled by an adapter (a multi-adapter)::

  <adapter
    for="rer.newsletter.behaviors.ships.IShippableMarker
         zope.publisher.interfaces.browser.IBrowserRequest"
    provides=".base_adapter.IChannelSender"
    factory=".base_adapter.BaseAdapter"
  />


To change this default activity, you can create a new Plone add-on that
register a new adapter with a more specific layer (e.g. use the browser layer
of the new add-on) and override the ``sendMessage`` method as you wish.

`rer.newsletterplugin.flask <https://github.com/RegioneER/rer.newsletterplugin.flask>`__ is an example
of plugin with a custom sender. It uses an external Flask app to send emails.


Advanced security
-----------------

New permissions have been added for the management of the Newsletter:

- ``rer.newsletter: Add Channel``
- ``rer.newsletter: Add Message``
- ``rer.newsletter: Manage Newsletter``
- ``rer.newsletter: Send Newsletter``

This permission are assigned to Manager and Site Administrator. There is also
a new role, ``Gestore Newsletter``, which has permissions for all possible
operations on newsletter.


Bot protection
==============

This product use `collective.honeypot <https://pypi.org/project/collective.honeypot/>`__ to prevent bot submissions.

You just need to set two environment variables:

- *EXTRA_PROTECTED_ACTIONS customer-satisfaction-add*
- *HONEYPOT_FIELD xxx*

xxx should be a field name that bot should compile.

If you get hacked, you could simply change that variable.


Subscriptions cleanup
----------------------

There is a view (*@@delete_expired_users*) that delete all
users that not have confirmed subscription to a channel in time.

You can set subscription token validity from the product's control panel.

Inside the settings of the product there is a field that allows you to set
validity time of the channel subscription token.


============
Installation
============

Install rer.newsletter by adding it to your buildout::

    [buildout]

    ...

    eggs =
        rer.newsletter


and then running ``bin/buildout``

============
Dependencies
============

This product has been tested on Plone 5.1

=======
Credits
=======

Developed with the support of `Regione Emilia Romagna <http://www.regione.emilia-romagna.it/>`_;

Regione Emilia Romagna supports the `PloneGov initiative <http://www.plonegov.it/>`_.


=======
Authors
=======

This product was developed by **RedTurtle Technology** team.

.. image:: https://avatars1.githubusercontent.com/u/1087171?s=100&v=4
   :alt: RedTurtle Technology Site
   :target: http://www.redturtle.it/


============
Contributors
============

- RedTurtle Technology, sviluppoplone@redturtle.it


=========
Changelog
=========

2.0.0a1 (2023-03-14)
--------------------

- added restapi services for Volto usage
- fixed results for unsubscribe service
- italian translation
- remove CSRFProtection when call services
- fix email validation when mailinglist are imported
- using preview_image instead of lead image in newsletter shippable collection
- Remove subtitle (h4) in nl template and preview

1.2.0 (2023-01-25)
------------------

- Remove recaptha usage in the channel subscribe form, will be used honeypot instead.
  [foxtrot-dfm1]


1.1.2 (2022-05-12)
------------------

- Improve error handling messages in massive user import.
  [cekk]


1.1.1 (2021-11-11)
------------------

- Fix encoding in unsubscribe.py.
  [cekk]


1.1.0 (2021-06-10)
------------------

- Use mail validator from portal_registration.
  [cekk]


1.0.7 (2021-01-28)
------------------

- Fix logic in delete expired users view.
  [cekk]


1.0.6 (2020-12-18)
------------------

- Handle "running" state in status table for long queues.
  [cekk]


1.0.5 (2020-11-25)
------------------

- Fix upgrade step.
  [cekk]

1.0.4 (2020-11-12)
------------------

- Fix encoding for the channel title.
  [daniele]


1.0.3 (2020-11-06)
------------------

- Handle mail not found in subscribe form.
  [cekk]


1.0.2 (2020-08-18)
------------------

- Styles for newsletter subscription modal
- Fix cancel button moving when in error state
  [nzambello]


1.0.1 (2020-07-27)
------------------

- Remove direct dependency to collective.taskqueue.
  [cekk]

1.0.0 (2020-07-21)
------------------

- Heavy refactoring to support different send methods from adapters.
  [cekk]


0.4.0 (2020-04-21)
------------------

- Fixed subscribers import in Python3.
  [daniele]
- Fixed RichText behavior name in types definition.
  [daniele]
- Fix initializedModal.js to correctly support tiles loading
  [nzambello]

0.3.0 (2020-03-07)
------------------

- Python 3 compatibility.
  [cekk]


0.2.0 (2019-04-01)
------------------

- Fix initializedModal.js to support new functionality in tilesmanagement: anonymous always load a static version of tiles list.
  [cekk]


0.1.12 (2019-01-30)
-------------------

- Added shippable collection.
- Fixed template for shippable collection.
- Fixed search object for channel history view.
  [eikichi18]

- a11y: added role attribute for portalMessage
  [nzambello]


0.1.11 (2018-09-27)
-------------------

- Fix ascii encode problem on site name.
  [eikichi18]


0.1.10 (2018-09-27)
-------------------

- Added number of removed user on delete_expired_users view.
- Removed layer for delete_expired_users view.
- Fixed view for delete expired users.
  [eikichi18]


0.1.9 (2018-09-20)
------------------

- Fixed modal timeout
  [eikichi18]


0.1.8 (2018-07-19)
------------------

- Added Redis for asynchronous task
- Fixed label of close button on subscription modal
- Added Translatation
- Fixed the way in which it takes the title of the site
- Added content rules for user subscription and unsubscription
  [eikichi18]


0.1.7 (2018-06-19)
------------------

- Fixed buildout
  [eikichi18]


0.1.6 (2018-06-19)
------------------

- Fixed some minor label
  [eikichi18]


0.1.5 (2018-05-25)
------------------

- fixed default profile in upgrade step
  [eikichi18]


0.1.4 (2018-05-23)
------------------

- upgrade step to fix bundle for initializedModal.js
  [eikichi18]


0.1.3 (2018-05-23)
------------------

- Fixed accessibility problem on subscribe/unsubscribe modal for IE.
  [eikichi18]


0.1.2 (2018-03-15)
------------------

- Fixed accessibility and style for subscribe/unsubscribe modal.
  [eikichi18]


0.1.1 (2018-03-02)
------------------

- Fixed doc.
  [eikichi18]


0.1.0 (2018-03-02)
------------------

- Initial release.
  [eikichi18]
