jbox-web / redmine_bootstrap_kit

A Redmine plugin which makes developing your own Redmine plugin easy ;)
MIT License
41 stars 20 forks source link
bootstrap fontawesome rails redmine redmine-plugin ruby

Redmine Bootstrap Kit Plugin

GitHub license GitHub release Code Climate

A Redmine plugin which makes developing your own Redmine plugin easy ;)

Why?

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

It provides :

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

Installation

Just clone it in your Redmine plugins directory :

cd REDMINE_ROOT/plugins
git clone https://github.com/jbox-web/redmine_bootstrap_kit.git

What's included?

It provides the following Rails helper methods :

BootstrapKit assets loader :

bootstrap_load_module(rbk_module)

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

The following modules are available :

BootstrapSwitch :

bootstrap_switch_tag(opts = {}, &block)

FontAwesome :

fa_icon(icon, opts = {})
label_with_icon(label, icon, icon_opts = {})

AjaxHelper :

render_flash_messages_as_js(target = '#flash-messages', opts = {})
js_render_template(target, template, opts = {})
js_render_partial(target, partial, opts = {})
js_render(target, content, opts = {})

PresenterHelper :

present(object, klass = nil, *args)

JQuery TagIt :

tag_it_list(id, list_opts = {}, tag_it_opts = {}, &block)

WillPaginateHelper :

paginate(collection, opts = {})

ZeroClipboardHelper:

zero_clipboard_button_for(target)

How to use?

To use Redmine Bootstrap Kit helper methods you must first add :redmine_bootstrap_kit helper in your controller :

class MyPluginController < ApplicationController
  ...

  helper :redmine_bootstrap_kit

end

Then with the bootstrap_load_module method you can load the desired assets in your views :

<% content_for :header_tags do %>
  <%= bootstrap_load_base %>
  <%= bootstrap_load_module(:alerts) %>
  <%= bootstrap_load_module(:label) %>
  <%= bootstrap_load_module(:modals) %>
  <%= bootstrap_load_module(:pagination) %>
  <%= bootstrap_load_module(:switch) %>
  <%= bootstrap_load_module(:tables) %>
  <%= bootstrap_load_module(:tabs) %>
  <%= bootstrap_load_module(:font_awesome) %>
  <%= bootstrap_load_module(:dropdown) %>
  <%= bootstrap_load_module(:tooltip) %>
  <%= bootstrap_load_module(:notify) %>
  <%= bootstrap_load_module(:tag_it) %>
<% end %>

The bootstrap_load_base method call is needed if you want to use provided JS helpers (see below).

To create BootstrapSwitch buttons

In your views :

<% content_for :header_tags do %>
  <%= bootstrap_load_base %>
  <%= bootstrap_load_module(:switch) %>
<% end %>

<p>
  <label>This is a switch button</label>
  <%= bootstrap_switch_tag do %>
    <%= hidden_field_tag "extra[enable]", "false" %>
    <%= check_box_tag "extra[enable]" %>
  <% end %>
</p>

<%= javascript_tag do %>
  $(document).ready(function() { setBootstrapSwitch(); });
<% end %>

To create TagIt lists

In your views :

<% content_for :header_tags do %>
  <%= bootstrap_load_base %>
  <%= bootstrap_load_module(:tag_it) %>
<% end %>

<p>
  <label>This is a TagIt list</label>
</p>

<%= tag_it_list 'plugin_emails_list',
                { name: 'plugin[emails_list][]' },
                { placeholder: '+ add email' } do %>
  <li>john@doe.com</li>
  <li>jane@doe.com</li>
<% end %>

<%= javascript_tag do %>
  $(document).ready(function() { setTagIt(); });
<% end %>

Contribute

You can contribute to this plugin in many ways such as :