Giter Club home page Giter Club logo

mailchimp's Introduction

TYPO3 CMS Extension mailchimp

Build Status

This extension implements the most important feature of MailChimp: Let the users register for a specific list, including interest groups!

Requirements

  • TYPO3 CMS 10.4 - 11.5
  • MailChimp API key
  • License: GPL 2
  • jQuery in Frontend

Manual

Please take a look at the full manual inside the Documentation directory or rendered at https://docs.typo3.org/typo3cms/extensions/mailchimp/.

mailchimp's People

Contributors

franzholz avatar georgringer avatar guillaumegbzh avatar houmark avatar josefglatz avatar konafets avatar liayn avatar nicodh avatar reinhardfuehricht avatar slackero avatar stefanodilegamisunzinet avatar tuurlijk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

mailchimp's Issues

Possibility to sign out?

Is there a possibility to use the plugin to sign out of a mailchimp newsletter list, too - through submitting a registered email address, for example?

Maybe I have overseen it, but a quick look at the manual did not show anything; and I know, there are sunsubscribe-links in every mail/newsletter, but customers are lazy.. ;)

Mailchimp use User_Int

The Admin Console Says that Malchimp use User_int

mailchimp

Is this correct ? Will this not kill the Cache ?

Cheers Oliver

Exception #1513232660: For hash "" no API key found

I've just updated Typo3 to 8.7.9 and Mailchimp to version 3.0. An exception is triggered when I try to open any page that contains the plugin in the backend. Frontend output is OK and subscriptions are being done correctly.

This is the full exception report:

Uncaught TYPO3 Exception
#1513232660: For hash "" no API key found (More information)

UnexpectedValueException thrown in file
/home/xxx/public_html/typo3conf/ext/mailchimp/Classes/Domain/Model/Dto/ExtensionConfiguration.php in line 82.

21 Sup7even\Mailchimp\Domain\Model\Dto\ExtensionConfiguration::getApiKeyConfiguration(NULL)

/home/xxx/public_html/typo3conf/ext/mailchimp/Classes/Domain/Model/Dto/ExtensionConfiguration.php:
00069: public function getApiKeyLabel($hash)
00070: {
00071: $settings = $this->getApiKeyConfiguration($hash);
00072: return $settings['label'];
00073: }

20 Sup7even\Mailchimp\Domain\Model\Dto\ExtensionConfiguration::getApiKeyLabel(NULL)

/home/xxx/public_html/typo3conf/ext/mailchimp/Classes/Hooks/Backend/PageLayoutViewHook.php:
00064: $this->tableData[] = [
00065: $this->getLabel('flexform.apiKey'),
00066: $this->extensionConfiguration->getApiKeyLabel($apiKeyHash)
00067: ];
00068: }

19 Sup7even\Mailchimp\Hooks\Backend\PageLayoutViewHook::getApiKey()

/home/xxx/public_html/typo3conf/ext/mailchimp/Classes/Hooks/Backend/PageLayoutViewHook.php:
00049: $result = '' . htmlspecialchars($this->getLanguageService()->sL(self::LLPATH . 'plugin.title')) . '
';
00050:
00051: $this->getApiKey();
00052: $this->getListInformation();
00053: $this->getInterestGroupInformation();

18 Sup7even\Mailchimp\Hooks\Backend\PageLayoutViewHook::getExtensionSummary(array, TYPO3\CMS\Backend\View\PageLayoutView)
17 call_user_func_array(array, array)

/home/xxx/vendor/typo3/cms/typo3/sysext/core/Classes/Utility/GeneralUtility.php:
03779: }
03780: // Call method:
03781: $content = call_user_func_array([&$classObj, $parts[1]], [&$params, &$ref]);
03782: } else {
03783: $errorMsg = 'No method name '' . $parts[1] . '' in class ' . $parts[0];

16 TYPO3\CMS\Core\Utility\GeneralUtility::callUserFunction("Sup7even\Mailchimp\Hooks\Backend\PageLayoutViewHook->getExtensionSummary", array, TYPO3\CMS\Backend\View\PageLayoutView)

/home/xxx/vendor/typo3/cms/typo3/sysext/backend/Classes/View/PageLayoutView.php:
01831: $_params = ['pObj' => &$this, 'row' => $row, 'infoArr' => $infoArr];
01832: foreach ($hookArr as $_funcRef) {
01833: $hookOut .= GeneralUtility::callUserFunction($_funcRef, $_params, $this);
01834: }
01835: }

15 TYPO3\CMS\Backend\View\PageLayoutView::tt_content_drawItem(array)

/home/xxx/vendor/typo3/cms/typo3/sysext/backend/Classes/View/PageLayoutView.php:
00635: );
00636: $innerContent = '<div ' . ($row['_ORIG_uid'] ? ' class="ver-element"' : '') . '>'
00637: . $this->tt_content_drawItem($row) . '';
00638: $singleElementHTML .= '

' . $innerContent . '
'
00639: . $this->tt_content_drawFooter($row);
14 TYPO3\CMS\Backend\View\PageLayoutView::getTable_tt_content(47)

/home/xxx/vendor/typo3/cms/typo3/sysext/backend/Classes/View/PageLayoutView.php:
00256: break;
00257: case 'tt_content':
00258: return $this->getTable_tt_content($id);
00259: break;
00260: default:

13 TYPO3\CMS\Backend\View\PageLayoutView::getTable("tt_content", 47, "")

/home/xxx/vendor/typo3/cms/typo3/sysext/recordlist/Classes/RecordList/AbstractDatabaseRecordList.php:
00534:
00535: // Finally, render the list:
00536: $this->HTMLcode .= $this->getTable($tableName, $this->id, implode(',', $fields));
00537: }
00538: }

12 TYPO3\CMS\Recordlist\RecordList\AbstractDatabaseRecordList::generateList()

/home/xxx/vendor/typo3/cms/typo3/sysext/backend/Classes/Controller/PageLayoutController.php:
00954: $dbList->HTMLcode .= $this->moduleTemplate->getVersionSelector($this->id);
00955: // Generate the list of elements here:
00956: $dbList->generateList();
00957: // Adding the list content to the tableOutput variable:
00958: $tableOutput[$table] = $h_func . $dbList->HTMLcode . $h_func_b;

11 TYPO3\CMS\Backend\Controller\PageLayoutController::renderContent()

/home/xxx/vendor/typo3/cms/typo3/sysext/backend/Classes/Controller/PageLayoutController.php:
00818: $content .= '

' . htmlspecialchars($this->getLocalizedPageTitle()) . '
';
00819: // All other listings
00820: $content .= $this->renderContent();
00821: }
00822: $content .= '';
10 TYPO3\CMS\Backend\Controller\PageLayoutController::main()

/home/xxx/vendor/typo3/cms/typo3/sysext/backend/Classes/Controller/PageLayoutController.php:
00736: $this->init();
00737: $this->clearCache();
00738: $this->main();
00739: $response->getBody()->write($this->moduleTemplate->renderContent());
00740: return $response;

9 TYPO3\CMS\Backend\Controller\PageLayoutController::mainAction(TYPO3\CMS\Core\Http\ServerRequest, TYPO3\CMS\Core\Http\Response)
8 call_user_func_array(array, array)

/home/xxx/vendor/typo3/cms/typo3/sysext/core/Classes/Http/Dispatcher.php:
00039: $targetIdentifier = $request->getAttribute('target');
00040: $target = $this->getCallableFromTarget($targetIdentifier);
00041: return call_user_func_array($target, [$request, $response]);
00042: }
00043:

7 TYPO3\CMS\Core\Http\Dispatcher::dispatch(TYPO3\CMS\Core\Http\ServerRequest, TYPO3\CMS\Core\Http\Response)

/home/xxx/vendor/typo3/cms/typo3/sysext/backend/Classes/Http/BackendModuleRequestHandler.php:
00167: $dispatcher = GeneralUtility::makeInstance(Dispatcher::class);
00168: $this->request = $this->request->withAttribute('target', $moduleConfiguration['routeTarget']);
00169: $response = $dispatcher->dispatch($this->request, $response);
00170: } else {
00171: // extbase module

6 TYPO3\CMS\Backend\Http\BackendModuleRequestHandler::dispatchModule("web_layout")

/home/xxx/vendor/typo3/cms/typo3/sysext/backend/Classes/Http/BackendModuleRequestHandler.php:
00087:
00088: $moduleName = (string)$this->request->getQueryParams()['M'];
00089: return $this->dispatchModule($moduleName);
00090: }
00091:

5 TYPO3\CMS\Backend\Http\BackendModuleRequestHandler::handleRequest(TYPO3\CMS\Core\Http\ServerRequest)

/home/xxx/vendor/typo3/cms/typo3/sysext/core/Classes/Core/Bootstrap.php:
00313:
00314: // Execute the command which returns a Response object or NULL
00315: $this->response = $requestHandler->handleRequest($request);
00316: return $this;
00317: }

4 TYPO3\CMS\Core\Core\Bootstrap::handleRequest(TYPO3\CMS\Core\Http\ServerRequest)

/home/xxx/vendor/typo3/cms/typo3/sysext/backend/Classes/Http/Application.php:
00090: }
00091:
00092: $this->bootstrap->handleRequest($this->request);
00093:
00094: if ($execute !== null) {

3 TYPO3\CMS\Backend\Http\Application::run()

/home/xxx/vendor/typo3/cms/typo3/sysext/backend/Resources/Private/Php/backend.php:
00022: $classLoader = require DIR . '/../../../../../../vendor/autoload.php';
00023:
00024: (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run();
00025: });

2 {closure}()

/home/xxx/vendor/typo3/cms/typo3/sysext/backend/Resources/Private/Php/backend.php:
00023:
00024: (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run();
00025: });

1 require("/home/xxx/vendor/typo3/cms/typo3/sysext/backend/Resources/Private/Php/backend.php")

/home/xxx/vendor/typo3/cms/typo3/index.php:
00001: <?php
00002:
00003: require DIR . '/sysext/backend/Resources/Private/Php/backend.php';

Settings Return Empty Array

Hi, I installed the latest extension and set the apikey, listId and interestId in the plugin options section but when I submit a form I get an error complaining that listId is not a string. I added an f:debug of $this->settings and I get an empty array.

Installed the extension via composer and running typo3 10.4

Thanks in advance for any advice. Not sure if I missed some configuration.

Not working in 6.2.26

I keep on getting this error:

Oops, an error occurred!

Could not analyse class:TYPO3\CMS\Fluid\ViewHelpers\SpacelessViewHelper maybe not loaded or no autoloader?

Thanks

FEATURE: Subscribe multiple lists

@georgringer
Hi Georg
We have an existing in-house MailChimp extension where you can select subscribe to multiple lists from one form.
Would you be interested in this functionality in EXT:mailchimp? If so we might want to make the changes and make pull-request.
Int that case, there might be some considerations to make regarding the Plugin Flexforms.

Not able to use multiple API Keys

Could you please add a way to use multiple API Keys in your extension ?
You could move the extensionmanager setting to a typoscript setting, then we could set the api-key for each domain individually.

Thanks,
Sicor DevTeam

can i use only email fields in subscription form?

I want to display only email fields in my subscription form. but when i use only email fields then getting response like below. if i use firstName lastName with email fields then it's working.

An error has occurred, we are sorry!

Any one help me ?
How can i remove this two fields in my in subscription form.
Thanks in advance :)

Using of the Mailchimp CE results in Fatal Error

Whenever I want to place the mailchimp content element I encounter the following issue on all "parent pages" and the page itself:
Fatal error: Uncaught TYPO3Fluid\Fluid\Core\ViewHelper\Exception: No Content Object definition found at TypoScript object path "tt_content.list.20." in /var/www/vhosts/ebds.online/httpdocs/public/typo3/sysext/fluid/Classes/ViewHelpers/CObjectViewHelper.php:161 Stack trace: #0 /var/www/vhosts/ebds.online/httpdocs/var/cache/code/fluid_template/Standard_action_List_e902fe832de5110b926f837b757b3c0e671b738c.php(76): TYPO3\CMS\Fluid\ViewHelpers\CObjectViewHelper::renderStatic(Array, Object(Closure), Object(TYPO3\CMS\Fluid\Core\Rendering\RenderingContext)) #1 /var/www/vhosts/ebds.online/httpdocs/vendor/typo3fluid/fluid/src/View/AbstractTemplateView.php(260): Standard_action_List_e902fe832de5110b926f837b757b3c0e671b738c->section_62bce9422ff2d14f69ab80a154510232fc8a9afd(Object(TYPO3\CMS\Fluid\Core\Rendering\RenderingContext)) #2 /var/www/vhosts/ebds.online/httpdocs/vendor/typo3fluid/fluid/src/ViewHelpers/RenderViewHelper.php(143): TYPO3Fluid\Fluid\View\AbstractTemplateView->renderSection('Main', Array, true) #3 /var/www/vhosts/ebd in /var/www/vhosts/ebds.online/httpdocs/public/typo3/sysext/fluid/Classes/ViewHelpers/CObjectViewHelper.php on line 161

I have no clue what the problem might be.

Handle double opt-in when user has attempted signup before

I submitted a PR to improve the handling of signups. More details in the pull request itself.

Basically we saw that when someone attempted signup but didn't finish by confirming in the mail, because the mail was not delivered for some reason, it would be impossible for that e-mail to get on the list through this extension on a later attempt.

After chatting with MailChimp tech support and reading up on their docs, the solution was to either do a PUT request on the first signup attempt, or catch the "existing membership" when doing the POST and then do a PUT request.

Since a PUT request will also change subscribed to pending for an existing user the best solution is to do a POST request, catch the "error", do a GET request for the current status of the mail (the POST does not provide this information) and if that status is not "subscribed" then do the PUT request to set the user to pending. When that happens, MailChimp will automatically send the confirmation mail again. This 3-step routine prevents an existing user from changing from "subscribed" to "pending" and we will still output the "you are already signed up" message.

If the user is not on the list in any way, only one POST request is sent and that one will of course also trigger the confirmation mail.

Hope to see this merged soon :)

Email validation renders form twice

Hello! When submitting a form using the ajax method and the mail is not valid, the form renders again.
That duplicated form appears inside the mailchimp-ajax-response div. It also uses the default template and not my custom defined one.

Sorry, my example is in danish
screen shot 2016-06-27 at 6 21 54 pm

Thanks

Error when installing in TYPO3 9.5.11

tried to install the latest version on a TYPO3 system. That is not working and giving an error

Call to a member function getPackagePath() on null

So is the extension not ready for T9.5 ?

Changing the templates seems not to work in Typo3 10.4

It seems this is not processed as expected if I insert this into my constants.typoscript.

plugin.tx_mailchimp {
    view {
        templateRootPaths {
            0 = EXT:mailchimp/Resources/Private/Templates/
            1 = EXT:<my-extkey>/Resources/Private/Templates/MailChimp/Form/
        }
        partialRootPaths {
            0 = EXT:mailchimp/Resources/Private/Partials/
            1 = EXT:<my-extkey>/Resources/Private/Partials//MailChimp/
        }
        layoutRootPaths {
            0 = EXT:mailchimp/Resources/Private/Layouts/
            1 = EXT:<my-extkey>/Resources/Private/Layouts//MailChimp/
        }
    }
}

Other extensions use:

view.templateRootPath = 
view.partialRootPath = 
view.layoutRootPath =

An error occurred trying to process items for field "Used API" (API key is missing).

Hello.
I'm trying to get this Mailchimp extension to work but ran into a Problem.
After installation there is no Configuration button visible in the extension manager to set the API-key and as a consequence the is an error message when i try the add the plugin to a Page:
"An error occurred trying to process items for field "Used API" (API key is missing)."
also tried setting the API-key it directly in the "ext_conf_template.txt" but still the same problem.
Need some help here .

Best regards,
Georg Marius

EDIT:
my bad, found the solution:
Seit v9 sind die im Modul "Settings" und dort im Punkt "Extension Configuration" zu finden.
"Settings" -> "Extension Configuration" -> there you can set these things now

Custom Fields

I try to add a Salutation Dropdown to my form.

Added the following code to the Template:

<select name="mergeField3">
   <option selected disabled>Salutation</option>
   <option>Mr</option>
   <option>Mrs</option>
</select>

What to do now to handle that custom field in the EXT?
Saw the Handling of custom fields section in the manual but didn't know what to do with that.

Error with Composer Install at Typo3 8.7

I got an Error if i install it with Composer and Typo3 8.7

Problem 1 - Installation request for sup7even/mailchimp ^1.2 -> satisfiable by sup7even/mailchimp[1.2.0]. - sup7even/mailchimp 1.2.0 requires typo3/cms-core >=7.6.0,<8.3 -> no matching package found.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.