barrelstrength / sprout Goto Github PK
View Code? Open in Web Editor NEWSprout Marketing Suite modules for Craft CMS applications
Home Page: https://sprout.barrelstrengthdesign.com
License: Other
Sprout Marketing Suite modules for Craft CMS applications
Home Page: https://sprout.barrelstrengthdesign.com
License: Other
Give Sprout Email a way to manage all Notification Emails in one centralized location on the Notifications Tab by allowing a user to add Notification Emails that override the default System Emails (/admin/settings/email/messages).
These System Emails include:
The Events that replace System Emails may need to behave slightly differently and suppress the System Email from being sent so the Sprout Email alternative can be used in its place.
Perhaps we add an attribute to the NotificationEvent API that displays a lightswitch field in the Event Settings for these System Email Events that allows a user to select "Replace default system email"
We should not modify the System Emails in any way, just block them from sending if someone wants to manage all of their emails from one place in Sprout Email
Explore:
Event::on(SystemMessages::class, SystemMessages::EVENT_REGISTER_MESSAGES, [$this, 'onRegisterEmailMessages']);
Consider waiting for the Commerce release or Craft 3.2
Currently, multi-page forms can be handled in Javascript using a library like parsely.js.
Add support for multi-page forms via PHP where each page gets saved to the db as a user steps through the form.
Consider making form name editable in the main header area.
Globals currently supports per-site translation.
Consider adding support for the additional translation types offered by fields.
A user writes:
I have sprout reports (twig template) exporting tens of thousands of records. Problem is that its timing out. I appreciate that this is expected and my only likely option is to up the server spec. Is there anything i can do to optimise the report itself? e.g, through tasks where it exports the report over a period of time rather than all in one go?
I've made a form and make a report of it. I've add later on some missing form elements and change the visible order of the fields in the editor.
When download a CSV in the reports-option, the columns are in order of created. Not in order of the form.
Is there an option to change this? Or do I need to recreate the entire form?
Included the person's information that ordered the product in addition the actual order information.
Notify
We have a simple version of this in the docs already.
The ideal situation here is a way we can set this up in the configuration and know that when we push to dev or live the right settings are in place for the behavior we want, and there is little to no risk of dev sites getting indexed.
Set NoRobots NoIndex meta tags on per-environment basis. This wouldn't exclude images from being indexed (says someone).
Also set: X-Robots-Tag header (an actual HTTP header, not an HTML tag) that you can attach to requests of all kinds that provides the same noindex, nofollow functionality
This is because the lastEntry tag relies on storing the ID of the submitted entry and querying the full model from the db.
Can we consider an alternate way to store and allow the data to be displayed on a Thank You page without saving it in the db?
lastEntry
only works when saving data to the databaselastEntry
should be updated to only work when using synchronous submission settinglastEntry
for asynchronous submissions must be handled manuallyWe won't be adding Matrix Field support by default in Sprout Forms. There is too much advanced functionality needed on the front-end and it would be hard for a plugin to make assumptions about what individual front-end needs would be.
At some point we could consider creating a separate Front-end Matrix Field integration plugin as an example for others to draw from.
For similar functionality, see Matt Blode's Tables Field for Sprout Forms
Previewing a sent HTML email with Sprout Forms requires the use of a data URI of the HTML content directly placed in the src of the iframe. This doesn't play nice with a reasonably safe Content Security Policy. Allowing data:
for frame-src
would be pretty dangerous as you can't whitelist it to a specific domain, you'd have to allow it globally, which would open a potential XSS vector for bad stuff.
I understand this is a little difficult because it's a preview of a sent email, rather than just a preview of a template, but at this time I'm unable to use the preview sent email feature for HTML, because it would mean decreasing the overall security of the Craft site.
data:
on the frame-src
or default-src
(fallback)Consider SEO and Social Media Preview Targets.
One user added variants.stock as \'Quantity Remaining\',
to the Product Revenue report to add current inventory levels.
Consider adding support for this.
This helps enable workflows like Custom Form Questions on Checkout with Craft Commerce
A user writes:
Is it possible to disable certain field types? In some cases, our editor users are likely to be really confused by some of the field types (e.g., regex) and also, if we decide to develop custom templates for a site, it would be nice to only develop those templates for the fields that an editor will use without worrying they'll use an un-templated field.
Let's consider:
Hi,
I want to access the displayForm() function in the Craft Elements API. This is my basic setup, with $entry->form being the handle of the form field. It doesn't seem possible to use $entry->form->displayForm() anymore? Is there any other way tot render the HTML of the form? I'm using the latest version of Craft 3.
'api/services' => [
'elementType' => Entry::class,
'criteria' => ['section' => 'services'],
'paginate' => false,
'transformer' => function(Entry $entry) use ($globalSeo) {
return [
'title' => $entry->title,
'body' => $entry->body,
'form' => $entry->form,
'url' => $entry->url
];
},
],
Best wishes
The setting will point to the folder where a user can update the default sitemap.xml if they need to hard code something that extends it or change the output behavior in any way.
Currently, Sprout SEO watches for changes in Field Layouts and Metadata Field types and will resave related Elements when relevant updates are made.
This can trigger a lot of resaving on sites with a lot of entries. Is there anything we can do to optimize this behavior or give a user more control when they don't need to resave all elements?
In some cases, dynamic values are used with conditional Twig statements and some logic requires more space than the default VARCHAR allows
When using a phone number field and limiting it to a single country, it would be nice if the disabled country code selector was just hidden.
We have a partial implementation of this with the "Sprout Commerce Forms" plugin.
Update this plugin to hand off data to the website and let Sprout Forms manage the output of the form-entry.html
template.
Can we add support for an "answers.html" template? Just like a dev can override an email, they can also just override the answers.html
if they want to update the default output.
We can potentially use the same answers.html
in the existing notification email?
We can also implement a way to output these answers in the Craft Commerce Order interface.
Remove deliveryStatus row from the Info Table
Scenarios to consider:
Add Redirect Action that allows you to move a redirect to the End of the list or the beginning of the List.
- [x] Select Redirect => Move to First Position
- [x] Select Redirect => Move to Last Position
Notifications for when something is saved need to have When entry is created?
or When entry is updated?
box ticked. Otherwise the notification fails validation, and the email quietly isn't sent.
I think the notification save should fail in the cp when neither box is ticked.
Sprout SEO should automatically remove and add the beginning slash of the relative Custom URL.
Mailer::getSettingsHtml() => sproutemail_campaigntype.settings
Copy/Paste Mailer does not yet provide the user option to select a template to use only for the copy/paste action. We need one template for the Live Preview and another for the Copy/Paste fields as someone may want to copy.paste a partial without a header.
Add support for default Sender settings (From Name, Email, Reply To):
Campaign Emails: defaults can be managed in Settings->General
Notification Emails: defaults can be managed in Settings->General
Defaults can use the Craft Email Settings default as a last resort fallback
Consider a Sitemap Types API
A user could select a sitemapType for a section (standard|product|image) and each type will hand off the sitemap data to a different base template
Related
See: Breeze
Primary task is in Sprout Fields: barrelstrength/sprout-fields#59
Canonical URL Field should allow a user to link to Relation fields that support URLs.
Base URL should respect current Sites baseUrl setting.
Remove the sparse, edit page in favor of inline editing
http://share.barrelstrength.co/1y3e3a2m0W0j
Add multi-site switch for Notifications to manage a separate email for each site. Might need to support scenarios like Fields (by site, by language, by group... etc). Translation Method can be defined by default or in settings and Enabled + Enabled for Site behavior can be used to help manage where things get triggered.
Add a check for $notificationEmail->siteId and confirm it matches the current siteId of the request.
Adam Ladrach asks: "Any tips for creating a master products report with sales for all products, even if they don't have any sales? Basically, I want something similar to your Product Revenue report, but to include products that don't have any sales as well for accounting purposes."
Accounting wishes to see that Product X has $0.00 in sales. They also send sales reports to the companies selling the items.
I'm trying to create user-configurable reports, but having to click the cog to open the settings every time I update my settings template is an extra step I don't want to do. I would like the settings to be open by default for my users, too, since they should be updating those settings every time they run a new report.
Consider implementing with Local Storage like Element Index Page.
When attempting to include a general twig template within a Sprout Forms template override i.e. field.html
, the error Unable to find the template “xxxx”.
is thrown. I believe this is because the template path is locked down to the $templateFolderOverride
within the templates
directory itself, so you can't include anything outside of it. This is what I'd like to do:
templates/
_includes/
example.twig
_sproutforms/
field.html <-- I want to use _includes/example here
Currently Sprout Forms doesn't allow access to that _includes/
location, because it looks like its locked down to the _sproutforms
directory.
Would it be possible for a Sprout Forms template override to be able to include template files outside of the override directory?
Report Localization
Date in User Interface - Saving
Form POST - Date Array
-> convert date to UTC here:
** DateTimeHelper::formatTimeForDb($value->getTimestamp());
Array => String
Date in User Interface - Loading
From JSON Settings in DB - Date Array
-> convert date from UTC here:
Instead of USER TIMEZONE, we want to user GENERAL SETTINGS TIMEZONE
DateTime::createFromString($startDateParam, craft()->timezone);
craft()->timezone => generalSettingsTimezone
** DateTime::createFromString($startDateParam, $generalSettingsTimezone);
String => DateTime Object (for PHP or Twig Templates)
Date Object vs Date Array
Where should Array => Object conversion happen?
Getting an email every time a 404 happens may be a lot of emails. Any way we can do this based on a time period or when the count matches a certain number?
When count = 1, send a notification email that a 404 exist.
When count = 1 or 10, send a notification email that a 404 exist.
For website:
primarywebsite.com
A user could manage a vanity URL such as:
secondarywebsite.com
And set up a redirect such as
Old URL: secondarywebsite.com/shared-url
New URL: primarywebsite.com/actual-url
A few options to consider for implmentation.
Consider: "Old URL" isn't really the right name for this field in the Vanity URL scenario
If a captcha fails it does not respond with field specific errors, we need a way to display global errors.
Also, if a payload forward request fails, it also responds with global errors, not field-specific errors.
Consider how best to handle this in templates.
// This would display failed payload forwarded requests
{% if errors['general'] is defined %}
{% include "errors" with {
errors: errors['general']
} %}
{% endif %}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.