peet86/craft-reports

There is no license information available for the latest version (1.0.1) of this package.

Reports for Craft 3

Installs: 6

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 2

Type:craft-plugin

1.0.1 2017-06-19 14:55 UTC

This package is auto-updated.

Last update: 2024-05-13 13:10:24 UTC


README

Write reports with Twig.

Screenshot

Installation

To install Reports, follow these steps:

  1. Download & unzip the file and place the reports directory into your craft/plugins directory
  2. Install plugin in the Craft Control Panel under Settings > Plugins
  3. The plugin folder should be named reports for Craft to see it.

Reports works on Craft 2.4.x and higher;

Reports Overview

Reports allow you to collect data by writing Twig tags as normal. All you need to in the end is pass that data to the .prepare() method, like the following example:

Example report in Twig:

{% set newsCount = craft.entries.section('news').limit(null).total() %}
{{ craft.reports.prepare({
    columns: ['Total news entries'], 
    rows: [ [ newsCount ] ]
}) }}

List all users in a specific user group that have logged in within the last 30 days:

{% set loginPeriod = now|date_modify('-30 days') %}
{% set users = craft.users.group('clients').lastLoginDate('> ' ~ loginPeriod) %}
{% set userRows = [] %}
{% for user in users %}
    {% set userRows = userRows|merge([ [user.username, user.getName(), user.email] ]) %}
{% endfor %}

{{ craft.reports.prepare({
    columns: ['Username', 'Name', 'Email'], 
    rows: userRows
}) }}

The result is available in the control panel, or as a CSV export.

You can register report types from other plugins and use templates for both options and results:

public function registerReports()
{
    $types = [];
    $folders = IOHelper::getFolders(craft()->path->getPluginsPath().'tester/templates/reports/');
    
    foreach($folders as $folder){
        $name = IOHelper::getFolderName($folder, false);
        $types[$name] = 'reports/'.$name;
    }
    
    return $types;
}

Use the reports forms variable to access cp forms macros

{{ craft.reports.forms('dateTimeField', {
	id: 'startDate',
    label: "Start Date"|t,
    name: 'options[startDate]',
    value: options.startDate
}) }}

The options variable is now available in the results.twig

folder structure:

templates
    reports
        reportType
            results.twig
            settings.twig

Based on the work by Superbig