Webshims and select2 removed, replaced with straight rails datetime select and jquery tags input

This commit is contained in:
echarp 2016-12-17 16:59:11 +01:00
parent 1849ac942b
commit 5b3228dae8
524 changed files with 26089 additions and 1883020 deletions

38
Gemfile
View File

@ -27,12 +27,12 @@ gem 'haml-rails'
gem 'devise' gem 'devise'
gem 'devise-i18n' gem 'devise-i18n'
gem 'http_accept_language'
gem 'rails-i18n' gem 'rails-i18n'
# Store some specific content, like application name and static pages contents # Store some specific content, like application name and static pages contents
gem 'i18n-active_record', gem 'i18n-active_record',
github: 'svenfuchs/i18n-active_record', github: 'svenfuchs/i18n-active_record',
require: 'i18n/active_record' require: 'i18n/active_record'
gem 'http_accept_language'
# Remove leading and trailing white spaces # Remove leading and trailing white spaces
gem 'strip_attributes' gem 'strip_attributes'
# Track changes to models' data # Track changes to models' data
@ -42,14 +42,15 @@ gem 'piwik_analytics'
# Validate mails submitted # Validate mails submitted
gem 'email_validator' gem 'email_validator'
# Email address obfuscation # Email address obfuscation
gem 'actionview-encoded_mail_to' # require is necessary to actually use this feature
# see https://github.com/reed/actionview-encoded_mail_to/issues/15
gem 'actionview-encoded_mail_to',
require: 'action_view/encoded_mail_to/mail_to_with_encoding'
# To display a patched diff for event descriptions # To display a patched diff for event descriptions
gem 'differ' gem 'differ'
# A generic library to administrate the tool # A generic library to administrate the tool
gem 'activeadmin', '~> 1.0.0.pre4' gem 'activeadmin', github: 'activeadmin'
# A nicer markdown editor in active admin
gem 'activeadmin_pagedown'
gem 'jquery-sparkline-rails', github: 'cubus/jquery-sparkline-rails' gem 'jquery-sparkline-rails', github: 'cubus/jquery-sparkline-rails'
@ -57,8 +58,8 @@ gem 'jquery-sparkline-rails', github: 'cubus/jquery-sparkline-rails'
gem 'redcarpet' gem 'redcarpet'
# Carte openstreetmap # Carte openstreetmap
gem 'leaflet-rails'
gem 'leaflet-markercluster-rails' gem 'leaflet-markercluster-rails'
gem 'leaflet-rails'
gem 'geocoder' gem 'geocoder'
@ -66,15 +67,18 @@ gem 'geocoder'
gem 'tinymce-rails' gem 'tinymce-rails'
gem 'tinymce-rails-langs' gem 'tinymce-rails-langs'
gem 'acts-as-taggable-on'
gem 'tagsinput-rails'
# SEO optimisations # SEO optimisations
gem 'meta-tags' gem 'meta-tags'
gem 'twitter' gem 'twitter'
group :development do group :development do
gem 'quiet_assets'
gem 'sqlite3' gem 'sqlite3'
gem 'webrick' gem 'webrick'
gem 'quiet_assets'
# Access an IRB console on exception pages or by using <%= console %> in views # Access an IRB console on exception pages or by using <%= console %> in views
gem 'web-console' gem 'web-console'
@ -86,17 +90,17 @@ group :development do
# Scanning the Gemfile for insecure dependencies based on published CVEs # Scanning the Gemfile for insecure dependencies based on published CVEs
gem 'bundler-audit' gem 'bundler-audit'
gem 'guard-rails', require: false
gem 'guard-migrate', require: false
gem 'guard-bundler', require: false gem 'guard-bundler', require: false
gem 'guard-rubocop', require: false
gem 'guard-minitest', require: false
gem 'guard-livereload', require: false gem 'guard-livereload', require: false
gem 'rack-livereload' gem 'guard-migrate', require: false
gem 'guard-minitest', require: false
gem 'guard-rubocop', require: false
gem 'haml_lint' gem 'haml_lint'
gem 'rack-livereload'
# Security checks # Security checks
gem 'brakeman', require: false gem 'brakeman', require: false
gem 'guard-brakeman', require: false gem 'guard-brakeman', require: false
gem 'guard-rails', require: false
end end
group :test do group :test do
@ -116,8 +120,7 @@ group :development, :test, :assets do
gem 'coffee-rails' gem 'coffee-rails'
# Use jquery as the JavaScript library # Use jquery as the JavaScript library
# Limited to before 4.1, because later version breaks the date/time selector gem 'jquery-rails'
gem 'jquery-rails', '< 4.1'
# Turbolinks makes following links in your web application # Turbolinks makes following links in your web application
# faster. Read more: https://github.com/rails/turbolinks # faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks' gem 'turbolinks'
@ -126,13 +129,6 @@ group :development, :test, :assets do
gem 'modernizr-rails' gem 'modernizr-rails'
# Patch older browsers so they do understand html5
gem 'webshims-rails'
# Improve the html select element
# Later version disabled the tag selector...
gem 'select2-rails', '< 4'
# A superb font to use as icons # A superb font to use as icons
gem 'font-awesome-sass' gem 'font-awesome-sass'
end end

View File

@ -1,3 +1,22 @@
GIT
remote: git://github.com/activeadmin/activeadmin.git
revision: 4f494073c6c0c016ba4902faad65f07ee034bb1a
specs:
activeadmin (1.0.0.pre4)
arbre (~> 1.0, >= 1.0.2)
bourbon
coffee-rails
formtastic (~> 3.1)
formtastic_i18n
inherited_resources (~> 1.6)
jquery-rails
jquery-ui-rails
kaminari (~> 0.15)
railties (>= 3.2, < 5.1)
ransack (~> 1.3)
sass-rails
sprockets (< 4.1)
GIT GIT
remote: git://github.com/cubus/jquery-sparkline-rails.git remote: git://github.com/cubus/jquery-sparkline-rails.git
revision: c5b531f51e3e734710c7561b06c2c829107f9b38 revision: c5b531f51e3e734710c7561b06c2c829107f9b38
@ -37,22 +56,6 @@ GEM
rails-html-sanitizer (~> 1.0, >= 1.0.2) rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview-encoded_mail_to (1.0.8) actionview-encoded_mail_to (1.0.8)
rails rails
activeadmin (1.0.0.pre4)
arbre (~> 1.0, >= 1.0.2)
bourbon
coffee-rails
formtastic (~> 3.1)
formtastic_i18n
inherited_resources (~> 1.6)
jquery-rails
jquery-ui-rails
kaminari (~> 0.15)
rails (>= 3.2, < 5.1)
ransack (~> 1.3)
sass-rails
sprockets (< 4)
activeadmin_pagedown (0.0.2)
activeadmin (>= 0.5.0)
activejob (4.2.7.1) activejob (4.2.7.1)
activesupport (= 4.2.7.1) activesupport (= 4.2.7.1)
globalid (>= 0.3.0) globalid (>= 0.3.0)
@ -69,6 +72,8 @@ GEM
minitest (~> 5.1) minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4) thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1) tzinfo (~> 1.1)
acts-as-taggable-on (4.0.0)
activerecord (>= 4.0)
addressable (2.5.0) addressable (2.5.0)
public_suffix (~> 2.0, >= 2.0.2) public_suffix (~> 2.0, >= 2.0.2)
arbre (1.1.1) arbre (1.1.1)
@ -93,7 +98,7 @@ GEM
coffee-script (2.4.1) coffee-script (2.4.1)
coffee-script-source coffee-script-source
execjs execjs
coffee-script-source (1.10.0) coffee-script-source (1.12.2)
concurrent-ruby (1.0.2) concurrent-ruby (1.0.2)
debug_inspector (0.0.2) debug_inspector (0.0.2)
devise (4.2.0) devise (4.2.0)
@ -105,18 +110,18 @@ GEM
devise-i18n (1.1.1) devise-i18n (1.1.1)
differ (0.1.2) differ (0.1.2)
docile (1.1.5) docile (1.1.5)
domain_name (0.5.20161021) domain_name (0.5.20161129)
unf (>= 0.0.5, < 1.0.0) unf (>= 0.0.5, < 1.0.0)
em-websocket (0.5.1) em-websocket (0.5.1)
eventmachine (>= 0.12.9) eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0) http_parser.rb (~> 0.6.0)
email_validator (1.6.0) email_validator (1.6.0)
activemodel activemodel
equalizer (0.0.10) equalizer (0.0.11)
erubis (2.7.0) erubis (2.7.0)
eventmachine (1.2.0.1) eventmachine (1.2.1)
execjs (2.7.0) execjs (2.7.0)
faraday (0.9.2) faraday (0.10.0)
multipart-post (>= 1.2, < 3) multipart-post (>= 1.2, < 3)
ffi (1.9.14) ffi (1.9.14)
font-awesome-sass (4.7.0) font-awesome-sass (4.7.0)
@ -125,7 +130,7 @@ GEM
formtastic (3.1.4) formtastic (3.1.4)
actionpack (>= 3.2.13) actionpack (>= 3.2.13)
formtastic_i18n (0.6.0) formtastic_i18n (0.6.0)
geocoder (1.4.0) geocoder (1.4.1)
globalid (0.3.7) globalid (0.3.7)
activesupport (>= 4.1.0) activesupport (>= 4.1.0)
guard (2.14.0) guard (2.14.0)
@ -171,9 +176,9 @@ GEM
haml (>= 4.0.6, < 5.0) haml (>= 4.0.6, < 5.0)
html2haml (>= 1.0.1) html2haml (>= 1.0.1)
railties (>= 4.0.1) railties (>= 4.0.1)
haml_lint (0.18.4) haml_lint (0.19.0)
haml (~> 4.0) haml (~> 4.0)
rake (>= 10, < 12) rake (>= 10, < 13)
rubocop (>= 0.36.0) rubocop (>= 0.36.0)
sysexits (~> 1.1) sysexits (~> 1.1)
has_scope (0.6.0) has_scope (0.6.0)
@ -185,7 +190,7 @@ GEM
haml (~> 4.0.0) haml (~> 4.0.0)
nokogiri (~> 1.6.0) nokogiri (~> 1.6.0)
ruby_parser (~> 3.5) ruby_parser (~> 3.5)
http (1.0.4) http (2.1.0)
addressable (~> 2.3) addressable (~> 2.3)
http-cookie (~> 1.0) http-cookie (~> 1.0)
http-form_data (~> 1.0.1) http-form_data (~> 1.0.1)
@ -202,14 +207,14 @@ GEM
has_scope (~> 0.6.0.rc) has_scope (~> 0.6.0.rc)
railties (>= 3.2, < 5) railties (>= 3.2, < 5)
responders responders
jbuilder (2.6.0) jbuilder (2.6.1)
activesupport (>= 3.0.0, < 5.1) activesupport (>= 3.0.0, < 5.1)
multi_json (~> 1.2) multi_json (~> 1.2)
jquery-rails (4.0.5) jquery-rails (4.2.1)
rails-dom-testing (~> 1.0) rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0) railties (>= 4.2.0)
thor (>= 0.14, < 2.0) thor (>= 0.14, < 2.0)
jquery-ui-rails (5.0.5) jquery-ui-rails (6.0.1)
railties (>= 3.2.16) railties (>= 3.2.16)
json (1.8.3) json (1.8.3)
kaminari (0.17.0) kaminari (0.17.0)
@ -218,7 +223,7 @@ GEM
leaflet-markercluster-rails (0.7.0) leaflet-markercluster-rails (0.7.0)
railties (>= 3.1) railties (>= 3.1)
leaflet-rails (0.7.7) leaflet-rails (0.7.7)
libv8 (3.16.14.15) libv8 (3.16.14.17)
listen (3.1.5) listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4) rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7) rb-inotify (~> 0.9, >= 0.9.7)
@ -230,14 +235,14 @@ GEM
mime-types (>= 1.16, < 4) mime-types (>= 1.16, < 4)
memoizable (0.4.2) memoizable (0.4.2)
thread_safe (~> 0.3, >= 0.3.1) thread_safe (~> 0.3, >= 0.3.1)
meta-tags (2.3.1) meta-tags (2.4.0)
actionpack (>= 3.2.0, <= 5.1.0) actionpack (>= 3.2.0, <= 5.1.0)
method_source (0.8.2) method_source (0.8.2)
mime-types (3.1) mime-types (3.1)
mime-types-data (~> 3.2015) mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521) mime-types-data (3.2016.0521)
mini_portile2 (2.1.0) mini_portile2 (2.1.0)
minitest (5.9.1) minitest (5.10.1)
modernizr-rails (2.7.1) modernizr-rails (2.7.1)
multi_json (1.12.1) multi_json (1.12.1)
multipart-post (2.0.0) multipart-post (2.0.0)
@ -250,10 +255,10 @@ GEM
nenv (~> 0.1) nenv (~> 0.1)
shellany (~> 0.0) shellany (~> 0.0)
orm_adapter (0.5.0) orm_adapter (0.5.0)
paper_trail (5.2.2) paper_trail (6.0.2)
activerecord (>= 3.0, < 6.0) activerecord (>= 4.0, < 5.2)
request_store (~> 1.1) request_store (~> 1.1)
parser (2.3.1.4) parser (2.3.3.1)
ast (~> 2.2) ast (~> 2.2)
piwik_analytics (1.0.2) piwik_analytics (1.0.2)
actionpack actionpack
@ -302,7 +307,7 @@ GEM
rake (>= 0.8.7) rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0) thor (>= 0.18.1, < 2.0)
rainbow (2.1.0) rainbow (2.1.0)
rake (11.3.0) rake (12.0.0)
ransack (1.8.2) ransack (1.8.2)
actionpack (>= 3.0) actionpack (>= 3.0)
activerecord (>= 3.0) activerecord (>= 3.0)
@ -318,7 +323,7 @@ GEM
request_store (1.3.1) request_store (1.3.1)
responders (2.3.0) responders (2.3.0)
railties (>= 4.2.0, < 5.1) railties (>= 4.2.0, < 5.1)
rubocop (0.45.0) rubocop (0.46.0)
parser (>= 2.3.1.1, < 3.0) parser (>= 2.3.1.1, < 3.0)
powerpack (~> 0.1) powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0) rainbow (>= 1.99.1, < 3.0)
@ -338,11 +343,9 @@ GEM
sdoc (0.4.2) sdoc (0.4.2)
json (~> 1.7, >= 1.7.7) json (~> 1.7, >= 1.7.7)
rdoc (~> 4.0) rdoc (~> 4.0)
select2-rails (3.5.10)
thor (~> 0.14)
sexp_processor (4.7.0) sexp_processor (4.7.0)
shellany (0.0.1) shellany (0.0.1)
simple_calendar (2.2.0) simple_calendar (2.2.2)
rails (>= 3.0) rails (>= 3.0)
simple_oauth (0.3.1) simple_oauth (0.3.1)
simplecov (0.12.0) simplecov (0.12.0)
@ -364,38 +367,39 @@ GEM
strip_attributes (1.8.0) strip_attributes (1.8.0)
activemodel (>= 3.0, < 6.0) activemodel (>= 3.0, < 6.0)
sysexits (1.2.0) sysexits (1.2.0)
tagsinput-rails (1.3.5.1)
railties (>= 3.1)
therubyracer (0.12.2) therubyracer (0.12.2)
libv8 (~> 3.16.14.0) libv8 (~> 3.16.14.0)
ref ref
thor (0.19.1) thor (0.19.4)
thread_safe (0.3.5) thread_safe (0.3.5)
tilt (2.0.5) tilt (2.0.5)
tinymce-rails (4.4.3) tinymce-rails (4.5.1)
railties (>= 3.1.1) railties (>= 3.1.1)
tinymce-rails-langs (4.20160310) tinymce-rails-langs (4.20160310)
tinymce-rails (~> 4.1, >= 4.1.10) tinymce-rails (~> 4.1, >= 4.1.10)
turbolinks (5.0.1) turbolinks (5.0.1)
turbolinks-source (~> 5) turbolinks-source (~> 5)
turbolinks-source (5.0.0) turbolinks-source (5.0.0)
twitter (5.16.0) twitter (6.0.0)
addressable (~> 2.3) addressable (~> 2.5)
buftok (~> 0.2.0) buftok (~> 0.2.0)
equalizer (= 0.0.10) equalizer (= 0.0.11)
faraday (~> 0.9.0) faraday (~> 0.10.0)
http (~> 1.0) http (~> 2.1)
http_parser.rb (~> 0.6.0) http_parser.rb (~> 0.6.0)
json (~> 1.8) memoizable (~> 0.4.2)
memoizable (~> 0.4.0) naught (~> 1.1)
naught (~> 1.0) simple_oauth (~> 0.3.1)
simple_oauth (~> 0.3.0)
tzinfo (1.2.2) tzinfo (1.2.2)
thread_safe (~> 0.1) thread_safe (~> 0.1)
uglifier (3.0.3) uglifier (3.0.4)
execjs (>= 0.3.0, < 3) execjs (>= 0.3.0, < 3)
unf (0.1.4) unf (0.1.4)
unf_ext unf_ext
unf_ext (0.0.7.2) unf_ext (0.0.7.2)
unicode-display_width (1.1.1) unicode-display_width (1.1.2)
warden (1.2.6) warden (1.2.6)
rack (>= 1.0) rack (>= 1.0)
web-console (3.3.0) web-console (3.3.0)
@ -403,16 +407,14 @@ GEM
debug_inspector debug_inspector
railties (>= 4.2) railties (>= 4.2)
webrick (1.3.1) webrick (1.3.1)
webshims-rails (1.15.10)
rails (> 3.1.0)
PLATFORMS PLATFORMS
ruby ruby
DEPENDENCIES DEPENDENCIES
actionview-encoded_mail_to actionview-encoded_mail_to
activeadmin (~> 1.0.0.pre4) activeadmin!
activeadmin_pagedown acts-as-taggable-on
brakeman brakeman
bundler-audit bundler-audit
byebug byebug
@ -438,7 +440,7 @@ DEPENDENCIES
i18n-active_record! i18n-active_record!
ice_cube ice_cube
jbuilder jbuilder
jquery-rails (< 4.1) jquery-rails
jquery-sparkline-rails! jquery-sparkline-rails!
leaflet-markercluster-rails leaflet-markercluster-rails
leaflet-rails leaflet-rails
@ -454,12 +456,12 @@ DEPENDENCIES
redcarpet redcarpet
sass-rails sass-rails
sdoc sdoc
select2-rails (< 4)
simple_calendar simple_calendar
simplecov simplecov
spring spring
sqlite3 sqlite3
strip_attributes strip_attributes
tagsinput-rails
therubyracer therubyracer
tinymce-rails tinymce-rails
tinymce-rails-langs tinymce-rails-langs
@ -468,7 +470,6 @@ DEPENDENCIES
uglifier uglifier
web-console web-console
webrick webrick
webshims-rails
BUNDLED WITH BUNDLED WITH
1.12.5 1.13.6

View File

@ -29,7 +29,7 @@ ActiveAdmin.register Orga do
attributes_table do attributes_table do
row :kind row :kind
row :name row :name
row :description, as: :pagedown_text row :description
row :city row :city
row :department row :department
row :region row :region

View File

@ -5,7 +5,7 @@ ActiveAdmin.register I18n::Backend::ActiveRecord::Translation do
f.inputs do f.inputs do
f.input :locale f.input :locale
f.input :key f.input :key
f.input :value, as: :pagedown_text f.input :value
f.actions f.actions
end end
end end

View File

@ -13,33 +13,24 @@
#= require jquery #= require jquery
#= require jquery_ujs #= require jquery_ujs
#= require jquery.sparkline #= require jquery.sparkline
# For tags input
#= require jquery-ui/widgets/autocomplete
#= require jquery.tagsinput
#= require turbolinks #= require turbolinks
#= require tinymce-jquery #= require tinymce-jquery
#= require modernizr #= require modernizr
#= require webshims/polyfiller
#= require select2
#= require select2_locale_fr
#= require leaflet #= require leaflet
#= require leaflet.markercluster #= require leaflet.markercluster
#= require leaflet.awesome-markers #= require leaflet.awesome-markers
#= require_tree . #= require_tree .
# Setup polyfills, so that older browsers can also take advantage of html5!
$.webshims.setOptions 'basePath', '/webshims/1.15.10/shims/'
$.webshims.setOptions 'forms-ext',
'widgets':
'startView': 2,
'stepfactor': 10,
'classes': 'show-yearbtns hide-btnrow show-uparrow'
$.webshims.polyfill 'forms forms-ext'
$(document).on 'turbolinks:load', -> $(document).on 'turbolinks:load', ->
# Reload polyfill when turbolinks loads a new page
$(this).updatePolyfill()
# Hides the chrome broken image when image is absent # Hides the chrome broken image when image is absent
if !Modernizr.testAllProps('forceBrokenImageIcon') if !Modernizr.testAllProps('forceBrokenImageIcon')
$('img.favicon').one 'error', -> $('img.favicon').one 'error', ->
$(this).css visibility: 'hidden' $(this).css visibility: 'hidden'
# $('select').select2() $('.field.tags input').tagsInput
delimiter: [' ']
defaultText: ''
autocomplete_url: '/tags.json'

View File

@ -1,7 +1,4 @@
$(document).on 'turbolinks:load', -> $(document).on 'turbolinks:load', ->
# Manage the tags label so it points the proper select2 input
$('label[for=event_tags]').attr 'for', 's2id_autogen1'
$('#event_start_time').change -> $('#event_start_time').change ->
if $('#event_start_time').val() >= $('#event_end_time').val() if $('#event_start_time').val() >= $('#event_end_time').val()
$('#event_end_time').val($('#event_start_time').val()) $('#event_end_time').val($('#event_start_time').val())
@ -27,5 +24,3 @@ $(document).on 'turbolinks:load', ->
url: '/tags.json' url: '/tags.json'
.done (data) -> .done (data) ->
tags = jQuery.map data, (n) -> n[0] tags = jQuery.map data, (n) -> n[0]
elt.select2 tags: tags, separator: [' '], tokenSeparators: [' ']

View File

@ -1,13 +0,0 @@
$(document).on 'turbolinks:load', ->
# Manage orga tags edition
$('#orga_tags').each ->
elt = $(this)
$.ajax
url: '/tags/orgas.json'
.done (data) ->
tags = jQuery.map data, (n) -> n[0]
elt.select2 tags: tags, separator: [' '], tokenSeparators: [' ']
# Manage the tags label so it points the proper select2 input
$('label[for=orga_tags]').attr 'for', 's2id_autogen1'

View File

@ -193,7 +193,7 @@ label
border: 1px solid darkgray border: 1px solid darkgray
box-shadow: 1px 1px 2px lightgray box-shadow: 1px 1px 2px lightgray
border-radius: 0.4em border-radius: 0.4em
input, textarea, select, a.button, button, .select2-container ul input, textarea, select, a.button, button
color: black color: black
margin: 3px 0 margin: 3px 0
border: 1px solid darkgray border: 1px solid darkgray
@ -281,13 +281,3 @@ footer.bottom nav
display: none display: none
span.next span.next
display: block display: block
.select2-container ul
min-width: 46em
.select2-container-multi.select2-container-active .select2-choices, .select2-drop
border: none !important
box-shadow: 1px 1px 4px gray
// Otherwise the cross to remove tags is centered
.select2-container *, .select2-choices *
margin: initial
transition-duration: 0

View File

@ -10,7 +10,8 @@
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
* file per style scope. * file per style scope.
* *
*= require select2 *= require jquery-ui
*= require jquery.tagsinput
*= require_tree . *= require_tree .
*/ */

View File

@ -17,7 +17,7 @@
label label
width: 8em width: 8em
display: inline-block display: inline-block
input, select, .select2-container ul input, select
border-top-left-radius: 0 border-top-left-radius: 0
border-bottom-left-radius: 0 border-bottom-left-radius: 0
input[type=radio] + label input[type=radio] + label
@ -25,8 +25,7 @@
&:after &:after
content: '' content: ''
input[type=text], input[type=url], input[type=email], input[type=text], input[type=url], input[type=email], .mce-tinymce
.select2-container, .select2-container ul, .mce-tinymce
min-width: 22em min-width: 22em
.mce-tinymce .mce-tinymce

View File

@ -125,8 +125,6 @@
display: block display: block
text-align: left text-align: left
margin-left: 0 margin-left: 0
input, .select2-container ul, .mce-tinymce input, .mce-tinymce
width: 100% width: 100%
border-bottom-left-radius: 0.4em border-bottom-left-radius: 0.4em
.select2-container ul
min-width: 20em

View File

@ -7,21 +7,30 @@ p.tags a:last-child:after
.tag .tag
vertical-align: middle vertical-align: middle
&.size_1 &.css1
font-size: 60% font-size: 1.0em
letter-spacing: -1px &.css2
&.size_2 font-size: 1.2em
font-size: 80% &.css3
letter-spacing: -1px font-size: 1.4em
&.size_3 &.css4
font-size: 100% font-size: 1.6em
&.size_4
font-size: 120% .tagsinput
&.size_5 border: none !important
font-size: 180% padding: 0 !important
&.size_6 display: inline-block
font-size: 200% min-width: 22em
&.size_7 vertical-align: top
font-size: 220%
&.size_8 input, .ui-autocomplete-input
font-size: 240% border: 1px solid darkgray
padding: 0.2em 0.4em
font-size: inherit
margin-right: 0
*:first-child
input, .ui-autocomplete-input
min-width: 22em
.ui-widget-content
text-align: left

View File

@ -1,7 +1,7 @@
# Event life cycle # Event life cycle
# This is a central part to this project # This is a central part to this project
class EventsController < ApplicationController class EventsController < ApplicationController
has_scope :region, :locality, :tag, :daylimit has_scope :region, :locality, :tag, :daylimit, :year
has_scope :near, type: :hash, using: [:location, :distance] has_scope :near, type: :hash, using: [:location, :distance]
before_action :set_events, only: [:index] before_action :set_events, only: [:index]
@ -105,7 +105,7 @@ class EventsController < ApplicationController
params.require(:event) params.require(:event)
.permit :lock_version, :title, :start_time, :end_time, :repeat, :rule, .permit :lock_version, :title, :start_time, :end_time, :repeat, :rule,
:description, :place_name, :address, :city, :region_id, :description, :place_name, :address, :city, :region_id,
:locality, :url, :contact, :submitter, :tags :locality, :url, :contact, :submitter, :tag_list
end end
def filter_for_rss def filter_for_rss

View File

@ -66,7 +66,7 @@ class ModerationsController < ApplicationController
params.require(:event) params.require(:event)
.permit :lock_version, :title, :start_time, :end_time, :repeat, :rule, .permit :lock_version, :title, :start_time, :end_time, :repeat, :rule,
:description, :place_name, :address, :city, :region_id, :description, :place_name, :address, :city, :region_id,
:locality, :url, :contact, :submitter, :tags :locality, :url, :contact, :submitter, :tag_list
end end
# Useful to manage absolute url in mails # Useful to manage absolute url in mails

View File

@ -92,7 +92,7 @@ class OrgasController < ApplicationController
params.require(:orga) params.require(:orga)
.permit :lock_version, :kind_id, :name, :description, :place_name, .permit :lock_version, :kind_id, :name, :description, :place_name,
:address, :city, :department, :region_id, :url, :diaspora, :address, :city, :department, :region_id, :url, :diaspora,
:feed, :contact, :submitter, :tags, :active :feed, :contact, :submitter, :tag_list, :active
end end
# Check that you can only edit an existing event if you know its secret # Check that you can only edit an existing event if you know its secret

View File

@ -5,7 +5,12 @@ class TagsController < InheritedResources::Base
has_scope :tag, as: :id has_scope :tag, as: :id
def index def index
@tags = organise_tags apply_scopes(Event.moderated) @tags = ActsAsTaggableOn::Tag.all
if params[:term]
# Used to autocomplete tags
@tags = @tags.select(:id, :name, 'name AS label')
.where('name LIKE ?', "#{params[:term]}%")
end
respond_to do |format| respond_to do |format|
format.html format.html
@ -14,8 +19,8 @@ class TagsController < InheritedResources::Base
end end
def show def show
@events_future = apply_scopes(Event).moderated.future @events_future = apply_scopes Event.moderated.future
@events_past = apply_scopes(Event).moderated.past @events_past = apply_scopes Event.moderated.past
respond_to do |format| respond_to do |format|
format.html format.html

View File

@ -9,20 +9,11 @@ class UsersController < ApplicationController
@users = User.all @users = User.all
end end
# GET /users/1
# GET /users/1.json
def show
end
# GET /users/new # GET /users/new
def new def new
@user = User.new @user = User.new
end end
# GET /users/1/edit
def edit
end
# POST /users # POST /users
# POST /users.json # POST /users.json
def create def create

View File

@ -3,7 +3,7 @@ module EventsHelper
def set_events_meta def set_events_meta
set_meta_tags \ set_meta_tags \
description: t('layouts.application.subtitle'), description: t('layouts.application.subtitle'),
keywords: @events.map(&:tags).join(' ').split.group_by { |i| i } keywords: @events.map(&:tags).join(', ').split.group_by { |i| i }
.reject { |_k, v| v.size < 2 }.map { |k, _v| k }, .reject { |_k, v| v.size < 2 }.map { |k, _v| k },
DC: { DC: {
title: t('layouts.application.title'), title: t('layouts.application.title'),
@ -14,7 +14,7 @@ module EventsHelper
def set_event_meta def set_event_meta
set_meta_tags \ set_meta_tags \
keywords: @event.tags, keywords: @event.tag_list,
DC: { title: @event.title, date: @event.start_time.to_s }, DC: { title: @event.title, date: @event.start_time.to_s },
geo: { geo: {
placename: @event.city, placename: @event.city,

View File

@ -0,0 +1,4 @@
# Helper for the tags views
module TagsHelper
include ActsAsTaggableOn::TagsHelper
end

View File

@ -4,6 +4,7 @@ require 'schedule'
class Event < ActiveRecord::Base class Event < ActiveRecord::Base
extend SimpleCalendar extend SimpleCalendar
include Schedule include Schedule
acts_as_taggable
strip_attributes strip_attributes
has_paper_trail ignore: [:last_updated, :lock_version, :secret, :submitter, has_paper_trail ignore: [:last_updated, :lock_version, :secret, :submitter,
:decision_time, :latitude, :longitude] :decision_time, :latitude, :longitude]
@ -24,7 +25,6 @@ class Event < ActiveRecord::Base
validates :url, presence: true, format: %r{\Ahttps?:\/\/.*\..*\z} validates :url, presence: true, format: %r{\Ahttps?:\/\/.*\..*\z}
validates :contact, email: true validates :contact, email: true
validates :submitter, email: true validates :submitter, email: true
validates :tags, presence: true, format: /\A[\p{Alnum}\s-]*\z/
geocoded_by :full_address geocoded_by :full_address
# after_validation :geocode, if: -> (obj) { obj.address_changed? } # after_validation :geocode, if: -> (obj) { obj.address_changed? }
@ -33,8 +33,6 @@ class Event < ActiveRecord::Base
# Mechanism to store some reason which can be used when sending notifications # Mechanism to store some reason which can be used when sending notifications
attr_accessor :reason attr_accessor :reason
before_validation EventCallbacks
before_create EventCallbacks before_create EventCallbacks
after_create EventCallbacks after_create EventCallbacks
@ -66,7 +64,7 @@ class Event < ActiveRecord::Base
end) end)
scope :region, ->(region) { where region: region unless region == 'all' } scope :region, ->(region) { where region: region unless region == 'all' }
scope :locality, ->(locality) { where locality: locality } scope :locality, ->(locality) { where locality: locality }
scope :tag, ->(tag) { where 'tags like ?', "%#{tag}%" } scope :tag, ->(tag) { tagged_with tag }
scope :geo, -> { where 'latitude is not null and longitude is not null' } scope :geo, -> { where 'latitude is not null and longitude is not null' }
before_validation on: :create do before_validation on: :create do
@ -86,7 +84,7 @@ class Event < ActiveRecord::Base
{ type: 'Feature', properties: { { type: 'Feature', properties: {
id: id, name: title, start_time: start_time, end_time: end_time, id: id, name: title, start_time: start_time, end_time: end_time,
place_name: place_name, address: address, city: city, locality: locality, place_name: place_name, address: address, city: city, locality: locality,
tags: tags, popupContent: "<a href=\"/events/#{id}\">#{self}</a>" tags: tag_list, popupContent: "<a href=\"/events/#{id}\">#{self}</a>"
}, geometry: { type: 'Point', coordinates: [longitude, latitude] } } }, geometry: { type: 'Point', coordinates: [longitude, latitude] } }
end end
@ -97,7 +95,7 @@ class Event < ActiveRecord::Base
end end
def hashtags def hashtags
tags.split.map { |tag| "##{tag.tr('-', '_').camelize :lower}" } tag_list.map { |tag| "##{tag.tr('-', '_').camelize :lower}" }
end end
def to_s def to_s

View File

@ -1,11 +1,6 @@
# All the mail and tweet related callbacks to event's lifecycle # All the mail and tweet related callbacks to event's lifecycle
# also the scheduled events # also the scheduled events
class EventCallbacks class EventCallbacks
def self.before_validation(event)
# Tags are always downcased
event.tags = event.tags.mb_chars.downcase if event.tags
end
def self.before_create(event) def self.before_create(event)
event.secret ||= SecureRandom.urlsafe_base64(32)[0...32] event.secret ||= SecureRandom.urlsafe_base64(32)[0...32]
event.moderator_mail_id ||= SecureRandom.urlsafe_base64(32)[0...32] event.moderator_mail_id ||= SecureRandom.urlsafe_base64(32)[0...32]
@ -59,7 +54,9 @@ class EventCallbacks
end end
def self.create_sub_event(event, schedule) def self.create_sub_event(event, schedule)
att = event.attributes.reject { |a| a == 'id' || a == 'lock_version' } att = event.attributes.reject do |a|
a == 'id' || a == 'lock_version' || a == 'tags'
end
att[:start_time] = schedule.start_time att[:start_time] = schedule.start_time
att[:end_time] = schedule.end_time att[:end_time] = schedule.end_time
att att

View File

@ -1,5 +1,6 @@
# Organisations related to this agenda # Organisations related to this agenda
class Orga < ActiveRecord::Base class Orga < ActiveRecord::Base
acts_as_taggable
strip_attributes strip_attributes
has_paper_trail ignore: [:last_updated, :secret, :submitter, :decision_time, has_paper_trail ignore: [:last_updated, :secret, :submitter, :decision_time,
:lock_version, :latitude, :longitude] :lock_version, :latitude, :longitude]
@ -31,7 +32,7 @@ class Orga < ActiveRecord::Base
scope :period, ->(_year, _week) {} scope :period, ->(_year, _week) {}
scope :region, ->(region) { where region: region unless region == 'all' } scope :region, ->(region) { where region: region unless region == 'all' }
scope :tag, ->(tag) { where 'tags like ?', "%#{tag}%" } scope :tag, ->(tag) { tagged_with tag }
scope :geo, -> { where 'latitude is not null and longitude is not null' } scope :geo, -> { where 'latitude is not null and longitude is not null' }
before_validation do before_validation do

View File

@ -15,10 +15,10 @@
= f.text_field :title, required: true, placeholder: t('.title_helper') = f.text_field :title, required: true, placeholder: t('.title_helper')
.field.start_time .field.start_time
= f.label :start_time = f.label :start_time
= f.datetime_local_field :start_time, required: true = f.datetime_select :start_time, default: 1.day.from_now
.field.end_time .field.end_time
= f.label :end_time = f.label :end_time
= f.datetime_local_field :end_time, required: true = f.datetime_select :end_time, default: 1.day.from_now
- unless @event.moderated? - unless @event.moderated?
.field.repeat .field.repeat
@ -100,7 +100,7 @@
:markdown :markdown
#{t '.tags_helper'} #{t '.tags_helper'}
= f.label :tags = f.label :tags
= f.text_field :tags = f.text_field :tag_list, value: f.object.tag_list.to_s
.actions .actions
= f.button formaction: :preview do = f.button formaction: :preview do

View File

@ -1,8 +1,6 @@
= render '/orgas/search' = render '/orgas/search'
- if params[:year] - if params[:year]
-# Whole year calendar
- @events = @events.year params[:year]
%header.calendar-header.year %header.calendar-header.year
= link_to year: params[:year].to_i - 1, tag: params[:tag], = link_to year: params[:year].to_i - 1, tag: params[:tag],
region: params[:region] do region: params[:region] do

View File

@ -48,7 +48,7 @@
region_id: @event.region.id, region_id: @event.region.id,
locality: @event.locality, locality: @event.locality,
url: @event.url, url: @event.url,
tags: @event.tags }), tag_list: @event.tag_list }),
method: :post do method: :post do
%em.fa.fa-copy %em.fa.fa-copy
= t '.copy' = t '.copy'
@ -112,7 +112,7 @@
%p.tags %p.tags
%em.fa.fa-tags %em.fa.fa-tags
%span.label= Event.human_attribute_name :tags %span.label= Event.human_attribute_name :tags
- @event.tags.split.each do |tag| - @event.tags.each do |tag|
= link_to tag, tag_path(tag), rel: :tag = link_to tag, tag_path(tag), rel: :tag
- if @event.repeat > 0 - if @event.repeat > 0

View File

@ -1,3 +1,3 @@
json.extract! @event, :id, :title, :description, :start_time, :end_time, json.extract! @event, :id, :title, :description, :start_time, :end_time,
:place_name, :address, :city, :region, :locality, :url, :contact, :place_name, :address, :city, :region, :locality, :url, :contact,
:tags :tag_list

View File

@ -13,7 +13,7 @@
#{Event.human_attribute_name(:url).concat(':').ljust 12 } #{@event.url} #{Event.human_attribute_name(:url).concat(':').ljust 12 } #{@event.url}
#{Event.human_attribute_name(:contact).concat(':').ljust 12 } #{@event.contact} #{Event.human_attribute_name(:contact).concat(':').ljust 12 } #{@event.contact}
#{Event.human_attribute_name(:submitter).concat(':').ljust 12 } #{@event.submitter} #{Event.human_attribute_name(:submitter).concat(':').ljust 12 } #{@event.submitter}
#{Event.human_attribute_name(:tags).concat(':').ljust 12 } #{@event.tags} #{Event.human_attribute_name(:tags).concat(':').ljust 12 } #{@event.tag_list}
#{Event.human_attribute_name(:description).concat(':').ljust 12} #{Event.human_attribute_name(:description).concat(':').ljust 12}
= wrap(strip_tags(@event.description).gsub(/&#13;/, '')).gsub /^/, ' ' = wrap(strip_tags(@event.description).gsub(/&#13;/, '')).gsub /^/, ' '
===================================================== =====================================================

View File

@ -76,7 +76,7 @@
:markdown :markdown
#{t '.tags_helper'} #{t '.tags_helper'}
= f.label :tags = f.label :tags
= f.text_field :tags = f.text_field :tag_list, value: f.object.tag_list.to_s
.field.active .field.active
= f.label :active = f.label :active

View File

@ -37,7 +37,7 @@
%td.city= orga.city %td.city= orga.city
%td.department= orga.department %td.department= orga.department
%td.region= orga.region %td.region= orga.region
%td.tags= orga.tags %td.tags= orga.tag_list
%td.updated_at %td.updated_at
- if orga.updated_at.present? - if orga.updated_at.present?
= l orga.updated_at.to_date = l orga.updated_at.to_date

View File

@ -1,6 +1,6 @@
json.array!(@orgas) do |orga| json.array!(@orgas) do |orga|
json.extract! orga, :id, :name, :description, json.extract! orga, :id, :name, :description,
:place_name, :address, :city, :region_id, :url, :place_name, :address, :city, :region_id, :url,
:contact, :tags :contact, :tag_list
json.url orga_url(orga, format: :json) json.url orga_url(orga, format: :json)
end end

View File

@ -110,7 +110,7 @@
%dt %dt
%em.fa.fa-tags %em.fa.fa-tags
= Event.human_attribute_name :tags = Event.human_attribute_name :tags
%dd= @orga.tags %dd= @orga.tag_list
%dt %dt
%em.fa.fa-heartbeat %em.fa.fa-heartbeat
= Orga.human_attribute_name :active = Orga.human_attribute_name :active

View File

@ -1,2 +1,2 @@
json.extract! @orga, :id, :name, :description, json.extract! @orga, :id, :name, :description,
:place_name, :address, :city, :region, :url, :contact, :tags :place_name, :address, :city, :region, :url, :contact, :tag_list

View File

@ -11,7 +11,7 @@
#{Orga.human_attribute_name(:feed).concat(':').ljust 12 } #{@orga.feed} #{Orga.human_attribute_name(:feed).concat(':').ljust 12 } #{@orga.feed}
#{Orga.human_attribute_name(:contact).concat(':').ljust 12 } #{@orga.contact} #{Orga.human_attribute_name(:contact).concat(':').ljust 12 } #{@orga.contact}
#{Orga.human_attribute_name(:submitter).concat(':').ljust 12 } #{@orga.submitter} #{Orga.human_attribute_name(:submitter).concat(':').ljust 12 } #{@orga.submitter}
#{Orga.human_attribute_name(:tags).concat(':').ljust 12 } #{@orga.tags} #{Orga.human_attribute_name(:tags).concat(':').ljust 12 } #{@orga.tag_list}
- if @orga.active.present? - if @orga.active.present?
#{Orga.human_attribute_name(:active).concat(':').ljust 12 } #{t @orga.active.to_s} #{Orga.human_attribute_name(:active).concat(':').ljust 12 } #{t @orga.active.to_s}
- unless @orga.description.blank? - unless @orga.description.blank?

View File

@ -2,8 +2,5 @@
%em.fa.fa-tags %em.fa.fa-tags
= title t '.title' = title t '.title'
- @tags.each do |tag| - tag_cloud @tags, %w(css1 css2 css3 css4) do |tag, css_class|
%span.tag(class="size_#{Math.log2(tag[1]).to_i}") = link_to tag.name, { action: :show, id: tag.name }, class: css_class
= link_to tag[0], tag_path(tag[0])
%p=t '.limited'

View File

@ -2,10 +2,6 @@ require File.expand_path('../boot', __FILE__)
require 'rails/all' require 'rails/all'
# Necessary to actually use this feature
# see https://github.com/reed/actionview-encoded_mail_to/issues/15
require 'action_view/encoded_mail_to/mail_to_with_encoding'
# Require the gems listed in Gemfile, including any gems # Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production. # you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups) Bundler.require(*Rails.groups)

View File

@ -0,0 +1,2 @@
ActsAsTaggableOn.delimiter = ' ' # use space as delimiter
ActsAsTaggableOn.force_lowercase = true

View File

@ -50,7 +50,7 @@ en:
contact: Contact contact: Contact
submitter: Soumetteur submitter: Soumetteur
submission_time: En attente depuis submission_time: En attente depuis
tags: Tags tag_list: Tags
active: Active active: Active
kind: kind:
name_association: Association name_association: Association
@ -81,7 +81,7 @@ en:
contact: Contact contact: Contact
submitter: Submitter submitter: Submitter
submission_time: Waiting for submission_time: Waiting for
tags: Tags tag_list: Tags
reason: Reason reason: Reason
region: region:
name_values: name_values:

View File

@ -50,7 +50,7 @@ fr:
contact: Contact contact: Contact
submitter: Soumetteur submitter: Soumetteur
submission_time: En attente depuis submission_time: En attente depuis
tags: Mots-clés tag_list: Mots-clés
active: Actif active: Actif
kind: kind:
name_association: Association name_association: Association
@ -81,7 +81,7 @@ fr:
contact: Contact contact: Contact
submitter: Soumetteur submitter: Soumetteur
submission_time: En attente depuis submission_time: En attente depuis
tags: Mots-clés tag_list: Mots-clés
reason: Raison reason: Raison
region: region:
name_values: name_values:

View File

@ -24,7 +24,7 @@ en:
propose: Propose an event propose: Propose an event
propose_orga: Propose an organisation propose_orga: Propose an organisation
map: Map map: Map
tags: Tags tag_list: Tags
infos: Infos infos: Infos
stats: Statistics stats: Statistics
contact: Contact contact: Contact
@ -102,8 +102,8 @@ it more readable or agreable.
moderators to contact the person who proposed the event, to inform her moderators to contact the person who proposed the event, to inform her
about her acceptation or rejection. If this address is absent, the about her acceptation or rejection. If this address is absent, the
contact's will be used contact's will be used
tags_helper: Separated with spaces, contain letters, numbers and hyphens. tag_list_helper: Separated with spaces, contain letters, numbers and
Add the event's organisation(s), but not the city or region. hyphens. Add the event's organisation(s), but not the city or region.
save: Validate save: Validate
visualise: Visualise visualise: Visualise
cancel: cancel:
@ -153,7 +153,6 @@ it more readable or agreable.
tags: tags:
index: index:
title: Tags title: Tags
limited: Only tags on more than three events are displayed in this list
show: show:
links: See also links: See also
future: Future future: Future
@ -279,7 +278,7 @@ description."
inform about her acceptation or rejection. If this address is inform about her acceptation or rejection. If this address is
present, this organisation will only be editable by the submitter, who present, this organisation will only be editable by the submitter, who
will receive a secret edition link... will receive a secret edition link...
tags_helper: Separated with spaces, contain letters, numbers and hyphens tag_list_helper: Separated with spaces, contain letters, numbers and hyphens
save: Save save: Save
validate: validate:
title: Organisation moderation title: Organisation moderation

View File

@ -24,7 +24,7 @@ fr:
propose: Proposer un événement propose: Proposer un événement
propose_orga: Proposer une organisation propose_orga: Proposer une organisation
map: Carte map: Carte
tags: Mots-clés tag_list: Mots-clés
infos: Infos infos: Infos
stats: Statistiques stats: Statistiques
contact: Contact contact: Contact
@ -95,9 +95,9 @@ fr:
sera utilisée que par les modérateurs pour contacter la personne ayant sera utilisée que par les modérateurs pour contacter la personne ayant
proposé l'événement, pour l'informer de sa validation ou de son rejet. proposé l'événement, pour l'informer de sa validation ou de son rejet.
Si cette adresse n'est pas présente, l'adresse de contact sera utilisée Si cette adresse n'est pas présente, l'adresse de contact sera utilisée
tags_helper: Séparés par des espaces, constitués de lettres, chiffres et tag_list_helper: Séparés par des espaces, constitués de lettres, chiffres
tirets. Ajoutez le nom de la ou des organisations de l'événement, mais et tirets. Ajoutez le nom de la ou des organisations de l'événement,
pas de la ville ou de la région. mais pas de la ville ou de la région.
save: Valider save: Valider
visualise: Visualiser visualise: Visualiser
cancel: cancel:
@ -149,8 +149,6 @@ fr:
tags: tags:
index: index:
title: Mots-clés title: Mots-clés
limited: Seuls les mots-clés portants sur plus de trois événements sont
affichés dans cette liste
show: show:
links: Voir aussi links: Voir aussi
future: Prochainement future: Prochainement
@ -282,8 +280,8 @@ description plus complète."
Utilisée par les modérateurs pour informer de sa validation ou de son Utilisée par les modérateurs pour informer de sa validation ou de son
rejet. Si cette adresse est présente, l'organisation ne sera modifiable rejet. Si cette adresse est présente, l'organisation ne sera modifiable
que par le soumetteur, qui recevra un lien secret d'édition... que par le soumetteur, qui recevra un lien secret d'édition...
tags_helper: Séparés par des espaces, constitués de lettres, chiffres et tag_list_helper: Séparés par des espaces, constitués de lettres, chiffres
tirets et tirets
save: Envoyer save: Envoyer
validate: validate:
title: Modération d'organisation title: Modération d'organisation

View File

@ -0,0 +1,35 @@
# This migration comes from acts_as_taggable_on_engine (originally 1)
class ActsAsTaggableOnMigration < ActiveRecord::Migration
def taggings
create_table :taggings do |t|
t.references :tag
# You should make sure that the column created is
# long enough to store the required class names.
t.references :taggable, polymorphic: true
t.references :tagger, polymorphic: true
# Limit is created to prevent MySQL error on index
# length for MyISAM table type: http://bit.ly/vgW2Ql
t.string :context, limit: 128
t.datetime :created_at
end
add_index :taggings, :tag_id
add_index :taggings, [:taggable_id, :taggable_type, :context]
end
def self.up
create_table :tags do |t|
t.string :name
end
taggings
end
def self.down
drop_table :taggings
drop_table :tags
end
end

View File

@ -0,0 +1,22 @@
# This migration comes from acts_as_taggable_on_engine (originally 2)
class AddMissingUniqueIndices < ActiveRecord::Migration
def self.up
add_index :tags, :name, unique: true
remove_index :taggings, :tag_id if index_exists?(:taggings, :tag_id)
remove_index :taggings, [:taggable_id, :taggable_type, :context]
add_index :taggings,
[:tag_id, :taggable_id, :taggable_type, :context, :tagger_id,
:tagger_type],
unique: true, name: 'taggings_idx'
end
def self.down
remove_index :tags, :name
remove_index :taggings, name: 'taggings_idx'
add_index :taggings, :tag_id unless index_exists?(:taggings, :tag_id)
add_index :taggings, [:taggable_id, :taggable_type, :context]
end
end

View File

@ -0,0 +1,15 @@
# This migration comes from acts_as_taggable_on_engine (originally 3)
class AddTaggingsCounterCacheToTags < ActiveRecord::Migration
def self.up
add_column :tags, :taggings_count, :integer, default: 0
ActsAsTaggableOn::Tag.reset_column_information
ActsAsTaggableOn::Tag.find_each do |tag|
ActsAsTaggableOn::Tag.reset_counters(tag.id, :taggings)
end
end
def self.down
remove_column :tags, :taggings_count
end
end

View File

@ -0,0 +1,10 @@
# This migration comes from acts_as_taggable_on_engine (originally 4)
class AddMissingTaggableIndex < ActiveRecord::Migration
def self.up
add_index :taggings, [:taggable_id, :taggable_type, :context]
end
def self.down
remove_index :taggings, [:taggable_id, :taggable_type, :context]
end
end

View File

@ -0,0 +1,10 @@
# This migration comes from acts_as_taggable_on_engine (originally 5)
# This migration is added to circumvent issue #623 and have special characters
# work properly
class ChangeCollationForTagNames < ActiveRecord::Migration
def up
return unless ActsAsTaggableOn::Utils.using_mysql?
execute 'ALTER TABLE tags MODIFY name varchar(255)
CHARACTER SET utf8 COLLATE utf8_bin;'
end
end

View File

@ -0,0 +1,14 @@
# This migration comes from acts_as_taggable_on_engine (originally 6)
class AddMissingIndexes < ActiveRecord::Migration
def change
add_index :taggings, :tag_id
add_index :taggings, :taggable_id
add_index :taggings, :taggable_type
add_index :taggings, :tagger_id
add_index :taggings, :context
add_index :taggings, [:tagger_id, :tagger_type]
add_index :taggings, [:taggable_id, :taggable_type, :tagger_id, :context],
name: 'taggings_idy'
end
end

View File

@ -0,0 +1,20 @@
# Migrate tags from inline attribute to separate table
class PopulateTags < ActiveRecord::Migration
def self.up
execute('SELECT id, tags FROM events;').each do |result|
event = Event.find_by id: result[0]
event.tag_list = result[1] + ' helo world'
event.save
say event.id
say event.tag_list
end
change_column :events, :tags, :text, null: true
change_column :orgas, :tags, :text, null: true
end
def self.down
change_column :events, :tags, :text, null: false
change_column :orgas, :tags, :text, null: false
end
end

View File

@ -11,7 +11,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20161031215120) do ActiveRecord::Schema.define(version: 20161210154558) do
create_table "active_admin_comments", force: :cascade do |t| create_table "active_admin_comments", force: :cascade do |t|
t.string "namespace", limit: 255 t.string "namespace", limit: 255
@ -29,16 +29,16 @@ ActiveRecord::Schema.define(version: 20161031215120) do
add_index "active_admin_comments", ["resource_type", "resource_id"], name: "index_active_admin_comments_on_resource_type_and_resource_id" add_index "active_admin_comments", ["resource_type", "resource_id"], name: "index_active_admin_comments_on_resource_type_and_resource_id"
create_table "admin_users", force: :cascade do |t| create_table "admin_users", force: :cascade do |t|
t.string "email", limit: 255, default: "", null: false t.string "email", default: "", null: false
t.string "encrypted_password", limit: 255, default: "", null: false t.string "encrypted_password", default: "", null: false
t.string "reset_password_token", limit: 255 t.string "reset_password_token"
t.datetime "reset_password_sent_at" t.datetime "reset_password_sent_at"
t.datetime "remember_created_at" t.datetime "remember_created_at"
t.integer "sign_in_count", limit: 4, default: 0, null: false t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at" t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at" t.datetime "last_sign_in_at"
t.string "current_sign_in_ip", limit: 255 t.string "current_sign_in_ip"
t.string "last_sign_in_ip", limit: 255 t.string "last_sign_in_ip"
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
end end
@ -70,7 +70,7 @@ ActiveRecord::Schema.define(version: 20161031215120) do
t.string "contact", limit: 255, default: "", null: false t.string "contact", limit: 255, default: "", null: false
t.string "submitter", limit: 255, default: "", null: false t.string "submitter", limit: 255, default: "", null: false
t.integer "moderated", limit: 4, default: 0, null: false t.integer "moderated", limit: 4, default: 0, null: false
t.string "tags", limit: 255, default: "", null: false t.text "tags", limit: 255, default: ""
t.string "secret", limit: 255, default: "", null: false t.string "secret", limit: 255, default: "", null: false
t.datetime "decision_time" t.datetime "decision_time"
t.datetime "submission_time" t.datetime "submission_time"
@ -124,7 +124,7 @@ ActiveRecord::Schema.define(version: 20161031215120) do
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
t.text "tag" t.text "tag"
t.string "tags", limit: 255, default: "", null: false t.text "tags", default: ""
t.text "diaspora" t.text "diaspora"
t.text "object_changes" t.text "object_changes"
t.text "place_name" t.text "place_name"
@ -142,23 +142,21 @@ ActiveRecord::Schema.define(version: 20161031215120) do
create_table "taggings", force: :cascade do |t| create_table "taggings", force: :cascade do |t|
t.integer "tag_id" t.integer "tag_id"
t.integer "taggable_id" t.integer "taggable_id"
t.string "taggable_type", limit: 255 t.string "taggable_type"
t.integer "tagger_id" t.integer "tagger_id"
t.string "tagger_type", limit: 255 t.string "tagger_type"
t.string "context", limit: 128 t.string "context", limit: 128
t.datetime "created_at" t.datetime "created_at"
end end
add_index "taggings", ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true add_index "taggings", ["tag_id"], name: "index_taggings_on_tag_id"
add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context" add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context"
create_table "tags", force: :cascade do |t| create_table "tags", force: :cascade do |t|
t.string "name", limit: 255 t.string "name"
t.integer "taggings_count", default: 0 t.integer "taggings_count", default: 0
end end
add_index "tags", ["name"], name: "index_tags_on_name", unique: true
create_table "translations", force: :cascade do |t| create_table "translations", force: :cascade do |t|
t.string "locale", limit: 255 t.string "locale", limit: 255
t.string "key", limit: 255 t.string "key", limit: 255
@ -168,13 +166,19 @@ ActiveRecord::Schema.define(version: 20161031215120) do
end end
create_table "users", force: :cascade do |t| create_table "users", force: :cascade do |t|
t.string "login", limit: 255, default: "", null: false t.string "login", limit: 255, default: "", null: false
t.string "password", limit: 255, default: "", null: false t.string "password", limit: 255, default: "", null: false
t.string "email", limit: 255, default: "", null: false t.string "email", limit: 255, default: "", null: false
t.string "lastname", limit: 255, default: "", null: false t.string "lastname", limit: 255, default: "", null: false
t.string "firstname", limit: 255, default: "", null: false t.string "firstname", limit: 255, default: "", null: false
t.string "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.datetime "remember_created_at"
end end
add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
create_table "versions", force: :cascade do |t| create_table "versions", force: :cascade do |t|
t.string "item_type", null: false t.string "item_type", null: false
t.integer "item_id", null: false t.integer "item_id", null: false

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,47 +0,0 @@
(function() {
$(document).on('ready page:load', function() {
var batch_actions_selector;
$(document).on('focus', '.datepicker:not(.hasDatepicker)', function() {
var defaults, options;
defaults = {
dateFormat: 'yy-mm-dd'
};
options = $(this).data('datepicker-options');
return $(this).datepicker($.extend(defaults, options));
});
$('.clear_filters_btn').click(function() {
var param, params, regex;
params = window.location.search.split('&');
regex = /^(q\[|q%5B|q%5b|page|commit)/;
return window.location.search = ((function() {
var i, len, results;
results = [];
for (i = 0, len = params.length; i < len; i++) {
param = params[i];
if (!param.match(regex)) {
results.push(param);
}
}
return results;
})()).join('&');
});
$('.filter_form').submit(function() {
return $(this).find(':input').filter(function() {
return this.value === '';
}).prop('disabled', true);
});
$('.filter_form_field.select_and_search select').change(function() {
return $(this).siblings('input').prop({
name: "q[" + this.value + "]"
});
});
$('#active_admin_content .tabs').tabs();
if ((batch_actions_selector = $('.table_tools .batch_actions_selector')).length) {
return batch_actions_selector.next().css({
width: "calc(100% - 10px - " + (batch_actions_selector.outerWidth()) + "px)",
'float': 'right'
});
}
});
}).call(this);

View File

@ -1,51 +0,0 @@
(function() {
$(document).on('ready page:load', function() {
var batch_actions_selector;
$(document).on('focus', 'input.datepicker:not(.hasDatepicker)', function() {
var $input, defaults, options;
$input = $(this);
if ($input[0].type === 'date') {
return;
}
defaults = {
dateFormat: 'yy-mm-dd'
};
options = $input.data('datepicker-options');
return $input.datepicker($.extend(defaults, options));
});
$('.clear_filters_btn').click(function() {
var param, params, regex;
params = window.location.search.split('&');
regex = /^(q\[|q%5B|q%5b|page|commit)/;
return window.location.search = ((function() {
var i, len, results;
results = [];
for (i = 0, len = params.length; i < len; i++) {
param = params[i];
if (!param.match(regex)) {
results.push(param);
}
}
return results;
})()).join('&');
});
$('.filter_form').submit(function() {
return $(this).find(':input').filter(function() {
return this.value === '';
}).prop('disabled', true);
});
$('.filter_form_field.select_and_search select').change(function() {
return $(this).siblings('input').prop({
name: "q[" + this.value + "]"
});
});
$('#active_admin_content .tabs').tabs();
if ((batch_actions_selector = $('.table_tools .batch_actions_selector')).length) {
return batch_actions_selector.next().css({
width: "calc(100% - 10px - " + (batch_actions_selector.outerWidth()) + "px)",
'float': 'right'
});
}
});
}).call(this);

View File

@ -1,596 +0,0 @@
/* Active Admin Print Stylesheet */
/* line 37, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/mixins/_reset.scss */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-weight: inherit;
font-style: inherit;
font-size: 100%;
font-family: inherit;
vertical-align: baseline;
}
/* line 47, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/mixins/_reset.scss */
body {
line-height: 1;
color: black;
background: white;
}
/* line 49, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/mixins/_reset.scss */
ol, ul {
list-style: none;
}
/* line 51, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/mixins/_reset.scss */
table {
border-collapse: separate;
border-spacing: 0;
vertical-align: middle;
}
/* line 53, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/mixins/_reset.scss */
caption, th, td {
text-align: left;
font-weight: normal;
vertical-align: middle;
}
/* line 55, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/mixins/_reset.scss */
q, blockquote {
quotes: "" "";
}
/* line 126, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/mixins/_reset.scss */
q:before, q:after, blockquote:before, blockquote:after {
content: "";
}
/* line 57, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/mixins/_reset.scss */
a img {
border: none;
}
/* line 27, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
html {
font-size: 100.01%;
}
/* line 28, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
body {
font-size: 75%;
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
}
/* line 31, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
h1, h2, h3, h4, h5, h6 {
font-weight: normal;
color: black;
}
/* line 34, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {
margin: 0;
}
/* line 37, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
h1 {
font-size: 3em;
line-height: 1;
margin-bottom: 0.5em;
}
/* line 38, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
h2 {
font-size: 2em;
margin-bottom: 0.75em;
}
/* line 39, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
h3 {
font-size: 1.5em;
line-height: 1;
margin-bottom: 1em;
}
/* line 40, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
h4 {
font-size: 1.2em;
line-height: 1.25;
margin-bottom: 1.25em;
}
/* line 41, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
h5 {
font-size: 1em;
font-weight: bold;
margin-bottom: 1.5em;
}
/* line 42, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
h6 {
font-size: 1em;
font-weight: bold;
}
/* line 45, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
p {
margin: 0 0 1.5em;
}
/* line 48, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
p .left {
margin: 1.5em 1.5em 1.5em 0;
padding: 0;
}
/* line 49, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
p .right {
margin: 1.5em 0 1.5em 1.5em;
padding: 0;
}
/* line 52, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.left {
float: left !important;
}
/* line 53, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.right {
float: right !important;
}
/* line 55, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
blockquote {
margin: 1.5em;
color: #666;
font-style: italic;
}
/* line 56, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
strong, dfn {
font-weight: bold;
}
/* line 57, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
em, dfn {
font-style: italic;
}
/* line 58, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
sup, sub {
line-height: 0;
}
/* line 60, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
abbr,
acronym {
border-bottom: 1px dotted #666;
}
/* line 62, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
address {
margin: 0 0 1.5em;
font-style: italic;
}
/* line 63, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
del {
color: #666;
}
/* line 65, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
pre {
margin: 1.5em 0;
white-space: pre;
}
/* line 66, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
pre, code, tt {
font: 1em 'andale mono', 'lucida console', monospace;
line-height: 1.5;
}
/* line 69, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
li ul,
li ol {
margin: 0;
}
/* line 71, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
ul, ol {
margin: 0 1.5em 1.5em 0;
padding-left: 1.5em;
}
/* line 73, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
ul {
list-style-type: disc;
}
/* line 74, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
ol {
list-style-type: decimal;
}
/* line 76, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
dl {
margin: 0 0 1.5em 0;
}
/* line 77, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
dl dt {
font-weight: bold;
}
/* line 78, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
dd {
margin-left: 1.5em;
}
/* line 81, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
table {
margin-bottom: 1.4em;
width: 100%;
}
/* line 82, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
th {
font-weight: bold;
}
/* line 83, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
thead th {
background: #c3d9ff;
}
/* line 84, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
th, td, caption {
padding: 4px 10px 4px 5px;
}
/* line 87, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.small {
font-size: .8em;
margin-bottom: 1.875em;
line-height: 1.875em;
}
/* line 88, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.large {
font-size: 1.2em;
line-height: 2.5em;
margin-bottom: 1.25em;
}
/* line 89, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.hide {
display: none;
}
/* line 91, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.quiet {
color: #666;
}
/* line 92, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.loud {
color: #000;
}
/* line 93, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.highlight {
background: #ff0;
}
/* line 94, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.added {
background: #060;
color: #fff;
}
/* line 95, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.removed {
background: #900;
color: #fff;
}
/* line 97, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.first {
margin-left: 0;
padding-left: 0;
}
/* line 98, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.last {
margin-right: 0;
padding-right: 0;
}
/* line 99, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.top {
margin-top: 0;
padding-top: 0;
}
/* line 100, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/_typography.scss */
.bottom {
margin-bottom: 0;
padding-bottom: 0;
}
/* line 14, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
body {
font-family: Helvetica, Arial, sans-serif;
line-height: 150%;
font-size: 72%;
background: #fff;
width: 99%;
margin: 0;
padding: .5%;
color: black;
}
/* line 25, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
a {
color: black;
text-decoration: none;
}
/* line 30, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
h3 {
font-weight: bold;
margin-bottom: .5em;
}
/* line 36, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
#header {
float: left;
}
/* line 39, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
#header #tabs, #header .tabs, #header #utility_nav {
display: none;
}
/* line 43, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
#header h1 {
font-weight: bold;
}
/* line 48, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.flashes {
display: none;
}
/* line 52, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
#title_bar {
float: right;
}
/* line 55, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
#title_bar h2 {
line-height: 2em;
margin: 0;
}
/* line 60, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
#title_bar .breadcrumb, #title_bar #titlebar_right {
display: none;
}
/* line 66, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
#active_admin_content {
border-top: thick solid black;
clear: both;
margin-top: 2em;
padding-top: 3em;
}
/* line 74, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
#footer {
display: none;
}
/* line 80, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.table_tools ul {
padding: 0;
margin: 0;
list-style-type: none;
}
/* line 85, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.table_tools ul li {
display: none;
padding: 0;
margin-bottom: 1em;
}
/* line 90, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.table_tools ul li.scope.selected, .table_tools ul li.index.selected {
display: block;
}
/* line 93, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.table_tools ul li.scope.selected:before, .table_tools ul li.index.selected:before {
content: "Showing ";
}
/* line 97, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.table_tools ul li.scope.selected a, .table_tools ul li.index.selected a {
font-weight: bold;
}
/* line 101, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.table_tools ul li.scope.selected span, .table_tools ul li.index.selected span {
display: inline-block;
font-weight: normal;
font-size: .9em;
}
/* line 112, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
table {
margin-bottom: 1.5em;
text-align: left;
width: 100%;
}
/* line 117, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
table thead {
display: table-header-group;
}
/* line 120, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
table thead th {
background: none;
border-bottom: medium solid black;
font-weight: bold;
}
/* line 125, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
table thead th a {
text-decoration: none;
}
/* line 131, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
table th, table td {
padding: .5em 1em;
}
/* line 134, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
table th .member_link, table td .member_link {
display: none;
}
/* line 139, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
table td {
border-bottom: thin solid black;
}
/* line 143, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
table tr {
page-break-inside: avoid;
}
/* line 149, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
#index_footer, .pagination_information {
display: none;
}
/* line 154, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.index_grid td {
border: none;
text-align: center;
vertical-align: middle;
}
/* line 159, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.index_grid td img {
max-width: 1in;
}
/* line 166, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.panel {
border-bottom: thick solid #ccc;
margin-bottom: 3em;
padding-bottom: 2em;
page-break-inside: avoid;
}
/* line 172, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.panel:last-child {
border-bottom: none;
}
/* line 178, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.comments form {
display: none;
}
/* line 182, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.comments .active_admin_comment {
border-top: thin solid black;
padding-top: 1em;
}
/* line 187, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.comments .active_admin_comment .active_admin_comment_meta h4 {
font-size: 1em;
font-weight: bold;
float: left;
margin-right: .5em;
margin-bottom: 0;
}
/* line 195, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.comments .active_admin_comment .active_admin_comment_meta span {
font-size: .9em;
font-style: italic;
vertical-align: top;
}
/* line 202, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.comments .active_admin_comment .active_admin_comment_body {
clear: both;
margin-bottom: 1em;
}
/* line 211, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.attributes_table {
border-top: medium solid black;
}
/* line 214, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.attributes_table th {
border-bottom: thin solid black;
vertical-align: top;
}
/* line 218, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.attributes_table th:after {
content: ':';
}
/* line 224, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.attributes_table td img {
max-height: 4in;
max-width: 6in;
}
/* line 232, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
#filters_sidebar_section {
display: none;
}
/* line 238, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
form fieldset {
border-top: thick solid #ccc;
padding-top: 2em;
margin-bottom: 2em;
}
/* line 243, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
form fieldset:last-child {
border-bottom: none;
}
/* line 248, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
form .buttons, form abbr {
display: none;
}
/* line 251, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
form ol {
list-style-type: none;
padding: 0;
margin: 0;
}
/* line 256, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
form ol li {
border-top: thin solid black;
margin: 0;
padding: 1em 0;
overflow: hidden;
}
/* line 262, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
form ol li.password, form ol li.hidden {
display: none;
}
/* line 266, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
form ol li label {
font-weight: bold;
float: left;
width: 20%;
}
/* line 272, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
form ol li input, form ol li textarea, form ol li select {
background: none;
border: 0;
font: Arial, Helvetica, sans-serif;
}
/* line 278, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
form ol li input[type=file] {
display: none;
}
/* line 286, /var/lib/gems/2.3.0/gems/activeadmin-1.0.0.pre2/app/assets/stylesheets/active_admin/print.scss */
.unsupported_browser {
display: none;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More