Grav Admin Power Tools

This product is in active development and has been released under the MIT license.

Adds power-user features to the Grav Admin plugin.

Many features in this plugin are experimental. They may or may not work as intended in every circumstance. Please make sure to backup before trying any feature that may modify your files. Most features can be individually enabled/disabled from the plugin menu.

Download it here.

Adds Edit This Page and Edit This Section links to pages.

If the frontmatter contains the value editable: false the links will not be added.

This feature can be disabled on the plugin configuration page.

Adds an 'Edit Page On Grav' link to the bottom of all pages.

Adds an 'Edit Section' link after every heading. In theory, different sections can be modified at the same time by different users.

A section is a heading and the content up to the next heading with the same level.

If you use the toc plugin, edit section links will also be added to the table of contents.

Use the section editor to change the heading and markdown for an individual section. You can also delete the entire section.

If headings have the same level and text, only the first one will be editable.

A very naive method is used to parse your markdown; We have seen cases where sublevels are duplicated after using this feature, so beware.

You can move an entire section to a new child page. This removes the section from the current page, and creates a new page using the edited section as the title. This creates a refactoring workflow for markdown documents.

You can now view and reorder child pages in the page editor. The change happens immediately; The parent page does not need to be saved.

This action moves a selected page and renames any child references that use a name-only link.

todo: This feature has been removed until we migrate the name-only link feature from another plugin

This action renames a selected page and renames any child references that use a name-only link.

todo: This feature has been removed until we migrate the name-only link feature from another plugin

Clicking on the dashboard page icon will view the page instead of the opening the editor.

An Up action has been added to the edit-page titlebar actions. It will not appear on top level pages.

This plugin enables the navigation sidebar of the Learn2 Theme to have smooth scrolling on iOS and Android touch devices.

This plugin updates the admin titlebar menu to enable scrolling.

todo: The current Grav implementation uses a CSS styling for drop down menus that will not allow this feature to work.

This plugin adds additional options to the +Add dropdown. An +Add dropdown menu is also added to the dashboard.

Many of the dialog options are not yet implemented.

Copy Page ...
Select a page to duplicate, and choose options.
Add Page Like ...
Create a new page like one from a selection and choose options.
Add Page Like This
Create a new page like the current page.
Add Page Like Parent
Create a new page like the current page's parent page.
Add Page Like Child
Create a new page like the current page's first child.
Add Child Page
Create a new page like the current page, but set it's parent to the current page. Useful when starting the first child page of a parent.

Page and Pages Menus

Dashboard Menu

Copy Dialog

Add Dialog

A reports action is added to the Admin sidebar menu and displays a list of registered reports.

These reports are very basic, ugly, and are intended to be a simple proof-of-concept for the new Reports API.

  • All Pages
  • All Media
  • All Links and Images
  • Unused Media
  • Missing Media
  • Media By Page
  • Page By Type
  • Page References (grouped by internal/external and sorted alphabetically)
  • Services
  • Plugin Dependencies
todo: Add print functionality to reports
todo: Add email functionality to reports
todo: Add download functionality to reports
todo: Standardize report CSS

The All Links and Images report displays all links and images used on the site, along with the pages that reference them.

The Unused Media report shows media that is not linked from Grav pages.

The Media By Page report shows each page and the media in the page folder.

Additional reports can be registered by the developer using the report service interface.

These tools are very experimental and not well-documented. Use them knowing that the API most likely will change.

The plugin adds additional twig functions to Grav.

todo: add functions

child_page_list()
Returns a list of child pages as links.

Enhancements for working with remodal dialogs have been added.

todo: : document remodal dialogs enhancements

This is a polymer-based widget that allows searching pages by name. Currently, AJAX is not used; (All the page names are initially sent to the client as data). The selected pages ID is used as the form data value.

Usage

    section:
        type: section
        title: Move Page

    parentPageId:
      type: page-picker
      label: Page
      help: New parent page
      autofocus: true
      validate:
        required: true

This is a widget for drag-and-drop support for child pages. It is based off of the Grav sortable pages field.

This is a override of the standard Grav section field with the addition of setting the generated element's tag name and style. The default has no style and a p tag.

Parameters
Name Description Default
tag The element to enclose the section in. p
style The style attribute value. empty

Usage

   description:
      type: section
      style: color:darkgrey;margin:0 1em
      tag: div
      text: >
        When renaming references and titles, the rendered page output is checked.
        If it matches the page's route, the page is flagged.
        Pages with dynamic links will be flagged, 
        but since their source does not contain the link, they might still reference to the old route.

Several full-screen features, functions, and widgets are provided for developers.

todo: : document remodal dialogs enhancements

An API for blazing fast client-side element filtering is included. Simply specify your selectors and text to match.

This will hide all elements with the class item that do not contain the text important

element_text_filter('.item', 'important');

This will hide all item-container classes that do not have visible sub items with the class item.

visible_children_filter('.item-container', '.item');

By combining these 2 filters, you can filter items that contain text, and hide containers with no filtered items.

Features can be individually enabled on the plugin options page.