typus 3.1.2 → 3.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +23 -0
- data/Gemfile +5 -5
- data/README.md +8 -8
- data/app/assets/javascripts/typus/application.js +1 -1
- data/app/assets/javascripts/typus/jquery.application.js +25 -28
- data/app/controllers/admin/resources_controller.rb +1 -1
- data/app/helpers/admin/resources/data_types/belongs_to_helper.rb +3 -1
- data/app/helpers/admin/resources/data_types/dragonfly_helper.rb +1 -1
- data/app/helpers/admin/resources/data_types/has_and_belongs_to_many_helper.rb +3 -3
- data/app/helpers/admin/resources/data_types/has_many_helper.rb +2 -2
- data/app/helpers/admin/resources/data_types/has_one_helper.rb +1 -1
- data/app/helpers/admin/resources/data_types/paperclip_helper.rb +2 -2
- data/app/helpers/admin/resources/form_helper.rb +1 -1
- data/app/helpers/admin/resources/table_helper.rb +2 -2
- data/app/views/admin/dashboard/styles.html.erb +94 -90
- data/app/views/admin/dashboard/widgets/_applications.html.erb +1 -1
- data/app/views/admin/dashboard/widgets/_models.html.erb +1 -1
- data/app/views/admin/dashboard/widgets/_models_extended.html.erb +1 -1
- data/app/views/admin/resources/_form.html.erb +1 -1
- data/app/views/admin/resources/edit.html.erb +7 -5
- data/app/views/admin/templates/_belongs_to.html.erb +8 -2
- data/app/views/admin/templates/_date.html.erb +0 -5
- data/app/views/admin/templates/_datetime.html.erb +0 -5
- data/app/views/admin/templates/_has_and_belongs_to_many.html.erb +14 -12
- data/app/views/admin/templates/_text_with_ckeditor_and_assets.html.erb +1 -1
- data/config/routes.rb +2 -2
- data/lib/generators/typus/config_generator.rb +14 -9
- data/lib/support/string.rb +1 -1
- data/lib/typus.rb +3 -2
- data/lib/typus/configuration.rb +3 -3
- data/lib/typus/controller/autocomplete.rb +13 -0
- data/lib/typus/controller/format.rb +1 -1
- data/lib/typus/controller/headless.rb +3 -1
- data/lib/typus/i18n.rb +3 -4
- data/lib/typus/orm/active_record/class_methods.rb +4 -4
- data/lib/typus/orm/base.rb +2 -2
- data/lib/typus/resources.rb +1 -1
- data/lib/typus/version.rb +1 -1
- data/typus.gemspec +3 -2
- data/vendor/assets/chosen/LICENSE.md +24 -0
- data/vendor/assets/chosen/chosen.css +58 -24
- data/vendor/assets/chosen/chosen.jquery.js +888 -0
- data/vendor/assets/chosen/typus/chosen-sprite.png +0 -0
- metadata +27 -14
- data/vendor/assets/chosen/chosen-sprite.png +0 -0
- data/vendor/assets/chosen/chosen.jquery.min.js +0 -10
data/CHANGELOG
CHANGED
@@ -1,5 +1,28 @@
|
|
1
1
|
= 3.2.0 (unreleased)
|
2
2
|
|
3
|
+
= 3.1.3 (unreleased)
|
4
|
+
|
5
|
+
* [CHANGED] Added `Typus.chosen` so we can disable "Chosen". This will
|
6
|
+
be in Typus until "Chosen" supports remote data calls.
|
7
|
+
|
8
|
+
* [NEW] This is not really new ... I've taken back the autocomplete
|
9
|
+
feature which will be used eventually by "Chosen" once they support
|
10
|
+
remote calls.
|
11
|
+
|
12
|
+
* [CHANGED] Typus::Resources.minute_step is now nil by default.
|
13
|
+
|
14
|
+
* [CHANGED] Date and DateTime selectors should not set current date by default.
|
15
|
+
|
16
|
+
* [CHANGED] Generator now stores model configuration in a file with the
|
17
|
+
name of the model, not the plural.
|
18
|
+
|
19
|
+
* [CHANGED] Generators can be run without setting up a database.
|
20
|
+
|
21
|
+
* [CHANGED] We do not longer hide search boxes on Chosen. Apparently
|
22
|
+
it has been fixed: https://github.com/harvesthq/chosen/commit/d4c7005b5c
|
23
|
+
|
24
|
+
* [FIXED] Detaching a Paperclip was not working.
|
25
|
+
|
3
26
|
= 3.1.2
|
4
27
|
|
5
28
|
* [CHANGED] Images, links and belongs_to associations do not have links
|
data/Gemfile
CHANGED
@@ -42,18 +42,18 @@ gem "jquery-rails"
|
|
42
42
|
gem "ckeditor-rails", "0.0.2"
|
43
43
|
|
44
44
|
# Alternative authentication
|
45
|
-
gem "devise", "~> 1.4.
|
45
|
+
gem "devise", "~> 1.4.7"
|
46
46
|
|
47
47
|
# Asset Management with Dragonfly
|
48
|
-
gem "dragonfly", "~> 0.9"
|
48
|
+
gem "dragonfly", "~> 0.9.8"
|
49
49
|
gem "rack-cache", :require => "rack/cache"
|
50
50
|
|
51
51
|
# Asset Management with Paperclip
|
52
|
-
gem "paperclip", "~> 2.
|
52
|
+
gem "paperclip", "~> 2.4.2"
|
53
53
|
|
54
54
|
# MongoDB
|
55
|
-
gem "mongoid", "~> 2.
|
56
|
-
gem "bson_ext", "~> 1.
|
55
|
+
gem "mongoid", "~> 2.3.0"
|
56
|
+
gem "bson_ext", "~> 1.4.0"
|
57
57
|
|
58
58
|
group :test do
|
59
59
|
gem "shoulda-context", "~> 1.0.0.beta1"
|
data/README.md
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
# Typus: Admin Panel for Ruby on Rails applications
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
[![Build Status](https://secure.travis-ci.org/typus/typus.png)](http://travis-ci.org/typus/typus)
|
4
|
+
|
5
|
+
**Typus** is a control panel for [Ruby on Rails][rails] applications to
|
6
|
+
allow trusted users edit structured content.
|
5
7
|
|
6
8
|
It’s not a CMS with a full working system but it provides a part of the
|
7
9
|
system: authentication, permissions and basic look and feel for your
|
@@ -42,7 +44,7 @@ and go to <http://0.0.0.0:3000/admin>.
|
|
42
44
|
|
43
45
|
## Testing
|
44
46
|
|
45
|
-
To test clone the
|
47
|
+
To test, clone the repo and run the following commands:
|
46
48
|
|
47
49
|
$ git clone git://github.com/typus/typus.git
|
48
50
|
$ bundle install --path vendor/bundle
|
@@ -56,15 +58,13 @@ user to be able to run tests.
|
|
56
58
|
## Links
|
57
59
|
|
58
60
|
- [Documentation](http://docs.typuscmf.com/)
|
59
|
-
- [
|
60
|
-
- [Source Code][typus] and [RubyGems][typus_gem]
|
61
|
+
- [RubyGems][typus_gem]
|
61
62
|
- [Mailing List](http://groups.google.com/group/typus)
|
62
63
|
- [Contributors List](http://github.com/typus/typus/contributors)
|
63
|
-
- [Travis Builds](http://travis-ci.org/#!/typus/typus)
|
64
64
|
|
65
65
|
## License
|
66
66
|
|
67
|
-
Typus is released under the MIT license.
|
67
|
+
**Typus** is released under the MIT license.
|
68
68
|
|
69
69
|
[typus]: http://github.com/typus/typus
|
70
70
|
[typus_demo]: http://demo.typuscmf.com/
|
@@ -72,4 +72,4 @@ Typus is released under the MIT license.
|
|
72
72
|
[typus_gem]: http://rubygems.org/gems/typus
|
73
73
|
[paperclip]: http://rubygems.org/gems/paperclip
|
74
74
|
[dragonfly]: http://rubygems.org/gems/dragonfly
|
75
|
-
[rails]: http://rubyonrails.org/
|
75
|
+
[rails]: http://rubyonrails.org/
|
@@ -2,7 +2,7 @@ $(document).ready(function() {
|
|
2
2
|
|
3
3
|
$("#quicksearch").searchField();
|
4
4
|
|
5
|
-
$(".resource :input", document.myForm).bind("change", function() { setConfirmUnload(true); });
|
5
|
+
$(".resource :input", document.myForm).bind("change", function() { Typus.setConfirmUnload(true); });
|
6
6
|
|
7
7
|
$("a.fancybox").fancybox({
|
8
8
|
'titlePosition': 'over',
|
@@ -11,27 +11,11 @@ $(document).ready(function() {
|
|
11
11
|
'scrolling': false,
|
12
12
|
});
|
13
13
|
|
14
|
-
$(".iframe").fancybox(
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
'transitionOut': 'none',
|
20
|
-
'type': 'iframe',
|
21
|
-
'centerOnScroll': true,
|
22
|
-
'scrolling': false,
|
23
|
-
onClosed: function() {
|
24
|
-
if (Typus.parent_location_reload) {
|
25
|
-
parent.location.reload(true);
|
26
|
-
} else {
|
27
|
-
var attribute = Typus.resource_attribute;
|
28
|
-
var text = Typus.resource_to_label;
|
29
|
-
var value = Typus.resource_id;
|
30
|
-
$(attribute).append(new Option(text, value, true, true));
|
31
|
-
$(".chzn-select").trigger("liszt:updated");
|
32
|
-
}
|
33
|
-
},
|
34
|
-
});
|
14
|
+
$(".iframe").fancybox(Typus.fancyboxDefaults);
|
15
|
+
|
16
|
+
$(".iframe_with_page_reload").fancybox(
|
17
|
+
$.extend(Typus.fancyboxDefaults, { onClosed: Typus.reloadParent })
|
18
|
+
);
|
35
19
|
|
36
20
|
// This method is used by Typus::Controller::Bulk
|
37
21
|
$(".action-toggle").click(function() {
|
@@ -40,16 +24,29 @@ $(document).ready(function() {
|
|
40
24
|
$('.action-toggle').each(function() { this.checked = status; });
|
41
25
|
});
|
42
26
|
|
43
|
-
$(".chzn-select").chosen();
|
44
|
-
|
45
27
|
});
|
46
28
|
|
47
|
-
Typus = {}
|
29
|
+
var Typus = {};
|
30
|
+
|
31
|
+
Typus.fancyboxDefaults = {
|
32
|
+
'width': 720,
|
33
|
+
'height': '90%',
|
34
|
+
'autoScale': false,
|
35
|
+
'transitionIn': 'none',
|
36
|
+
'transitionOut': 'none',
|
37
|
+
'type': 'iframe',
|
38
|
+
'centerOnScroll': true,
|
39
|
+
'scrolling': false,
|
40
|
+
};
|
41
|
+
|
42
|
+
Typus.setConfirmUnload = function(on) {
|
43
|
+
window.onbeforeunload = (on) ? Typus.unloadMessage : null;
|
44
|
+
}
|
48
45
|
|
49
|
-
function
|
50
|
-
|
46
|
+
Typus.reloadParent = function() {
|
47
|
+
if (Typus.parent_location_reload) parent.location.reload(true);
|
51
48
|
}
|
52
49
|
|
53
|
-
function
|
50
|
+
Typus.unloadMessage = function () {
|
54
51
|
return "You have entered new data on this page. If you navigate away from this page without first saving your data, the changes will be lost.";
|
55
52
|
}
|
@@ -190,7 +190,7 @@ class Admin::ResourcesController < Admin::BaseController
|
|
190
190
|
end
|
191
191
|
|
192
192
|
def set_eager_loading
|
193
|
-
if (eager_loading = @resource.reflect_on_all_associations(:belongs_to).reject { |i| i.options[:polymorphic] }.map
|
193
|
+
if (eager_loading = @resource.reflect_on_all_associations(:belongs_to).reject { |i| i.options[:polymorphic] }.map(&:name)).any?
|
194
194
|
@resource = @resource.includes(eager_loading)
|
195
195
|
end
|
196
196
|
end
|
@@ -25,9 +25,11 @@ module Admin::Resources::DataTypes::BelongsToHelper
|
|
25
25
|
related.order(related.typus_order_by).map { |p| [p.to_label, p.id] }
|
26
26
|
end
|
27
27
|
|
28
|
+
attribute_id = "#{@resource.name.underscore}_#{attribute}_id"
|
29
|
+
|
28
30
|
render "admin/templates/belongs_to",
|
29
31
|
:attribute => attribute,
|
30
|
-
:attribute_id =>
|
32
|
+
:attribute_id => attribute_id,
|
31
33
|
:form => form,
|
32
34
|
:related_fk => related_fk,
|
33
35
|
:related => related,
|
@@ -5,7 +5,7 @@ module Admin::Resources::DataTypes::DragonflyHelper
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def link_to_detach_attribute_for_dragonfly(attribute)
|
8
|
-
validators = @item.class.validators.delete_if { |i| i.class != ActiveModel::Validations::PresenceValidator }.map
|
8
|
+
validators = @item.class.validators.delete_if { |i| i.class != ActiveModel::Validations::PresenceValidator }.map(&:attributes).flatten.map(&:to_s)
|
9
9
|
attachment = @item.send(attribute)
|
10
10
|
|
11
11
|
if attachment.present? && !validators.include?(attribute) && attachment
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Admin::Resources::DataTypes::HasAndBelongsToManyHelper
|
2
2
|
|
3
3
|
def table_has_and_belongs_to_many_field(attribute, item)
|
4
|
-
item.send(attribute).map
|
4
|
+
item.send(attribute).map(&:to_label).join(", ")
|
5
5
|
end
|
6
6
|
|
7
7
|
alias_method :table_has_many_field, :table_has_and_belongs_to_many_field
|
@@ -22,9 +22,9 @@ module Admin::Resources::DataTypes::HasAndBelongsToManyHelper
|
|
22
22
|
locals = { :attribute => attribute,
|
23
23
|
:attribute_id => "#{model}_#{attribute}",
|
24
24
|
:related_klass => klass,
|
25
|
-
:related_items =>
|
25
|
+
:related_items => @item.send(attribute),
|
26
26
|
:related_ids => "#{model}[#{resource_ids}][]",
|
27
|
-
:values =>
|
27
|
+
:values => klass,
|
28
28
|
:form => form,
|
29
29
|
:label_text => label_text.html_safe,
|
30
30
|
:html_options => html_options }
|
@@ -37,12 +37,12 @@ module Admin::Resources::DataTypes::HasManyHelper
|
|
37
37
|
:action => "new",
|
38
38
|
:_popup => true }
|
39
39
|
|
40
|
-
link_to Typus::I18n.t("Add New"), default_options.merge(options), { :class => "
|
40
|
+
link_to Typus::I18n.t("Add New"), default_options.merge(options), { :class => "iframe_with_page_reload" }
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
def set_has_many_resource_actions
|
45
|
-
@resource_actions = [["Edit", { :action => "edit", :_popup => true }, { :class => '
|
45
|
+
@resource_actions = [["Edit", { :action => "edit", :_popup => true }, { :class => 'iframe_with_page_reload' }],
|
46
46
|
["Trash", { :action => "destroy" }, { :confirm => "Trash?" } ]]
|
47
47
|
end
|
48
48
|
|
@@ -24,7 +24,7 @@ module Admin::Resources::DataTypes::HasOneHelper
|
|
24
24
|
:action => "new",
|
25
25
|
:_popup => true }
|
26
26
|
|
27
|
-
link_to Typus::I18n.t("Add New"), default_options.merge(options), { :class => "
|
27
|
+
link_to Typus::I18n.t("Add New"), default_options.merge(options), { :class => "iframe_with_page_reload" }
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -6,14 +6,14 @@ module Admin::Resources::DataTypes::PaperclipHelper
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def link_to_detach_attribute_for_paperclip(attribute)
|
9
|
-
validators = @item.class.validators.delete_if { |i| i.class != ActiveModel::Validations::PresenceValidator }.map
|
9
|
+
validators = @item.class.validators.delete_if { |i| i.class != ActiveModel::Validations::PresenceValidator }.map(&:attributes).flatten.map(&:to_s)
|
10
10
|
attachment = @item.send(attribute)
|
11
11
|
|
12
12
|
if attachment.exists? && !validators.include?("#{attribute}_file_name") && attachment
|
13
13
|
attribute_i18n = @item.class.human_attribute_name(attribute)
|
14
14
|
label_text = <<-HTML
|
15
15
|
#{attribute_i18n}
|
16
|
-
<small>#{link_to Typus::I18n.t("Remove"), { :action => 'update', :id => @item.id, :
|
16
|
+
<small>#{link_to Typus::I18n.t("Remove"), { :action => 'update', :id => @item.id, :_nullify => attribute, :_continue => true }, :confirm => Typus::I18n.t("Are you sure?")}</small>
|
17
17
|
HTML
|
18
18
|
label_text.html_safe
|
19
19
|
end
|
@@ -21,7 +21,7 @@ module Admin::Resources::TableHelper
|
|
21
21
|
association = model.reflect_on_association(key.to_sym)
|
22
22
|
order_by = association ? association.foreign_key : key
|
23
23
|
|
24
|
-
if (model.model_fields.map(&:first).map
|
24
|
+
if (model.model_fields.map(&:first).map(&:to_s).include?(key) || model.reflect_on_all_associations(:belongs_to).map(&:name).include?(key.to_sym))
|
25
25
|
sort_order = case params[:sort_order]
|
26
26
|
when 'asc' then ['desc', '↓']
|
27
27
|
when 'desc' then ['asc', '↑']
|
@@ -50,7 +50,7 @@ module Admin::Resources::TableHelper
|
|
50
50
|
resource_actions.map do |body, url, options, proc|
|
51
51
|
next if proc && proc.respond_to?(:call) && proc.call(item) == false
|
52
52
|
{ :message => Typus::I18n.t(body),
|
53
|
-
:url => { :controller => "/admin/#{model.to_resource}", :id => item.id }.merge(
|
53
|
+
:url => params.dup.cleanup.merge({ :controller => "/admin/#{model.to_resource}", :id => item.id }).merge(url),
|
54
54
|
:options => options }
|
55
55
|
end
|
56
56
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
<div class="grid_2">
|
2
2
|
|
3
3
|
<h2>Header (h2) <small>Small <a href="#">link</a></small></h2>
|
4
4
|
|
@@ -26,124 +26,128 @@
|
|
26
26
|
<li>Lorem incididunt</li>
|
27
27
|
</ul>
|
28
28
|
|
29
|
-
|
29
|
+
</div>
|
30
30
|
|
31
|
-
<
|
31
|
+
<div class="grid_10">
|
32
32
|
|
33
|
-
<
|
34
|
-
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
|
35
|
-
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
36
|
-
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
|
37
|
-
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
|
38
|
-
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
33
|
+
<h2>Header (h2) <small>Small <a href="#">link</a></small></h2>
|
39
34
|
|
40
|
-
<blockquote>
|
41
35
|
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
|
42
36
|
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
|
43
37
|
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
44
|
-
consequat
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
<h3>Header (h3)</h3>
|
70
|
-
|
71
|
-
<p>
|
72
|
-
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
|
73
|
-
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
|
74
|
-
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
75
|
-
consequat.
|
76
|
-
</p>
|
77
|
-
|
78
|
-
<h2>Boxes</h2>
|
79
|
-
|
80
|
-
<div class="box">
|
38
|
+
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
|
39
|
+
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
|
40
|
+
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
41
|
+
|
42
|
+
<blockquote>
|
43
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
|
44
|
+
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
|
45
|
+
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
46
|
+
consequat.</p>
|
47
|
+
|
48
|
+
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
|
49
|
+
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
|
50
|
+
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
51
|
+
</blockquote>
|
52
|
+
|
53
|
+
<pre>
|
54
|
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
|
55
|
+
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
|
56
|
+
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
57
|
+
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
|
58
|
+
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
|
59
|
+
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
60
|
+
</pre>
|
61
|
+
|
81
62
|
<p>
|
82
63
|
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
|
83
64
|
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
|
84
65
|
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
85
66
|
consequat.
|
86
67
|
</p>
|
87
|
-
</div>
|
88
68
|
|
89
|
-
<
|
90
|
-
<h3>Header (h3)</h3>
|
91
|
-
<ul>
|
92
|
-
<li>Lorem ipsum dolor sit amet</li>
|
93
|
-
<li>Duis aute irure dolor in reprehenderit in voluptate</li>
|
94
|
-
<li>Laboris nisi ut aliquip ex ea commodo</li>
|
95
|
-
</ul>
|
96
|
-
</div>
|
69
|
+
<p><a href="#">Link to self</a></p>
|
97
70
|
|
98
|
-
<div class="box">
|
99
71
|
<h3>Header (h3)</h3>
|
72
|
+
|
100
73
|
<p>
|
101
74
|
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
|
102
75
|
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
|
103
76
|
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
104
77
|
consequat.
|
105
78
|
</p>
|
106
|
-
<ul>
|
107
|
-
<li>Lorem ipsum dolor sit amet</li>
|
108
|
-
<li>Duis aute irure dolor in reprehenderit in voluptate</li>
|
109
|
-
<li>Laboris nisi ut aliquip ex ea commodo</li>
|
110
|
-
</ul>
|
111
|
-
</div>
|
112
79
|
|
113
|
-
<
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
80
|
+
<h2>Boxes</h2>
|
81
|
+
|
82
|
+
<div class="box">
|
83
|
+
<p>
|
84
|
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
|
85
|
+
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
|
86
|
+
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
87
|
+
consequat.
|
88
|
+
</p>
|
89
|
+
</div>
|
90
|
+
|
91
|
+
<div class="box">
|
92
|
+
<h3>Header (h3)</h3>
|
93
|
+
<ul>
|
94
|
+
<li>Lorem ipsum dolor sit amet</li>
|
95
|
+
<li>Duis aute irure dolor in reprehenderit in voluptate</li>
|
96
|
+
<li>Laboris nisi ut aliquip ex ea commodo</li>
|
97
|
+
</ul>
|
98
|
+
</div>
|
99
|
+
|
100
|
+
<div class="box">
|
101
|
+
<h3>Header (h3)</h3>
|
102
|
+
<p>
|
103
|
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
|
104
|
+
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
|
105
|
+
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
106
|
+
consequat.
|
107
|
+
</p>
|
108
|
+
<ul>
|
109
|
+
<li>Lorem ipsum dolor sit amet</li>
|
110
|
+
<li>Duis aute irure dolor in reprehenderit in voluptate</li>
|
111
|
+
<li>Laboris nisi ut aliquip ex ea commodo</li>
|
112
|
+
</ul>
|
113
|
+
</div>
|
119
114
|
|
120
|
-
<
|
115
|
+
<p>
|
116
|
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
|
117
|
+
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
|
118
|
+
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
119
|
+
consequat.
|
120
|
+
</p>
|
121
121
|
|
122
|
-
<
|
123
|
-
<strong>Hey!</strong> Sample ui-state-highlight style.
|
124
|
-
</div>
|
122
|
+
<h2>Error Messages (h2)</h2>
|
125
123
|
|
126
|
-
<div id="flash" class="
|
127
|
-
|
128
|
-
</div>
|
124
|
+
<div id="flash" class="notice">
|
125
|
+
<strong>Hey!</strong> Sample ui-state-highlight style.
|
126
|
+
</div>
|
129
127
|
|
130
|
-
<
|
128
|
+
<div id="flash" class="alert">
|
129
|
+
<strong>Alert:</strong> Sample ui-state-error style.
|
130
|
+
</div>
|
131
131
|
|
132
|
-
<
|
132
|
+
<h2>Filters (h2)</h2>
|
133
133
|
|
134
|
-
<
|
135
|
-
<ul>
|
136
|
-
<li>Filter</li>
|
137
|
-
<li>Filter</li>
|
138
|
-
</ul>
|
139
|
-
</div>
|
134
|
+
<h3>Filters with a list inside (h3)</h3>
|
140
135
|
|
141
|
-
<
|
136
|
+
<div class="filters">
|
137
|
+
<ul>
|
138
|
+
<li>Filter</li>
|
139
|
+
<li>Filter</li>
|
140
|
+
</ul>
|
141
|
+
</div>
|
142
142
|
|
143
|
-
<
|
144
|
-
<p>This is a paragraph.</p>
|
145
|
-
</div>
|
143
|
+
<h3>Filters with a paragraph inside (h3)</h3>
|
146
144
|
|
147
|
-
<
|
145
|
+
<div class="filters">
|
146
|
+
<p>This is a paragraph.</p>
|
147
|
+
</div>
|
148
148
|
|
149
|
-
<
|
149
|
+
<h2>Forms (h2)</h2>
|
150
|
+
|
151
|
+
<p>This is how a form looks like.</p>
|
152
|
+
|
153
|
+
</div>
|