alphanodes / additionals

Redmine plugin for easy customization of settings, text and content display by using personal or role-based dashboards (drag&drop), providing wiki macros and act as library for other plugins.
https://www.redmine.org/plugins/additionals
GNU General Public License v2.0
131 stars 43 forks source link
dashboard fontawesome-icons macros redmine redmine-libraries redmine-plugin redmine-wiki

Welcome to Additionals Plugin for Redmine

Additionals is a Redmine plugin for customizing Redmine, providing wiki macros and act as a library/function provider for other Redmine plugins.

Rate at redmine.org Run Linters Run Tests

Requirements

Name requirement
Redmine version >= 5.0
Ruby version >= 3.1
Database version MySQL >= 8.0 or PostgreSQL >= 10

NOTE: If you use MySQL, make sure all database tables using the same storage engine (InnoDB is recommended) and character set (utf8mb4 is recommended). NOTE: For more information use the official Redmine install documentation

Installation

Install additionals plugin for Redmine.

  cd $REDMINE_ROOT
  git clone -b stable https://github.com/alphanodes/additionals.git plugins/additionals
  bundle config set --local without 'development test'
  bundle install
  bundle exec rake redmine:plugins:migrate RAILS_ENV=production

Restart your application server (apache with passenger, nginx with passenger, unicorn, puma, etc.) and Additionals is ready to use.

More information about installation of Redmine plugins, you can find in the official Redmine plugin documentation.

Update

Update additionals plugin.

  cd $REDMINE_ROOT/plugins/additionals
  git pull
  cd ../..
  bundle install
  bundle exec rake redmine:plugins:migrate RAILS_ENV=production

Restart your application server (apache with passenger, nginx with passenger, unicorn, puma, etc.) and additionals is ready to use.

Uninstall

Uninstall additionals plugin.

  cd $REDMINE_ROOT
  bundle exec rake redmine:plugins:migrate NAME=additionals VERSION=0 RAILS_ENV=production
  rm -rf plugins/additionals public/plugin_assets/additionals

Features

NOTE: We reserve the right to remove certain functions again. This is the case, for example, if a function has been included in Redmine Core or conflict with it.

Developer features

As Redmine does not support asset pipeline, we need to install Javascript plugins as Redmine plugins to load them globally.

If no common files are used as library plugin, every plugin has to deliver the same files. And if more than one version of a library is delivered with each Redmine plugin, there is a problem.

Therefore if developer uses this plugin for the provided libraries, everything works smoothly. Don't worry, if you only need a subset of the provided libraries. If you do not load a library, it is not used.

It provides :

And a set of various Rails helper methods (see below).

It provides the following Rails helper methods :

Libraries assets loader

   additionals_library_load(module_name)

This method loads all JS and CSS files needed by the required module.

The following modules are available :

Redmine Plugins, which are using additionals

If you know other plugins, which are using additionals, please let us know or create a PR.

You need a feature

additionals is Open-source and it is available at https://github.com/alphanodes/additionals

If you want to implement new features in it or if you want to change something, you can provide a pull request.

The plugin is maintained by AlphaNodes for free as far as possible. In case you want a feature, which is not available and you are not capable of implementing it yourself, you can request this feature from AlphaNodes.

We are an Open-source_ service company from Munich. Among other things, we offer commercial plugin development (e.g. implementation function request, expansion of functionality, etc). As we know our plugin at its best we are glad to take this job from you. In case the requested plugin changes still fit to the plugin purpose. Please, contact us in case you are interested in commercial plugin development.

Additionals plugin manual

The plugin configuration takes place in the administration area by a user with administration permission. Go to Plugins / Additionals to open it.

The additionals plugin configuration is divided into several sections, described below.

General section

The general section tab allows you to define some special behaviours for your Redmine installation.

Contents

The following plugin options are available to be edited by users with administration rights in the area Contents:

Settings

And the following options can be edited by users with administratios rights in the area Settings:

Disable modules

This feature will hide the selected modules in the project settings. Even if the module is enabled for usage in the admin area it can not be selected by the project manager within the projects. Please note, if these modules already activated in existing projects, you will have to change and re-save the respective project settings first.

NOTE: Please restart the application server, if you make changes to the external urls settings as well as if you activate the Smileys support. Tip: You can use the following manual smiley codes: :), =), :D, =D, :'(, :(, ;), :P, :O, :/, :S, :|, :X, :*, O:), >:), B), (!), (?), (v), (x) and (/)

Wiki section

If you click on this tab you get to the area, where users with administration rights can customize contents and settings for your Wiki pages in Redmine.

Contents

Global wiki sidebar

NOTE: Use simple text, macros and wiki syntax for your content.

PDF Wiki settings

Macros section

Redmine macros can be used in the Wiki of a project or in the text area of an issue. For more information on how to add macros use the Redmine help documentation.

The Macros section of the additionals plugin lists all available macros that the logged in user can use with the macro button of the wiki toolbar. If you leave them deactivated they are all available to your users for selection.

Macros marked here are not offered for selection. This allows you to limit the scope of the list for a better usability.

Macro settings!

Figure: If all macros are deactivated the Macro button of the Wiki toolbar will disappear.

NOTE: If you deactivate some macros here this does not mean the user may not implement them. All available macros of installed plugins will work even if they are not part of the macro button. The macro button is just a little helper for Redmine users with no macro experience to make it easier for them to use macros or to remember them.

Macro button for Wiki toolbar

Many plugins are equipped with a number of useful macros. Unfortunately it is difficult for the normal user to find out which macros are usable without a look at the plugin documentation.

With the macro button for the Wiki toolbar we want to simplify the implementation of macros for users somehow and above all also promote. Because the use of macros belongs to the daily tools of the trade when dealing with the Wiki.

Macro button!

Figure: The Wiki toolbar macro button is a useful helper in order to select available project macros for your content.

The macro button for the Wiki toolbar is acessible for every user of a project. For reasons of clarity, the list of available macros is restricted according to the following criteria.

A user can see in the macro list:

The function is easy to use. Just click the button with the left mouse. The dropdown list shows all your available macros. Select the one you want to use. The selected macro will be pasted to the cursor position. All you have to do is adapt missing parameters (if needed).

Issues section

Here you can define issue rules, which are used in issues of all projects.

NOTE: You can use wiki syntax for your text (use it wisely). Make sure the wiki page you link to is accessible for every user. The default issue text can be overwritten within the project settings.

NOTE: All options above only work for users with appropriate issue tracking rights in the administration area "Roles and permissions" (view, create, edit).

If Assignee is unchanged and the issue status changed from x to y, than the author is assigned to the issue. Issues should be automatically assigned to the author, if the status changes to Approval.

NOTE: Use Case for this option is that issues should be automatically assigned to author, if the status changes to Approval.

Current issue status x is only allowed if Assignee is the current user.

NOTE: Is this function used in combination with the setting option Issue status on sidebar then the current user will automatically be assigned to the issue while changing the issue status. Use Case here: Users are only allowed to change the status to In Progress if they are the person who is actually working on the issue right now.

If Assigned to is not assigned to a user and the new issue status is x then the issue is auto assigned to the first group with users of the pre-defined role.

NOTE: Use Case: The issue author does not know whom the issue should be assigned to. Or he is unsure who will be responsible for solving the task. In that case the issue for example with the status "To Do" is automatically assigned to the first group, which does contain a user of the pre-selected project manager role. Imagine you have a group called "Support", and there are users assigend to the "Manager" role, this support group will be automatically adressed to solve the issue when the issue author saves it.

Time log for issues required.

NOTE: For each issue of the selected trackers, a time logging is necessary if the issue is to receive one of the defined status properties. The time logging is not required if there does no rights exist for the creation of time logging or if the user has the authorization Time logging not required.

Please note, that a user with administration rights will always be able to do all those things a normal user is not allowed to.

Web APIs section

In case you want to use the Gmap Macro you have to implement your Google API Key into the field Google Maps Embed API Key first. After this you can use the Macro everywhere inside Redmine (Wiki, Issues - everywhere you use wiki syntax).

Help menu

We have implemented a help symbol in the global top menu of the header section that opens the new help menu.

There you find useful manual links to various Redmine related topics which will automatically be implemented, when the plugin has been installed. The menu is divided into two parts.

The following menu items are currently implemented if a plugin is installed, that supports this additionals-function:

Known external plugins that have a user manual and support this feature are currently:

User account

The following option has been added to the Auto-watch section in the user account:

If this option is activated, you will be set as a watcher based on the assignment. The aim is to be notified of changes even without prior interaction with the issue. For example, if the issue is assigned to another user in the meantime.

Auto watch

Plugin project settings

In the project configuration the Issues trackingsection allows you to store system wide Note for new issues, which will be displayed on top of new issues (or in the edit mode of an issue). This system wide information text can be changed per project within the project settings. You can change the system settings in your project Settings area section Issue tracking.

Issue notes

Choose one of the following options:

Name Description
System There is nothing you can do. The default system wide text will be used.
disabled This disables the Note for new issues completely.
Project This option allows you to define your own, project relevant text as Note for new issues.

NOTE: You can use wiki syntax for your text (use it wisely). Make sure the wiki page you link to is accessible for every user. The default issue text can be overwritten within the project settings.

Additionals permissions

The following role permissions are provided by the plugin and must be configured in the administration area Roles and permissions for the plugin functions to make sure it's working properly.

According to the selected Role you can activate / deactivate the following option:

NOTE: This setting is also taken into account in all related query lists (e.g. issues, spent time etc.). So that the members with this role are also hidden there. Important: If the user has in one project a role, that allows him / her to view a specific "hidden role" this rule is not taken into account anymore.

According to the selected Role you can activate / deactivate the following permissions:

Dashboards

The additionals plugin comes with dashboard support (Drag & Drop). The Dashboard feature of the additionals plugin provides customizable areas to display and organize content from Redmine and Redmine plugins that support the functionality.

Specifically, you can customize the traditional Redmine main page, as well as the project overview pages according to your needs using the available dashboard blocks. The goal is to give the viewer an immediate overview of the issues or to display the metrics that are important to you.

The dashboard configuration takes place directly in Redmine:

Dashboard support

Figure shows the main areas of the dashboard function

Dashboard examples

With the Dashboard of the additionals plugin for Redmine you can for example:

NOTE: When using the dashboard function make sure you have already configured the additionals permissions the way you need them.

Dashboard permissions

If you want to use the dashboard functionality you need to configure the permissions for the respective user roles, which are:

Dashboard blocks

The following blocks are delivered as standard when using the additionals dashboard function.

General blocks for all areas (e.g. Home and Project overview) are:

Special blocks for the welcome page Home are:

Special blocks for Project overview are:

NOTE: These are the basic blocks that come with the additionals plugin dashboard functionality. Other plugins, that also support the Drag&Drop dashboard function may deliver additional blocks for selection.

NOTE: Notes about caching: All blocks are cached asynchron (every 30 seconds). The RSS Feed blocks are cached asynchron (every 10 minutes). The time tracking block is chached asynchron (every 1 hour).

Default Dashboards

When installing the Additionals plugin it comes with default dashboards for the Redmine Home page as well as the Redmine Project overview page. The typical default dashboard has the following key options:

In case you want to restore the default dashboard you can simply add a new one or arrange an existing one by using the following blocks and position them in the left or right area.

Dashboard FAQ

Is there a restore function?

No, there is no restore function for your default dashboard. If you add dashboard blocks you don't like, just remove them and add other ones.

I messed up my default Dashboard

There is nothing bad about it. Just remove the dashboard blocks you don't like and start over. The best way to start a new default dashboard anyway is to create a new dashboard, first and add the blocks you like. If everything is the way you want it, make it "Default". Keep the old "Default" as backup.

I want to protect the Dashboard from accidental changes

A protection against accidental deletion / editing is the option "Locked". Anyone with dashboard edit permission can enable/disable it. If enabled a little locked symbol is displayed at the top right corner so you can see, the dashboard is protected. You can unlock it any time to do your changes. It is not possible to change locked dashboards.

I accidently deleted a Dashboard block

This will always happen, if you work as user with the appropriate permission to do so (e.g. administration permissions). We recommend not do work with those permission in your regular work day. Create your dashboards one time and switch user permissions afterwards. So this will not happen again.

How many default Dashboards can be created?

There is just one system default dashboard possible for every area. This means one default dashboard for the Redmine "Home" page. And one for the general project overview page. But you can create also one default for a specific project overview page, which will than be "Project default".

All you need to do is:

Dashboard support

Figure shows how to set a project default dashboard by selecting a specific project from the dropdown list.

Does every user sees the content of every Dashboard block?

You do not control the content a user in your project can view via the dashboard block you add. You need to take care of content view permissions by setting up the correct user permissions in the administration area "Roles and permissions". Those permissions are relevant for the content a user can view in your project and must be set correctly. If you want a dashboard for your own, all you need to do is, create a new dashboard and set Visible to the option to me only.

I want to use different dashboards for my employees than for Anonymous users / Non members

For Anonymous users / Non members use the normal "default dashboard" for the Redmine start page and / or Redmine project page. Because they will usually see the default dashboard and the blocks placed there. They will not be able to switch between different dashboards.

And for your employees create own dashboards. You define which role has access to it in the dashboard configuration. Employees of the respective roles can then simply switch from the standard dashboard to the role-based dashboard in case it will not be displayed on the first visit.

What happens with my project overview or start page after the additionals plugin has been deinstalled?

If the plugin was uninstalled correctly, then the Redmine start page, as well as the project overview page will correspond to the usual view again by default.

This means that you will only see the blocks that Redmine has permanently placed there (e.g. welcome text message, latest news), or the blocks that are placed there by installed Redmine plugins.

The pages can no longer be customized flexibly. You no longer have any influence on the content that is offered there.

Developer Information

You are a plugin developer and want to support Dashboards for your plugin as well? Great! Thank you for that. Learn how to implement Dashboard blocks in your plugins. There are only two things required for that:

NOTE: Examples: Go to https://github.com/alphanodes/additionals/tree/main/app/views/dashboards/blocks for examples.

NOTE: Examples: Go to https://github.com/alphanodes/additionals/blob/main/app/models/dashboard_content.rb#L29 for examples for that.

Overwrite it with prepend (not alias_method) to get no conflicts with other plugins. See redmine_git_hosting for an example implementation for a block template and a block definition.

That's it. As you can see, it's not so hard. In case of further questions use the issue tracking system for this project on GitHub.

Footnotes:

Contact and Support

For questions or feedback on the plugin functions, pull requests, issues use only the issue system as a communication channel. Thank you.