Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Redmine Plugin Extension and Development

You're reading from   Redmine Plugin Extension and Development If you'd like to customize Redmine to meet your own precise project management needs, this is the ideal guide to understanding and realizing the full potential of plugins. Full of real-world examples and clear instructions.

Arrow left icon
Product type Paperback
Published in Mar 2014
Publisher
ISBN-13 9781783288748
Length 114 pages
Edition Edition
Languages
Tools
Arrow right icon
Author (1):
Arrow left icon
Alex Bevilacqua Alex Bevilacqua
Author Profile Icon Alex Bevilacqua
Alex Bevilacqua
Arrow right icon
View More author details
Toc

Table of Contents (16) Chapters Close

Redmine Plugin Extension and Development
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
1. Introduction to Redmine Plugins FREE CHAPTER 2. Extending Redmine Using Hooks 3. Permissions and Security 4. Attaching Files to Models 5. Making Models Searchable 6. Interacting with the Activity Stream 7. Managing Plugin Settings 8. Testing Your Plugin Releasing Your Plugin Index

Controller hooks


Controller hooks allow custom functionality to be injected into an existing process. A normal use-case for this type of hook is to perform some custom validation on the context object provided to the callback.

In /path/to/redmine/app/models/issue.rb, there is a hook registered for controller_issues_edit_before_save. In order to take advantage of this hook, we would have to provide our own callback function. This can be done as follows:

module Knowledgebase
  module Hooks
    class ControllerIssuesEditBeforeSaveHook < Redmine::Hook::ViewListener
      def controller_issues_edit_before_save(context={})
        if context[:params] && context[:params][:issue]
          if User.current.allowed_to?(:assign_article_to_issue, context[:issue].project)
            if context[:params][:issue][:article_id].present?
              article = KbArticle.find_by_id(context[:params][:issue][:article_id])
              if article.category.project == context[:issue].project
       ...
lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $19.99/month. Cancel anytime
Banner background image