sufia 4.3.1 → 5.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +8 -1
- data/Gemfile +10 -1
- data/History.md +14 -0
- data/LICENSE +15 -0
- data/README.md +7 -3
- data/SUFIA_VERSION +1 -1
- data/app/assets/javascripts/sufia.js +17 -1
- data/app/assets/javascripts/sufia/batch_edit.js +28 -43
- data/app/assets/javascripts/sufia/edit_metadata.js +14 -9
- data/app/assets/javascripts/sufia/manage_repeating_fields.js +74 -0
- data/app/assets/stylesheets/sufia.css.scss +1 -1
- data/app/assets/stylesheets/sufia/_batch-edit.scss +8 -0
- data/app/assets/stylesheets/sufia/_file-listing.scss +1 -1
- data/app/assets/stylesheets/sufia/_multi_value_fields.css.scss +67 -0
- data/app/controllers/concerns/sufia/breadcrumbs.rb +8 -3
- data/app/controllers/concerns/sufia/users_controller_behavior.rb +5 -1
- data/app/helpers/generic_file_helper.rb +0 -9
- data/app/helpers/sufia/records_helper_behavior.rb +0 -14
- data/app/inputs/multi_value_input.rb +84 -0
- data/app/views/batch/_metadata.html.erb +4 -16
- data/app/views/batch/edit.html.erb +1 -1
- data/app/views/batch_edits/edit.html.erb +6 -10
- data/app/views/collections/_edit_descriptions.html.erb +1 -1
- data/app/views/collections/_form.html.erb +3 -3
- data/app/views/generic_files/_descriptions.html.erb +9 -7
- data/app/views/generic_files/_field_form.html.erb +23 -8
- data/app/views/generic_files/edit.html.erb +0 -1
- data/app/views/records/_edit_field.html.erb +19 -17
- data/app/views/records/_rights_modal.html.erb +1 -0
- data/app/views/records/edit_fields/_default.html.erb +12 -6
- data/app/views/records/edit_fields/_description.html.erb +3 -6
- data/app/views/records/edit_fields/_resource_type.html.erb +5 -4
- data/app/views/records/edit_fields/_rights.html.erb +2 -5
- data/app/views/records/edit_fields/_suffix.html.erb +0 -11
- data/app/views/records/edit_fields/_type.html.erb +2 -8
- data/config/initializers/simple_form.rb +167 -0
- data/config/initializers/simple_form_bootstrap.rb +137 -0
- data/config/locales/simple_form.en.yml +31 -0
- data/config/locales/sufia.en.yml +2 -0
- data/lib/sufia/version.rb +1 -1
- data/spec/controllers/batch_edits_controller_spec.rb +1 -0
- data/spec/controllers/generic_files_controller_spec.rb +26 -0
- data/spec/controllers/users_controller_spec.rb +4 -3
- data/spec/features/collection_spec.rb +7 -0
- data/spec/helpers/records_helper_spec.rb +0 -13
- data/spec/lib/sufia/breadcrumbs_spec.rb +46 -8
- data/spec/views/collections/_form.html.erb_spec.rb +0 -2
- data/sufia-models/app/models/concerns/sufia/user.rb +5 -0
- data/sufia-models/lib/sufia/models/stats/user_stat_importer.rb +9 -5
- data/sufia-models/lib/sufia/models/version.rb +1 -1
- data/sufia.gemspec +1 -0
- metadata +29 -9
- data/LICENSE.md +0 -14
- data/app/assets/javascripts/sufia/multiForm.js +0 -67
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fd461554f395403414904f00dd90a78fb0537f2
|
4
|
+
data.tar.gz: 1d5831ea8387a489951180194b7180bd4d62a76d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 442d9714f6a6791d4d8d0f1bb04b2343c205dc763833431887d6021b6d5fa21ea2098e534ea7ed783e8ed9009858f5302a44c459bb834e084aa466609340679b
|
7
|
+
data.tar.gz: 79104ad39beb8ceeecf6e509dd38cffa5b1cf0b59b2420028fed6539bd00747ac872facce84c6987fad8681f01e378b7143933a6b3f2004ceb3f06e1c42ecaf1
|
data/.travis.yml
CHANGED
@@ -1,10 +1,17 @@
|
|
1
1
|
language: ruby
|
2
|
+
cache: bundler
|
3
|
+
sudo: false
|
2
4
|
rvm:
|
3
5
|
- 2.1
|
4
|
-
- 2.0
|
5
6
|
env:
|
6
7
|
global:
|
7
8
|
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true
|
9
|
+
matrix:
|
10
|
+
- "RAILS_VERSION=4.1.8"
|
11
|
+
- "RAILS_VERSION=4.2.0"
|
12
|
+
matrix:
|
13
|
+
allow_failures:
|
14
|
+
- env: "RAILS_VERSION=4.2.0"
|
8
15
|
notifications:
|
9
16
|
email:
|
10
17
|
recipients:
|
data/Gemfile
CHANGED
@@ -6,7 +6,7 @@ gemspec
|
|
6
6
|
# Required for doing pagination inside an engine. See https://github.com/amatsuda/kaminari/pull/322
|
7
7
|
gem 'kaminari', github: 'harai/kaminari', branch: 'route_prefix_prototype'
|
8
8
|
gem 'sufia-models', path: './sufia-models'
|
9
|
-
gem '
|
9
|
+
gem 'slop', '~> 3.6.0' # This just helps us generate a valid Gemfile.lock when Rails 4.2 is installed (which requires byebug which has a dependency on slop)
|
10
10
|
|
11
11
|
group :development, :test do
|
12
12
|
gem "simplecov", require: false
|
@@ -17,4 +17,13 @@ file = File.expand_path("Gemfile", ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_
|
|
17
17
|
if File.exists?(file)
|
18
18
|
puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v`
|
19
19
|
instance_eval File.read(file)
|
20
|
+
else
|
21
|
+
gem 'rails', ENV['RAILS_VERSION'] if ENV['RAILS_VERSION']
|
22
|
+
|
23
|
+
if ENV['RAILS_VERSION'] and ENV['RAILS_VERSION'] !~ /^4.2/
|
24
|
+
gem 'sass-rails', "< 5.0"
|
25
|
+
else
|
26
|
+
gem 'responders', "~> 2.0"
|
27
|
+
gem 'sass-rails', ">= 5.0"
|
28
|
+
end
|
20
29
|
end
|
data/History.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# History of Sufia releases
|
2
2
|
|
3
|
+
## 5.0.0
|
4
|
+
|
5
|
+
* Update README to be more specific about dependency versions [Michael J. Giarlo]
|
6
|
+
* Pulled in code from curate to manage add/remove fields on edit forms. Also story #3978 [Carolyn Cole]
|
7
|
+
* Changing the file query to be a solr query for loading the file id, so we do not wait large file content to load. This speed up the runs significantly on systems with large file. [Carolyn Cole]
|
8
|
+
* Users controller should not call an undefined method. Fixes #532. [Michael J. Giarlo]
|
9
|
+
* Fix problem where batch edit forms weren't expanding. Fixes #820 [Carolyn Cole]
|
10
|
+
* Update and rename LICENSE.md to LICENSE per community convention. [Michael J. Giarlo]
|
11
|
+
* Brings some of the fixes in fedora-4/master into master. [Michael J. Giarlo]
|
12
|
+
* Adds condition to make the version of sass-rails dependent on the value of RAILS_VERSION [Michael J. Giarlo]
|
13
|
+
* Merge travis config change to speed up the build [Michael J. Giarlo]
|
14
|
+
* Adding the browse view link into the bread crumbs so it shows on both the edit and the stats page. [Carolyn Cole]
|
15
|
+
|
16
|
+
|
3
17
|
## 4.3.1
|
4
18
|
|
5
19
|
* Adds an ORCID field to the user model. [Michael J. Giarlo]
|
data/LICENSE
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
##########################################################################
|
2
|
+
# Copyright 2012 Penn State University
|
3
|
+
# Additional copyright may be held by others, as reflected in the commit log
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
data/README.md
CHANGED
@@ -48,7 +48,8 @@ We'd love to accept your contributions. Please see our guide to [contributing t
|
|
48
48
|
1. A SQL RDBMS (MySQL, SQLite)
|
49
49
|
1. [Redis](http://redis.io/) key-value store
|
50
50
|
1. [ImageMagick](http://www.imagemagick.org/)
|
51
|
-
1. Ruby
|
51
|
+
1. Ruby (*latest 2.1 recommended*)
|
52
|
+
2. Rails (*latest 4.1 recommended*)
|
52
53
|
|
53
54
|
#### !! Ensure that you have all of the above components installed before you continue. !!
|
54
55
|
|
@@ -60,12 +61,15 @@ If you have questions or need help, please email [the Hydra community developmen
|
|
60
61
|
|
61
62
|
### Generate base Rails install
|
62
63
|
|
63
|
-
```
|
64
|
+
```
|
65
|
+
gem install rails -v 4.1.8
|
66
|
+
rails new my_app
|
67
|
+
```
|
64
68
|
|
65
69
|
### Add gems to Gemfile
|
66
70
|
|
67
71
|
```
|
68
|
-
gem 'sufia'
|
72
|
+
gem 'sufia', '4.3.1'
|
69
73
|
gem 'kaminari', github: 'harai/kaminari', branch: 'route_prefix_prototype' # required to handle pagination properly in dashboard. See https://github.com/amatsuda/kaminari/pull/322
|
70
74
|
```
|
71
75
|
|
data/SUFIA_VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
5.0.0.rc1
|
@@ -35,7 +35,7 @@
|
|
35
35
|
//= require sufia/trophy
|
36
36
|
//= require sufia/featured_works
|
37
37
|
//= require sufia/batch_select_all
|
38
|
-
//= require sufia/
|
38
|
+
//= require sufia/manage_repeating_fields
|
39
39
|
//= require sufia/edit_metadata
|
40
40
|
//= require sufia/single_use_link
|
41
41
|
//= require sufia/audio
|
@@ -82,6 +82,22 @@ function notify_update_link() {
|
|
82
82
|
}
|
83
83
|
|
84
84
|
Blacklight.onLoad(function() {
|
85
|
+
// Multi-value fields on forms
|
86
|
+
$('body').on('keypress', '.multi-text-field', function(event) {
|
87
|
+
var $activeField = $(event.target).parents('.field-wrapper'),
|
88
|
+
$activeFieldControls = $activeField.children('.field-controls'),
|
89
|
+
$addControl=$activeFieldControls.children('.add'),
|
90
|
+
$removeControl=$activeFieldControls.children('.remove');
|
91
|
+
|
92
|
+
// If user hits the "Enter" key (keyCode 13), it should add another input for the multi-value field.
|
93
|
+
// Unless it's a textarea field (since users might want multi-line input in a textarea).
|
94
|
+
if (event.keyCode == 13 && !($activeField.context.type == "textarea")) {
|
95
|
+
event.preventDefault();
|
96
|
+
$addControl.click()
|
97
|
+
$removeControl.click()
|
98
|
+
}
|
99
|
+
});
|
100
|
+
$('.multi_value.form-group').manage_fields();
|
85
101
|
|
86
102
|
// set up global batch edit options to override the ones in the gem
|
87
103
|
window.batch_edits_options = { checked_label: "",unchecked_label: "",progress_label: "",status_label: "",css_class: "batch_toggle"};
|
@@ -3,17 +3,6 @@ function batch_edit_init () {
|
|
3
3
|
// initialize popover helpers
|
4
4
|
$("a[rel=popover]").popover({ html: true });
|
5
5
|
|
6
|
-
$("tr.expandable").click(function () {
|
7
|
-
$(this).next("ul").slideToggle();
|
8
|
-
|
9
|
-
$(this).find('i.toggle').toggleClass("glyphicon glyphicon-chevron-down");
|
10
|
-
});
|
11
|
-
|
12
|
-
$("tr.expandable_new").click(function () {
|
13
|
-
$(this).find('i').toggleClass("glyphicon glyphicon-chevron-down");
|
14
|
-
});
|
15
|
-
|
16
|
-
|
17
6
|
function deserialize(Params) {
|
18
7
|
var Data = Params.split("&");
|
19
8
|
var i = Data.length;
|
@@ -116,31 +105,45 @@ function batch_edit_init () {
|
|
116
105
|
|
117
106
|
ajaxManager.run();
|
118
107
|
|
108
|
+
function formButtons(form_id) {
|
109
|
+
return $('#' + form_id + ' .btn')
|
110
|
+
}
|
111
|
+
|
112
|
+
function formFields(form_id) {
|
113
|
+
return $('#' + form_id + ' .form-group > *')
|
114
|
+
}
|
115
|
+
|
116
|
+
function formRightPanel(form_id) {
|
117
|
+
return $('#' + form_id + ' .form-group')
|
118
|
+
}
|
119
|
+
|
120
|
+
function disableForm(form_id) {
|
121
|
+
formButtons(form_id).attr("disabled", "disabled");
|
122
|
+
formRightPanel(form_id).addClass("loading");
|
123
|
+
formFields(form_id).addClass('invisible')
|
124
|
+
}
|
125
|
+
|
126
|
+
function enableForm(form_id) {
|
127
|
+
formButtons(form_id).removeAttr("disabled");
|
128
|
+
formRightPanel(form_id).removeClass("loading");
|
129
|
+
formFields(form_id).removeClass('invisible')
|
130
|
+
}
|
131
|
+
|
119
132
|
function after_ajax(form_id) {
|
120
133
|
var key = form_id.replace("form_", "");
|
121
|
-
var save_button = "#" + key + "_save";
|
122
|
-
var outer_div = "#detail_" + key;
|
123
134
|
$("#status_" + key).html("Changes Saved");
|
124
|
-
|
125
|
-
$(outer_div).removeClass("loading");
|
126
|
-
$('#' + form_id).children([".form-group"]).removeClass('hidden')
|
135
|
+
enableForm(form_id);
|
127
136
|
}
|
128
137
|
|
129
138
|
function before_ajax(form_id) {
|
130
|
-
|
131
|
-
var save_button = "#" + key + "_save";
|
132
|
-
var outer_div = "#detail_" + key;
|
133
|
-
$(save_button).attr("disabled", "disabled");
|
134
|
-
$(outer_div).addClass("loading");
|
135
|
-
$('#' + form_id).children([".form-group"]).addClass('hidden')
|
139
|
+
disableForm(form_id);
|
136
140
|
}
|
137
141
|
|
138
|
-
|
139
142
|
function runSave(e) {
|
140
143
|
e.preventDefault();
|
141
144
|
var button = $(this);
|
142
|
-
var form =
|
143
|
-
var form_id = form[0].id
|
145
|
+
var form = button.closest('form');
|
146
|
+
var form_id = form[0].id;
|
144
147
|
before_ajax(form_id);
|
145
148
|
|
146
149
|
ajaxManager.addReq({
|
@@ -162,26 +165,8 @@ function batch_edit_init () {
|
|
162
165
|
setTimeout(ajaxManager.runNow(), 100);
|
163
166
|
}
|
164
167
|
|
165
|
-
function enable_show_hide_links() {
|
166
|
-
// Show/hide field details when clicking on a link with ID "expand_link_XXX".
|
167
|
-
// We expect to find an element named detail_XXX in addition to the expand_link_XXX.
|
168
|
-
// The "detail_XXX" element has the chevron icon.
|
169
|
-
$('.glyphicon-chevron-right-helper').on('click', function() {
|
170
|
-
var array = this.id.split("expand_link_");
|
171
|
-
if (array.length > 1) {
|
172
|
-
var docId = array[1];
|
173
|
-
$("#detail_" + docId + " .expanded-details").slideToggle();
|
174
|
-
var button = $("#expand_" + docId);
|
175
|
-
button.toggleClass('glyphicon-chevron-right glyphicon-chevron-down');
|
176
|
-
}
|
177
|
-
return false;
|
178
|
-
});
|
179
|
-
}
|
180
|
-
|
181
168
|
$("#permissions_save").click(runSave);
|
182
169
|
$(".field-save").click(runSave);
|
183
|
-
enable_show_hide_links();
|
184
|
-
|
185
170
|
}
|
186
171
|
|
187
172
|
|
@@ -58,8 +58,8 @@ Blacklight.onLoad(function() {
|
|
58
58
|
for (var i=0; i < autocomplete_vocab.url_var.length; i++) {
|
59
59
|
autocomplete_vocab.field_name.push('generic_file_' + autocomplete_vocab.url_var[i]);
|
60
60
|
autocomplete_vocab.add_btn_id.push('additional_' + autocomplete_vocab.url_var[i] + '_submit');
|
61
|
-
// autocompletes
|
62
|
-
$("
|
61
|
+
// add autocompletes to all inputs created
|
62
|
+
$(".form-group.multi_value." + autocomplete_vocab.field_name[i]).find('input[type=text]')
|
63
63
|
// don't navigate away from the field on tab when selecting an item
|
64
64
|
.bind( "keydown", function( event ) {
|
65
65
|
if ( event.keyCode === $.ui.keyCode.TAB &&
|
@@ -72,15 +72,20 @@ Blacklight.onLoad(function() {
|
|
72
72
|
}
|
73
73
|
|
74
74
|
|
75
|
-
function setup_autocomplete(
|
76
|
-
|
77
|
-
|
78
|
-
|
75
|
+
function setup_autocomplete(event) {
|
76
|
+
var class_name = $.grep(event.target.className.split(" "),function( c ) {
|
77
|
+
return c.indexOf('generic_file') == 0;
|
78
|
+
})[0];
|
79
|
+
// attach auto complete for location
|
80
|
+
if (class_name == 'generic_file_based_near') {
|
81
|
+
$(event.target).find('input[type=text]').autocomplete(get_autocomplete_opts("location"));
|
79
82
|
}
|
80
|
-
|
81
|
-
|
83
|
+
// attach other auto completes
|
84
|
+
else if ( (index = $.inArray(class_name, autocomplete_vocab.field_name)) != -1 ) {
|
85
|
+
$(event.target).find('input[type=text]').autocomplete(get_autocomplete_opts(autocomplete_vocab.url_var[index]));
|
82
86
|
}
|
83
87
|
}
|
84
88
|
|
85
|
-
|
89
|
+
// add setup for autocompletes to multi value forms
|
90
|
+
$('.multi_value.form-group').manage_fields({ add: setup_autocomplete });
|
86
91
|
});
|
@@ -0,0 +1,74 @@
|
|
1
|
+
// This widget manages the adding and removing of repeating fields.
|
2
|
+
// There are a lot of assumptions about the structure of the classes and elements.
|
3
|
+
// These assumptions are reflected in the MultiValueInput class.
|
4
|
+
|
5
|
+
(function($){
|
6
|
+
$.widget( "curate.manage_fields", {
|
7
|
+
options: {
|
8
|
+
change: null,
|
9
|
+
add: null,
|
10
|
+
remove: null
|
11
|
+
},
|
12
|
+
|
13
|
+
_create: function() {
|
14
|
+
this.element.addClass("managed");
|
15
|
+
$('.field-wrapper', this.element).addClass("input-group input-append");
|
16
|
+
|
17
|
+
this.controls = $("<span class=\"input-group-btn field-controls\">");
|
18
|
+
this.remover = $("<button class=\"btn btn-danger remove\"><i class=\"icon-white glyphicon-minus\"></i><span>Remove</span></button>");
|
19
|
+
this.adder = $("<button class=\"btn btn-success add\"><i class=\"icon-white glyphicon-plus\"></i><span>Add</span></button>");
|
20
|
+
|
21
|
+
$('.field-wrapper', this.element).append(this.controls);
|
22
|
+
$('.field-wrapper:not(:last-child) .field-controls', this.element).append(this.remover);
|
23
|
+
$('.field-controls:last', this.element).append(this.adder);
|
24
|
+
|
25
|
+
this._on( this.element, {
|
26
|
+
"click .remove": "remove_from_list",
|
27
|
+
"click .add": "add_to_list"
|
28
|
+
});
|
29
|
+
},
|
30
|
+
|
31
|
+
add_to_list: function( event ) {
|
32
|
+
event.preventDefault();
|
33
|
+
|
34
|
+
var $activeField = $(event.target).parents('.field-wrapper'),
|
35
|
+
$activeFieldControls = $activeField.children('.field-controls'),
|
36
|
+
$removeControl = this.remover.clone(),
|
37
|
+
$newField = $activeField.clone(),
|
38
|
+
$listing = $('.listing', this.element),
|
39
|
+
$warningMessage = $("<div class=\'message has-warning\'>cannot add new empty field</div>");
|
40
|
+
if ($activeField.children('input').val() === '') {
|
41
|
+
$listing.children('.has-warning').remove();
|
42
|
+
$listing.append($warningMessage);
|
43
|
+
}
|
44
|
+
else{
|
45
|
+
$listing.children('.has-warning').remove();
|
46
|
+
$('.add', $activeFieldControls).remove();
|
47
|
+
$activeFieldControls.prepend($removeControl);
|
48
|
+
$newChildren = $newField.find('input');
|
49
|
+
$newChildren.
|
50
|
+
val('').
|
51
|
+
removeProp('required');
|
52
|
+
$listing.append($newField);
|
53
|
+
$newChildren.first().focus();
|
54
|
+
this._trigger("add",$newChildren);
|
55
|
+
}
|
56
|
+
},
|
57
|
+
|
58
|
+
remove_from_list: function( event ) {
|
59
|
+
event.preventDefault();
|
60
|
+
|
61
|
+
$(event.target)
|
62
|
+
.parents('.field-wrapper')
|
63
|
+
.remove();
|
64
|
+
|
65
|
+
this._trigger("remove");
|
66
|
+
},
|
67
|
+
|
68
|
+
_destroy: function() {
|
69
|
+
this.actions.remove();
|
70
|
+
$('.field-wrapper', this.element).removeClass("input-append");
|
71
|
+
this.element.removeClass( "managed" );
|
72
|
+
}
|
73
|
+
});
|
74
|
+
})(jQuery);
|
@@ -16,7 +16,7 @@
|
|
16
16
|
// Use import here instead of require so we can use the Sass variables defined in Bootstrap and Blacklight
|
17
17
|
// TODO: Probably should use import throughout and move all of Sufia's stylesheets into a single named directory.
|
18
18
|
@import 'sufia/settings','sufia/header','sufia/styles','sufia/file-listing','sufia/collections','sufia/batch-edit',
|
19
|
-
'sufia/dashboard','sufia/home-page','sufia/featured','sufia/tagcloud','sufia/usage-stats','sufia/catalog','sufia/buttons','sufia/proxy-rights';
|
19
|
+
'sufia/dashboard','sufia/home-page','sufia/featured','sufia/tagcloud','sufia/usage-stats','sufia/catalog','sufia/buttons','sufia/proxy-rights', 'sufia/multi_value_fields';
|
20
20
|
|
21
21
|
#browse-everything {
|
22
22
|
top:10%;
|
@@ -0,0 +1,67 @@
|
|
1
|
+
.multi_value, .single_value {
|
2
|
+
.field-wrapper {
|
3
|
+
list-style-type:none;
|
4
|
+
}
|
5
|
+
|
6
|
+
.listing {
|
7
|
+
margin-left: 0;
|
8
|
+
max-width: 40em;
|
9
|
+
padding-left: 0px;
|
10
|
+
.input-group {
|
11
|
+
margin-bottom: 1px;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
.field-controls span {
|
16
|
+
margin-left:.2em;
|
17
|
+
}
|
18
|
+
|
19
|
+
.field-controls {
|
20
|
+
margin-left: 2em;
|
21
|
+
}
|
22
|
+
|
23
|
+
.message{
|
24
|
+
background-size: 40px 40px;
|
25
|
+
background-image: linear-gradient(135deg, rgba(255, 255, 255, .05) 25%, transparent 25%,
|
26
|
+
transparent 50%, rgba(255, 255, 255, .05) 50%, rgba(255, 255, 255, .05) 75%,
|
27
|
+
transparent 75%, transparent);
|
28
|
+
box-shadow: inset 0 -1px 0 rgba(255,255,255,.4);
|
29
|
+
width: 100%;
|
30
|
+
border: 1px solid;
|
31
|
+
color: #fff;
|
32
|
+
padding: 10px;
|
33
|
+
text-shadow: 0 1px 0 rgba(0,0,0,.5);
|
34
|
+
animation: animate-bg 5s linear infinite;
|
35
|
+
border-radius: $border-radius-base;
|
36
|
+
}
|
37
|
+
|
38
|
+
.has-error{
|
39
|
+
background-color: #de4343;
|
40
|
+
border-color: #c43d3d;
|
41
|
+
}
|
42
|
+
|
43
|
+
.has-warning{
|
44
|
+
background-color: #eaaf51;
|
45
|
+
border-color: #d99a36;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
49
|
+
// The contributor listing needs some normalization
|
50
|
+
#contributors .listing {
|
51
|
+
max-width:20em;
|
52
|
+
}
|
53
|
+
|
54
|
+
#collection_title.listing {
|
55
|
+
max-width:37em;
|
56
|
+
}
|
57
|
+
|
58
|
+
.collection_description .listing {
|
59
|
+
max-width:35.5em;
|
60
|
+
}
|
61
|
+
|
62
|
+
#descriptions_display {
|
63
|
+
.form-group, .batch-group {
|
64
|
+
margin-left: 0;
|
65
|
+
margin-bottom: 0.5em;
|
66
|
+
}
|
67
|
+
}
|