Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Redmine Gantt Holiday plugin

A Redmine plugin that adds "Holiday Calendar", "Global Weekend & Color Settings", "Sticky Header", "Persistent View Settings", "Persistent Column Widths", and "Bulk Parent-Child Issue Assignment (Oyakodon)" to the Gantt chart for Redmine 6.x and 7.x.

  • Manage holiday calendars by country/company and color-code weekends and holidays on the Gantt chart.
  • Configure weekend days and colors per project — not limited to Sat/Sun; supports Fri/Sat weekends (e.g. Middle Eastern calendars) and other work-week patterns.
  • Fix the date header at the top using an overlay method during vertical scrolling.
  • Horizontal scrolling in the Gantt area via mouse drag (Grab to Scroll).
  • Persist Gantt view settings (zoom, months, relations, progress line, columns) per user.
  • Persist column widths (subject column and selected columns) and restore them after reload.
  • Visually assign or detach multiple child issues to/from a parent issue right on the Gantt chart (Oyakodon feature).
  • Supports 5 languages (English, Japanese, French, Korean, Chinese).

Main Features

1. Holiday Calendar Management & Assignment

  • Multiple Calendars — Add custom calendars (e.g., "Standard", "Company A", "Company B") and assign them per project.
  • CSV Import — Import holiday CSV files for any country or region (auto-detects Shift_JIS/UTF-8; Japan's Cabinet Office holiday CSV works as-is).
  • Official vs. Custom Holiday Control — Unchecking an official holiday marks it as a working day (logical deletion), while custom entries are physically deleted.

2. Global Weekend & Color Settings (per project)

  • Custom weekend days — Choose which days count as the weekend on a per-project basis. Not fixed to Sat/Sun: works for Fri/Sat weekends used in Middle Eastern calendars, or any business with non-standard days off.
  • Per-weekday and holiday colors — Select the color (default / red / blue / gray) for each weekday and for holidays, per project.
  • Fallback — When unset, the Japanese default is used (Sat = blue, Sun = red, holidays = red).
  • Project-specific holidays — Toggle calendar holidays on/off per project, or add project-only holidays, without modifying the shared calendar.

3. Gantt Chart Optimization

  • Weekends and holidays are colored according to the project settings (holidays set as working days are excluded). The default is Saturdays in light blue, Sundays/holidays in light red.
  • Sticky date headers remain visible at the top when scrolling vertically (Overlay approach).
  • Smooth "Grab to Scroll" via mousedown in the Gantt area (a well-behaved implementation that does not interrupt text selection or issue link clicks).

4. Persistent View Settings & Column Widths (Memory)

  • Automatically saves zoom level, number of months, start date, and the toggle states of relations, progress lines (lightning lines), and selected columns to User#preference. Restores the exact previous view state even across projects. Includes a "Clear" button to reset all at once.
  • Saves the width of the subject column and selected columns to localStorage and restores them on page load. Fills a long-standing gap in Redmine core (Feature #31468, open since 2019).

5. Oyakodon Feature — Bulk Parent-Child Assignment on Gantt

A lightweight edit mode on the Gantt chart to visually mass-assign or detach multiple child issues to/from a parent issue.

💡 What is "Oyakodon" ? (For English Speakers / Overseas Developers) "Oyakodon" literally means "Parent-and-Child Rice Bowl" (a traditional Japanese dish with chicken and egg). In this plugin, it is implemented as a playful development slang for "Bulk Parent-Child Issue Assignment" via the Gantt chart context menu.

  • "Devour child issues" (子チケットを食べる): Starts the editing mode. The selected issue becomes the "Parent" (Bowl), and any issues you click on after that are treated as "Children" (Ingredients / Gu).
  • "Itadakimasu" (いただきます / Let's eat): Commits the relationship. Updates parent_issue_id for all selected children at once (Up to 200 issues, safety guards included).
  • "Gochisousama" (ごちそうさま / Thank you for the feast): Instantly detaches the child issue from its parent right from the context menu.

Requirements

  • Redmine: 6.0+ (6.1, 7.0 compatible)
  • DB: PostgreSQL / MySQL / SQLite3

Installation

# 1. Clone
cd /path/to/redmine/plugins
git clone https://github.com/seraph3000/redmine_gantt_holiday.git

# 2. Migration
cd /path/to/redmine
bundle exec rake redmine:plugins:migrate RAILS_ENV=production

# 3. Asset Compile & Restart
bundle exec rake assets:clobber assets:precompile RAILS_ENV=production
systemctl restart httpd

Uninstallation

cd /path/to/redmine
bundle exec rake redmine:plugins:migrate NAME=redmine_gantt_holiday VERSION=0 RAILS_ENV=production
rm -rf plugins/redmine_gantt_holiday
systemctl restart httpd

Changelog

v2.1.2 (2026-07-24)

  • Fixed an issue where the fixed header was misaligned in mobile mode.
  • Column width resizing via touch is now available in PC mode layout. (Behavior may vary depending on device.)

v2.1.1 (2026-07-21)

  • feature: Admin holiday deletion. Individual non-official holidays can now be deleted from the admin screen (official holidays are protected and can only be disabled).
  • feature: Per-year clear on CSV import. Optionally clear the selected year's official holidays before importing, for clean per-branch calendars.

v2.1.0 (2026-07-20)

  • feature: Global support for weekends and colors. Weekend days, per-weekday colors, and holiday color can now be configured per project (falls back to the Japanese default — Sat=blue, Sun=red, holidays=red — when unset).
  • feature: Project-specific holidays. Toggle calendar holidays on/off per project, or add project-only holidays, without modifying the shared calendar.
  • feature: Persistent column widths. Subject column and selected column widths on the Gantt chart are now saved to localStorage and restored on page load. Resolves a long-standing gap in Redmine core (Feature #31468, open since 2019).

Upgrade Notes (v2.1.0)

⚠️ ZIP users: delete these obsolete files before upgrading. If you install by extracting a ZIP (not git pull), files renamed in this version will remain and cause class-loading errors. Delete them manually after upgrading:

rm plugins/redmine_gantt_holiday/app/models/holiday_select.rb
rm plugins/redmine_gantt_holiday/app/models/holiday_value.rb
  • Run migration (new tables for per-project weekend/color and project-specific holidays): bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  • Recompile assets (required for persistent column widths): bundle exec rake assets:clobber assets:precompile RAILS_ENV=production
  • Restart Redmine.

v2.0.17 (2026-07-11)

  • Redmine 7.0 compatibility.
  • Fix: Gantt chart holiday display.

v2.0.16 (2026-06-28)

  • feature: Bulk parent-child relationship editing ("Oyakodon") and instant detachment ("Gochisousama") on the Gantt chart. Optimized the context menu for the Gantt view.

v2.0.15 (2026-04-21)

  • Public release. Holiday color-coding, sticky headers, persistent settings, CSV import, and 5-language support.

License

MIT License

Author

Seraph3000GitHub

About

Visualize holidays on your Redmine Gantt chart to prevent scheduling conflicts and manage project timelines smoothly.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages