hobo_bootstrap_ui 2.0.0.pre6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +33 -0
- data/VERSION +1 -0
- data/hobo_bootstrap_ui.gemspec +26 -0
- data/lib/hobo_bootstrap_ui/railtie.rb +6 -0
- data/lib/hobo_bootstrap_ui.rb +13 -0
- data/screenshots/select_one_or_new.png +0 -0
- data/taglibs/hobo_bootstrap_ui.dryml +1 -0
- data/taglibs/modal.dryml +89 -0
- data/taglibs/overrides.dryml +6 -0
- data/taglibs/select_one_or_new.dryml +63 -0
- data/vendor/assets/javascripts/hobo-bootstrap-ui/hjq-modal.js +20 -0
- data/vendor/assets/javascripts/hobo_bootstrap_ui.js +2 -0
- data/vendor/assets/stylesheets/hobo_bootstrap_ui.css +3 -0
- metadata +75 -0
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
Additional UI tags for the [hobo_bootstrap theme](https://github.com/Hobo/hobo_bootstrap). Some of these tags are wrappers for the [bootstrap javascript components](twitter.github.com/bootstrap/javascript.html). Others are useful tags that are built on top of those javascript components.
|
2
|
+
|
3
|
+
This plugin also includes an implementation of `<search-results-container>`, replacing the one in `hobo_jquery_ui`.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
rails generate hobo:install_plugin hobo_bootstrap_ui git://github.com/Hobo/hobo_bootstrap_ui.git
|
8
|
+
|
9
|
+
## Documentation
|
10
|
+
|
11
|
+
[Tag documentation](http://cookbook.hobocentral.net/api_plugins/hobo_bootstrap_ui)
|
12
|
+
|
13
|
+
## Versus hobo_jquery_ui
|
14
|
+
|
15
|
+
It is intended that this library will render [hobo_jquery_ui](https://github.com/Hobo/hobo_jquery_ui) and jquery-ui optional.
|
16
|
+
|
17
|
+
At the moment, you can use hobo_bootstrap_ui instead of hobo_jquery_ui if you don't mind the loss of tags such as `<name-one>`.
|
18
|
+
|
19
|
+
hobo_bootstrap_ui and hobo_jquery_ui may both be used in the same Hobo application. In the case of a conflict, the plugin loaded last will be used. `<search-results-container>` is the only current conflict, although hopefully we get bootstrap replacements for `<name-one>` and `<input for="Date">` soon.
|
20
|
+
|
21
|
+
At the momemt, Hobo requires jQuery-UI even if hobo_jquery_ui is not used. We do plan on removing that dependency soon.
|
22
|
+
|
23
|
+
## TODO
|
24
|
+
|
25
|
+
* replace `show` and `hide` in hjq.js to make jQuery-UI optional
|
26
|
+
|
27
|
+
* implement `name-one` using bootstrap typeahead so that a Hobo application without hobo_jquery_ui is Hobo 1.3 compatible
|
28
|
+
|
29
|
+
* implement replacements for the remainder of hobo_jquery_ui's tags.
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
[1]: https://github.com/Hobo/hobo_bootstrap_ui/raw/master/screenshots/select_one_or_new.png
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.0.0.pre6
|
@@ -0,0 +1,26 @@
|
|
1
|
+
name = File.basename( __FILE__, '.gemspec' )
|
2
|
+
version = File.read(File.expand_path('../VERSION', __FILE__)).strip
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
|
7
|
+
s.authors = ['Ignacio Huerta']
|
8
|
+
s.email = 'ignacio@ihuerta.net'
|
9
|
+
s.homepage = 'https://github.com/Hobo/hobo_bootstrap_ui'
|
10
|
+
s.rubyforge_project = 'hobo'
|
11
|
+
s.summary = 'Additional UI tags for the hobo_bootstrap theme'
|
12
|
+
s.description = 'Additional UI tags for the hobo_bootstrap theme'
|
13
|
+
|
14
|
+
s.add_runtime_dependency('hobo_bootstrap', "~> 2.0.0.pre1")
|
15
|
+
|
16
|
+
s.files = `git ls-files -x #{name}/* -z`.split("\0")
|
17
|
+
|
18
|
+
s.name = name
|
19
|
+
s.version = version
|
20
|
+
s.date = Date.today.to_s
|
21
|
+
|
22
|
+
s.required_rubygems_version = ">= 1.3.6"
|
23
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
24
|
+
s.require_paths = ["lib", "taglibs"]
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module HoboBootstrapUi
|
2
|
+
|
3
|
+
VERSION = File.read(File.expand_path('../../VERSION', __FILE__)).strip
|
4
|
+
@@root = Pathname.new File.expand_path('../..', __FILE__)
|
5
|
+
def self.root; @@root; end
|
6
|
+
|
7
|
+
EDIT_LINK_BASE = "https://github.com/Hobo/hobo/edit/bootstrap_template/hobo_bootstrap"
|
8
|
+
|
9
|
+
require 'hobo_bootstrap_ui/railtie' if defined?(Rails)
|
10
|
+
|
11
|
+
class Engine < ::Rails::Engine
|
12
|
+
end
|
13
|
+
end
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
<include src="*"/>
|
data/taglibs/modal.dryml
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
<!--
|
2
|
+
The Bootstrap dialog box, aka [modal](http://twitter.github.com/bootstrap/javascript.html#modals).
|
3
|
+
|
4
|
+
All bootstrap options are supported. Use the `data-` form to adjust the options. Use a blank string for `false` and a non-blank string for true.
|
5
|
+
|
6
|
+
<modal data-backdrop="" data-keyboard="" data-show="1" data-remote="&foo_path">
|
7
|
+
|
8
|
+
The default for data-show has been changed to false. To display the dialog, set data-show="1", use a `<modal-open-button>` or use javascript (`$('#foo-modal').modal('show')`)
|
9
|
+
|
10
|
+
If you want to use `modal` as an alert box, just add content to the default param:
|
11
|
+
|
12
|
+
<modal>Warning! Foo monsters!</modal>
|
13
|
+
|
14
|
+
To use modal to contain a form, you generally want to put the buttons into the footer, requiring you to override the `modal` parameter instead.
|
15
|
+
|
16
|
+
<modal id="new-story-modal">
|
17
|
+
<modal:>
|
18
|
+
<formlet owner="project" with="&this.stories.new" update="stories" success="$('#new-story-modal').modal('hide');">
|
19
|
+
<modal-header>New Story</modal-header>
|
20
|
+
<div class="modal-body">
|
21
|
+
<field-list size="0" fields="title, body, status" />
|
22
|
+
</div>
|
23
|
+
<modal-form-footer/>
|
24
|
+
</formlet>
|
25
|
+
</modal:>
|
26
|
+
</modal>
|
27
|
+
<modal-open-button modal="new-story-modal">New Story</modal-open-button>
|
28
|
+
|
29
|
+
### Attributes
|
30
|
+
|
31
|
+
- `data-show`, `data-backdrop`, `data-keyboard`, `data-remote`: see [Bootstrap documentation](http://twitter.github.com/bootstrap/javascript.html#modals)
|
32
|
+
- `title`: the title. You may also adjust the title via the `modal-header` param.
|
33
|
+
|
34
|
+
-->
|
35
|
+
<def tag="modal" attrs="title">
|
36
|
+
<%
|
37
|
+
attributes['data_show'] ||= false
|
38
|
+
attributes['data_rapid'] = data_rapid('modal')
|
39
|
+
%>
|
40
|
+
<div class="modal hide" tabindex="-1" role="dialog" merge-attrs param="modal">
|
41
|
+
<modal-header param><%= title %></modal-header>
|
42
|
+
<div class="modal-body" param="default"/>
|
43
|
+
<div class="modal-footer" param="modal-footer"/>
|
44
|
+
</div>
|
45
|
+
</def>
|
46
|
+
|
47
|
+
<!-- Bootstrap modal header. See `<modal>` -->
|
48
|
+
<def tag="modal-header">
|
49
|
+
<div class="modal-header">
|
50
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" param="close-button">×</button>
|
51
|
+
<h3 param="default"/>
|
52
|
+
</div>
|
53
|
+
</def>
|
54
|
+
|
55
|
+
<!-- Bootstrap modal footer containing submit and cancel buttons. See `<modal>` -->
|
56
|
+
<def tag="modal-form-footer">
|
57
|
+
<div class="modal-footer" param="default">
|
58
|
+
<submit param label="&t('hobo.actions.submit', :default => 'Submit')"/>
|
59
|
+
<input type="button" param="cancel" class="btn" data-dismiss="modal" aria-hidden="true" value="&t('hobo.actions.cancel', :default => 'Cancel')"/>
|
60
|
+
</div>
|
61
|
+
</def>
|
62
|
+
|
63
|
+
<!--
|
64
|
+
When pressed, will toggle a `<modal>`.
|
65
|
+
|
66
|
+
### Attributes
|
67
|
+
* `modal` (required): the id of a modal
|
68
|
+
* supports all button attributes
|
69
|
+
|
70
|
+
### Example
|
71
|
+
<modal id="hello-modal">Hello!</modal>
|
72
|
+
<modal-open-button modal="hello-modal">Press Me!</modal-open-button>
|
73
|
+
-->
|
74
|
+
<def tag="modal-open-button" attrs="modal">
|
75
|
+
<a href="##{modal}" role="button" class="btn" data-toggle="modal" merge param="default"/>
|
76
|
+
</def>
|
77
|
+
|
78
|
+
|
79
|
+
<!--
|
80
|
+
Defines an `<modal>` and a `<modal-open-button>` and links the two together.
|
81
|
+
|
82
|
+
### Attributes
|
83
|
+
* `id` (optional): the DOM id to use for the modal
|
84
|
+
-->
|
85
|
+
<def tag="modal-and-button">
|
86
|
+
<% attributes["id"]="modal-#{(rand*1000000000).to_i}" unless attributes.has_key?("id") %>
|
87
|
+
<modal-open-button modal="#{attributes['id']}" param />
|
88
|
+
<modal param merge />
|
89
|
+
</def>
|
@@ -0,0 +1,63 @@
|
|
1
|
+
<!-- Adds a small button to a select in order to create a new record within a modal
|
2
|
+
|
3
|
+
For example, if I want to create a new project in stories/new.dryml:
|
4
|
+
|
5
|
+
<new-page>
|
6
|
+
<form:>
|
7
|
+
<field-list:>
|
8
|
+
<project-view:><select-one-or-new/></project-view:>
|
9
|
+
</field-list:>
|
10
|
+
</form:>
|
11
|
+
</new-page>
|
12
|
+
|
13
|
+
You also need to modify the create action of the new record. projects_controller.rb:
|
14
|
+
|
15
|
+
def create
|
16
|
+
hobo_create do
|
17
|
+
if request.xhr?
|
18
|
+
@this = Story.new(:project => @project)
|
19
|
+
else
|
20
|
+
create_response
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
If you are instead in stories/edit.dryml, you need to make sure the new project is autoselected. Add a couple of lines to the previous code:
|
26
|
+
|
27
|
+
def create
|
28
|
+
hobo_create do
|
29
|
+
if request.xhr?
|
30
|
+
@this = Story.new(:project => @project)
|
31
|
+
ajax_update_response(params[:render].values, {}, {:postamble =>
|
32
|
+
"$('#select-one-or-new-Project').val(#{@project.id});"})
|
33
|
+
else
|
34
|
+
create_response
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
-->
|
40
|
+
<def tag="select-one-or-new">
|
41
|
+
<%# Partial %>
|
42
|
+
<div part="select-one-or-new" id="select-one-or-new-#{this_field}" class="pull-left">
|
43
|
+
<div class="input-append">
|
44
|
+
<select-one id="select-one-or-new-#{this_type}"/>
|
45
|
+
<%# Button that triggers the modal %>
|
46
|
+
<modal-open-button style="margin-top:-5px;" modal="myModal-#{this_field}">+</modal-open-button>
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
|
50
|
+
<%# Modal %>
|
51
|
+
<modal id="myModal-#{this_field}">
|
52
|
+
<modal:>
|
53
|
+
<formlet with="&this_type.new" update="select-one-or-new-#{this_field}"
|
54
|
+
complete="$('#myModal-#{this_field}').modal('hide')">
|
55
|
+
<modal-header><%= t('hobo.actions.create', :model => this_type.to_s) %></modal-header>
|
56
|
+
<div class="modal-body">
|
57
|
+
<field-list size="0"/>
|
58
|
+
</div>
|
59
|
+
<modal-form-footer/>
|
60
|
+
</formlet>
|
61
|
+
</modal:>
|
62
|
+
</modal>
|
63
|
+
</def>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
/* dialog */
|
2
|
+
(function($) {
|
3
|
+
var methods = {
|
4
|
+
init: function(annotations) {
|
5
|
+
this.modal({show: !!this.data('show')});
|
6
|
+
}
|
7
|
+
};
|
8
|
+
|
9
|
+
$.fn.hjq_modal = function( method ) {
|
10
|
+
|
11
|
+
if ( methods[method] ) {
|
12
|
+
return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
|
13
|
+
} else if ( typeof method === 'object' || ! method ) {
|
14
|
+
return methods.init.apply( this, arguments );
|
15
|
+
} else {
|
16
|
+
$.error( 'Method ' + method + ' does not exist on hjq_dialog' );
|
17
|
+
}
|
18
|
+
};
|
19
|
+
|
20
|
+
})( jQuery );
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hobo_bootstrap_ui
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0.pre6
|
5
|
+
prerelease: 6
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Ignacio Huerta
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-11-15 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: hobo_bootstrap
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.0.0.pre1
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.0.0.pre1
|
30
|
+
description: Additional UI tags for the hobo_bootstrap theme
|
31
|
+
email: ignacio@ihuerta.net
|
32
|
+
executables: []
|
33
|
+
extensions: []
|
34
|
+
extra_rdoc_files: []
|
35
|
+
files:
|
36
|
+
- README.md
|
37
|
+
- VERSION
|
38
|
+
- hobo_bootstrap_ui.gemspec
|
39
|
+
- lib/hobo_bootstrap_ui.rb
|
40
|
+
- lib/hobo_bootstrap_ui/railtie.rb
|
41
|
+
- screenshots/select_one_or_new.png
|
42
|
+
- taglibs/hobo_bootstrap_ui.dryml
|
43
|
+
- taglibs/modal.dryml
|
44
|
+
- taglibs/overrides.dryml
|
45
|
+
- taglibs/select_one_or_new.dryml
|
46
|
+
- vendor/assets/javascripts/hobo-bootstrap-ui/hjq-modal.js
|
47
|
+
- vendor/assets/javascripts/hobo_bootstrap_ui.js
|
48
|
+
- vendor/assets/stylesheets/hobo_bootstrap_ui.css
|
49
|
+
homepage: https://github.com/Hobo/hobo_bootstrap_ui
|
50
|
+
licenses: []
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options:
|
53
|
+
- --charset=UTF-8
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
- taglibs
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.3.6
|
69
|
+
requirements: []
|
70
|
+
rubyforge_project: hobo
|
71
|
+
rubygems_version: 1.8.24
|
72
|
+
signing_key:
|
73
|
+
specification_version: 3
|
74
|
+
summary: Additional UI tags for the hobo_bootstrap theme
|
75
|
+
test_files: []
|