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-i18n'
gem 'http_accept_language'
gem 'rails-i18n'
# Store some specific content, like application name and static pages contents
gem 'i18n-active_record',
github: 'svenfuchs/i18n-active_record',
require: 'i18n/active_record'
gem 'http_accept_language'
# Remove leading and trailing white spaces
gem 'strip_attributes'
# Track changes to models' data
@ -42,14 +42,15 @@ gem 'piwik_analytics'
# Validate mails submitted
gem 'email_validator'
# 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
gem 'differ'
# A generic library to administrate the tool
gem 'activeadmin', '~> 1.0.0.pre4'
# A nicer markdown editor in active admin
gem 'activeadmin_pagedown'
gem 'activeadmin', github: 'activeadmin'
gem 'jquery-sparkline-rails', github: 'cubus/jquery-sparkline-rails'
@ -57,8 +58,8 @@ gem 'jquery-sparkline-rails', github: 'cubus/jquery-sparkline-rails'
gem 'redcarpet'
# Carte openstreetmap
gem 'leaflet-rails'
gem 'leaflet-markercluster-rails'
gem 'leaflet-rails'
gem 'geocoder'
@ -66,15 +67,18 @@ gem 'geocoder'
gem 'tinymce-rails'
gem 'tinymce-rails-langs'
gem 'acts-as-taggable-on'
gem 'tagsinput-rails'
# SEO optimisations
gem 'meta-tags'
gem 'twitter'
group :development do
gem 'quiet_assets'
gem 'sqlite3'
gem 'webrick'
gem 'quiet_assets'
# Access an IRB console on exception pages or by using <%= console %> in views
gem 'web-console'
@ -86,17 +90,17 @@ group :development do
# Scanning the Gemfile for insecure dependencies based on published CVEs
gem 'bundler-audit'
gem 'guard-rails', require: false
gem 'guard-migrate', require: false
gem 'guard-bundler', require: false
gem 'guard-rubocop', require: false
gem 'guard-minitest', 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 'rack-livereload'
# Security checks
gem 'brakeman', require: false
gem 'guard-brakeman', require: false
gem 'guard-rails', require: false
end
group :test do
@ -116,8 +120,7 @@ group :development, :test, :assets do
gem 'coffee-rails'
# Use jquery as the JavaScript library
# Limited to before 4.1, because later version breaks the date/time selector
gem 'jquery-rails', '< 4.1'
gem 'jquery-rails'
# Turbolinks makes following links in your web application
# faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
@ -126,13 +129,6 @@ group :development, :test, :assets do
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
gem 'font-awesome-sass'
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
remote: git://github.com/cubus/jquery-sparkline-rails.git
revision: c5b531f51e3e734710c7561b06c2c829107f9b38
@ -37,22 +56,6 @@ GEM
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview-encoded_mail_to (1.0.8)
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)
activesupport (= 4.2.7.1)
globalid (>= 0.3.0)
@ -69,6 +72,8 @@ GEM
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
acts-as-taggable-on (4.0.0)
activerecord (>= 4.0)
addressable (2.5.0)
public_suffix (~> 2.0, >= 2.0.2)
arbre (1.1.1)
@ -93,7 +98,7 @@ GEM
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.10.0)
coffee-script-source (1.12.2)
concurrent-ruby (1.0.2)
debug_inspector (0.0.2)
devise (4.2.0)
@ -105,18 +110,18 @@ GEM
devise-i18n (1.1.1)
differ (0.1.2)
docile (1.1.5)
domain_name (0.5.20161021)
domain_name (0.5.20161129)
unf (>= 0.0.5, < 1.0.0)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
email_validator (1.6.0)
activemodel
equalizer (0.0.10)
equalizer (0.0.11)
erubis (2.7.0)
eventmachine (1.2.0.1)
eventmachine (1.2.1)
execjs (2.7.0)
faraday (0.9.2)
faraday (0.10.0)
multipart-post (>= 1.2, < 3)
ffi (1.9.14)
font-awesome-sass (4.7.0)
@ -125,7 +130,7 @@ GEM
formtastic (3.1.4)
actionpack (>= 3.2.13)
formtastic_i18n (0.6.0)
geocoder (1.4.0)
geocoder (1.4.1)
globalid (0.3.7)
activesupport (>= 4.1.0)
guard (2.14.0)
@ -171,9 +176,9 @@ GEM
haml (>= 4.0.6, < 5.0)
html2haml (>= 1.0.1)
railties (>= 4.0.1)
haml_lint (0.18.4)
haml_lint (0.19.0)
haml (~> 4.0)
rake (>= 10, < 12)
rake (>= 10, < 13)
rubocop (>= 0.36.0)
sysexits (~> 1.1)
has_scope (0.6.0)
@ -185,7 +190,7 @@ GEM
haml (~> 4.0.0)
nokogiri (~> 1.6.0)
ruby_parser (~> 3.5)
http (1.0.4)
http (2.1.0)
addressable (~> 2.3)
http-cookie (~> 1.0)
http-form_data (~> 1.0.1)
@ -202,14 +207,14 @@ GEM
has_scope (~> 0.6.0.rc)
railties (>= 3.2, < 5)
responders
jbuilder (2.6.0)
jbuilder (2.6.1)
activesupport (>= 3.0.0, < 5.1)
multi_json (~> 1.2)
jquery-rails (4.0.5)
rails-dom-testing (~> 1.0)
jquery-rails (4.2.1)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
jquery-ui-rails (5.0.5)
jquery-ui-rails (6.0.1)
railties (>= 3.2.16)
json (1.8.3)
kaminari (0.17.0)
@ -218,7 +223,7 @@ GEM
leaflet-markercluster-rails (0.7.0)
railties (>= 3.1)
leaflet-rails (0.7.7)
libv8 (3.16.14.15)
libv8 (3.16.14.17)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
@ -230,14 +235,14 @@ GEM
mime-types (>= 1.16, < 4)
memoizable (0.4.2)
thread_safe (~> 0.3, >= 0.3.1)
meta-tags (2.3.1)
meta-tags (2.4.0)
actionpack (>= 3.2.0, <= 5.1.0)
method_source (0.8.2)
mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mini_portile2 (2.1.0)
minitest (5.9.1)
minitest (5.10.1)
modernizr-rails (2.7.1)
multi_json (1.12.1)
multipart-post (2.0.0)
@ -250,10 +255,10 @@ GEM
nenv (~> 0.1)
shellany (~> 0.0)
orm_adapter (0.5.0)
paper_trail (5.2.2)
activerecord (>= 3.0, < 6.0)
paper_trail (6.0.2)
activerecord (>= 4.0, < 5.2)
request_store (~> 1.1)
parser (2.3.1.4)
parser (2.3.3.1)
ast (~> 2.2)
piwik_analytics (1.0.2)
actionpack
@ -302,7 +307,7 @@ GEM
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rainbow (2.1.0)
rake (11.3.0)
rake (12.0.0)
ransack (1.8.2)
actionpack (>= 3.0)
activerecord (>= 3.0)
@ -318,7 +323,7 @@ GEM
request_store (1.3.1)
responders (2.3.0)
railties (>= 4.2.0, < 5.1)
rubocop (0.45.0)
rubocop (0.46.0)
parser (>= 2.3.1.1, < 3.0)
powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0)
@ -338,11 +343,9 @@ GEM
sdoc (0.4.2)
json (~> 1.7, >= 1.7.7)
rdoc (~> 4.0)
select2-rails (3.5.10)
thor (~> 0.14)
sexp_processor (4.7.0)
shellany (0.0.1)
simple_calendar (2.2.0)
simple_calendar (2.2.2)
rails (>= 3.0)
simple_oauth (0.3.1)
simplecov (0.12.0)
@ -364,38 +367,39 @@ GEM
strip_attributes (1.8.0)
activemodel (>= 3.0, < 6.0)
sysexits (1.2.0)
tagsinput-rails (1.3.5.1)
railties (>= 3.1)
therubyracer (0.12.2)
libv8 (~> 3.16.14.0)
ref
thor (0.19.1)
thor (0.19.4)
thread_safe (0.3.5)
tilt (2.0.5)
tinymce-rails (4.4.3)
tinymce-rails (4.5.1)
railties (>= 3.1.1)
tinymce-rails-langs (4.20160310)
tinymce-rails (~> 4.1, >= 4.1.10)
turbolinks (5.0.1)
turbolinks-source (~> 5)
turbolinks-source (5.0.0)
twitter (5.16.0)
addressable (~> 2.3)
twitter (6.0.0)
addressable (~> 2.5)
buftok (~> 0.2.0)
equalizer (= 0.0.10)
faraday (~> 0.9.0)
http (~> 1.0)
equalizer (= 0.0.11)
faraday (~> 0.10.0)
http (~> 2.1)
http_parser.rb (~> 0.6.0)
json (~> 1.8)
memoizable (~> 0.4.0)
naught (~> 1.0)
simple_oauth (~> 0.3.0)
memoizable (~> 0.4.2)
naught (~> 1.1)
simple_oauth (~> 0.3.1)
tzinfo (1.2.2)
thread_safe (~> 0.1)
uglifier (3.0.3)
uglifier (3.0.4)
execjs (>= 0.3.0, < 3)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.2)
unicode-display_width (1.1.1)
unicode-display_width (1.1.2)
warden (1.2.6)
rack (>= 1.0)
web-console (3.3.0)
@ -403,16 +407,14 @@ GEM
debug_inspector
railties (>= 4.2)
webrick (1.3.1)
webshims-rails (1.15.10)
rails (> 3.1.0)
PLATFORMS
ruby
DEPENDENCIES
actionview-encoded_mail_to
activeadmin (~> 1.0.0.pre4)
activeadmin_pagedown
activeadmin!
acts-as-taggable-on
brakeman
bundler-audit
byebug
@ -438,7 +440,7 @@ DEPENDENCIES
i18n-active_record!
ice_cube
jbuilder
jquery-rails (< 4.1)
jquery-rails
jquery-sparkline-rails!
leaflet-markercluster-rails
leaflet-rails
@ -454,12 +456,12 @@ DEPENDENCIES
redcarpet
sass-rails
sdoc
select2-rails (< 4)
simple_calendar
simplecov
spring
sqlite3
strip_attributes
tagsinput-rails
therubyracer
tinymce-rails
tinymce-rails-langs
@ -468,7 +470,6 @@ DEPENDENCIES
uglifier
web-console
webrick
webshims-rails
BUNDLED WITH
1.12.5
1.13.6

View File

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

View File

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

View File

@ -13,33 +13,24 @@
#= require jquery
#= require jquery_ujs
#= require jquery.sparkline
# For tags input
#= require jquery-ui/widgets/autocomplete
#= require jquery.tagsinput
#= require turbolinks
#= require tinymce-jquery
#= require modernizr
#= require webshims/polyfiller
#= require select2
#= require select2_locale_fr
#= require leaflet
#= require leaflet.markercluster
#= require leaflet.awesome-markers
#= 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', ->
# Reload polyfill when turbolinks loads a new page
$(this).updatePolyfill()
# Hides the chrome broken image when image is absent
if !Modernizr.testAllProps('forceBrokenImageIcon')
$('img.favicon').one 'error', ->
$(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', ->
# Manage the tags label so it points the proper select2 input
$('label[for=event_tags]').attr 'for', 's2id_autogen1'
$('#event_start_time').change ->
if $('#event_start_time').val() >= $('#event_end_time').val()
$('#event_end_time').val($('#event_start_time').val())
@ -27,5 +24,3 @@ $(document).on 'turbolinks:load', ->
url: '/tags.json'
.done (data) ->
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
box-shadow: 1px 1px 2px lightgray
border-radius: 0.4em
input, textarea, select, a.button, button, .select2-container ul
input, textarea, select, a.button, button
color: black
margin: 3px 0
border: 1px solid darkgray
@ -281,13 +281,3 @@ footer.bottom nav
display: none
span.next
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
* file per style scope.
*
*= require select2
*= require jquery-ui
*= require jquery.tagsinput
*= require_tree .
*/

View File

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

View File

@ -125,8 +125,6 @@
display: block
text-align: left
margin-left: 0
input, .select2-container ul, .mce-tinymce
input, .mce-tinymce
width: 100%
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
vertical-align: middle
&.size_1
font-size: 60%
letter-spacing: -1px
&.size_2
font-size: 80%
letter-spacing: -1px
&.size_3
font-size: 100%
&.size_4
font-size: 120%
&.size_5
font-size: 180%
&.size_6
font-size: 200%
&.size_7
font-size: 220%
&.size_8
font-size: 240%
&.css1
font-size: 1.0em
&.css2
font-size: 1.2em
&.css3
font-size: 1.4em
&.css4
font-size: 1.6em
.tagsinput
border: none !important
padding: 0 !important
display: inline-block
min-width: 22em
vertical-align: top
input, .ui-autocomplete-input
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
# This is a central part to this project
class EventsController < ApplicationController
has_scope :region, :locality, :tag, :daylimit
has_scope :region, :locality, :tag, :daylimit, :year
has_scope :near, type: :hash, using: [:location, :distance]
before_action :set_events, only: [:index]
@ -105,7 +105,7 @@ class EventsController < ApplicationController
params.require(:event)
.permit :lock_version, :title, :start_time, :end_time, :repeat, :rule,
:description, :place_name, :address, :city, :region_id,
:locality, :url, :contact, :submitter, :tags
:locality, :url, :contact, :submitter, :tag_list
end
def filter_for_rss

View File

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

View File

@ -92,7 +92,7 @@ class OrgasController < ApplicationController
params.require(:orga)
.permit :lock_version, :kind_id, :name, :description, :place_name,
:address, :city, :department, :region_id, :url, :diaspora,
:feed, :contact, :submitter, :tags, :active
:feed, :contact, :submitter, :tag_list, :active
end
# 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
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|
format.html
@ -14,8 +19,8 @@ class TagsController < InheritedResources::Base
end
def show
@events_future = apply_scopes(Event).moderated.future
@events_past = apply_scopes(Event).moderated.past
@events_future = apply_scopes Event.moderated.future
@events_past = apply_scopes Event.moderated.past
respond_to do |format|
format.html

View File

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

View File

@ -3,7 +3,7 @@ module EventsHelper
def set_events_meta
set_meta_tags \
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 },
DC: {
title: t('layouts.application.title'),
@ -14,7 +14,7 @@ module EventsHelper
def set_event_meta
set_meta_tags \
keywords: @event.tags,
keywords: @event.tag_list,
DC: { title: @event.title, date: @event.start_time.to_s },
geo: {
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
extend SimpleCalendar
include Schedule
acts_as_taggable
strip_attributes
has_paper_trail ignore: [:last_updated, :lock_version, :secret, :submitter,
:decision_time, :latitude, :longitude]
@ -24,7 +25,6 @@ class Event < ActiveRecord::Base
validates :url, presence: true, format: %r{\Ahttps?:\/\/.*\..*\z}
validates :contact, email: true
validates :submitter, email: true
validates :tags, presence: true, format: /\A[\p{Alnum}\s-]*\z/
geocoded_by :full_address
# 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
attr_accessor :reason
before_validation EventCallbacks
before_create EventCallbacks
after_create EventCallbacks
@ -66,7 +64,7 @@ class Event < ActiveRecord::Base
end)
scope :region, ->(region) { where region: region unless region == 'all' }
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' }
before_validation on: :create do
@ -86,7 +84,7 @@ class Event < ActiveRecord::Base
{ type: 'Feature', properties: {
id: id, name: title, start_time: start_time, end_time: end_time,
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] } }
end
@ -97,7 +95,7 @@ class Event < ActiveRecord::Base
end
def hashtags
tags.split.map { |tag| "##{tag.tr('-', '_').camelize :lower}" }
tag_list.map { |tag| "##{tag.tr('-', '_').camelize :lower}" }
end
def to_s

View File

@ -1,11 +1,6 @@
# All the mail and tweet related callbacks to event's lifecycle
# also the scheduled events
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)
event.secret ||= SecureRandom.urlsafe_base64(32)[0...32]
event.moderator_mail_id ||= SecureRandom.urlsafe_base64(32)[0...32]
@ -59,7 +54,9 @@ class EventCallbacks
end
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[:end_time] = schedule.end_time
att

View File

@ -1,5 +1,6 @@
# Organisations related to this agenda
class Orga < ActiveRecord::Base
acts_as_taggable
strip_attributes
has_paper_trail ignore: [:last_updated, :secret, :submitter, :decision_time,
:lock_version, :latitude, :longitude]
@ -31,7 +32,7 @@ class Orga < ActiveRecord::Base
scope :period, ->(_year, _week) {}
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' }
before_validation do

View File

@ -15,10 +15,10 @@
= f.text_field :title, required: true, placeholder: t('.title_helper')
.field.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
= 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?
.field.repeat
@ -100,7 +100,7 @@
:markdown
#{t '.tags_helper'}
= f.label :tags
= f.text_field :tags
= f.text_field :tag_list, value: f.object.tag_list.to_s
.actions
= f.button formaction: :preview do

View File

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

View File

@ -48,7 +48,7 @@
region_id: @event.region.id,
locality: @event.locality,
url: @event.url,
tags: @event.tags }),
tag_list: @event.tag_list }),
method: :post do
%em.fa.fa-copy
= t '.copy'
@ -112,7 +112,7 @@
%p.tags
%em.fa.fa-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
- if @event.repeat > 0

View File

@ -1,3 +1,3 @@
json.extract! @event, :id, :title, :description, :start_time, :end_time,
: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(:contact).concat(':').ljust 12 } #{@event.contact}
#{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}
= wrap(strip_tags(@event.description).gsub(/&#13;/, '')).gsub /^/, ' '
=====================================================

View File

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

View File

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

View File

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

View File

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

View File

@ -1,2 +1,2 @@
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(:contact).concat(':').ljust 12 } #{@orga.contact}
#{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?
#{Orga.human_attribute_name(:active).concat(':').ljust 12 } #{t @orga.active.to_s}
- unless @orga.description.blank?

View File

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

View File

@ -2,10 +2,6 @@ require File.expand_path('../boot', __FILE__)
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
# you've limited to :test, :development, or :production.
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
submitter: Soumetteur
submission_time: En attente depuis
tags: Tags
tag_list: Tags
active: Active
kind:
name_association: Association
@ -81,7 +81,7 @@ en:
contact: Contact
submitter: Submitter
submission_time: Waiting for
tags: Tags
tag_list: Tags
reason: Reason
region:
name_values:

View File

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

View File

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

View File

@ -24,7 +24,7 @@ fr:
propose: Proposer un événement
propose_orga: Proposer une organisation
map: Carte
tags: Mots-clés
tag_list: Mots-clés
infos: Infos
stats: Statistiques
contact: Contact
@ -95,9 +95,9 @@ fr:
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.
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
tirets. Ajoutez le nom de la ou des organisations de l'événement, mais
pas de la ville ou de la région.
tag_list_helper: Séparés par des espaces, constitués de lettres, chiffres
et tirets. Ajoutez le nom de la ou des organisations de l'événement,
mais pas de la ville ou de la région.
save: Valider
visualise: Visualiser
cancel:
@ -149,8 +149,6 @@ fr:
tags:
index:
title: Mots-clés
limited: Seuls les mots-clés portants sur plus de trois événements sont
affichés dans cette liste
show:
links: Voir aussi
future: Prochainement
@ -282,8 +280,8 @@ description plus complète."
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
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
tirets
tag_list_helper: Séparés par des espaces, constitués de lettres, chiffres
et tirets
save: Envoyer
validate:
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.
ActiveRecord::Schema.define(version: 20161031215120) do
ActiveRecord::Schema.define(version: 20161210154558) do
create_table "active_admin_comments", force: :cascade do |t|
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"
create_table "admin_users", force: :cascade do |t|
t.string "email", limit: 255, default: "", null: false
t.string "encrypted_password", limit: 255, default: "", null: false
t.string "reset_password_token", limit: 255
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_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 "last_sign_in_at"
t.string "current_sign_in_ip", limit: 255
t.string "last_sign_in_ip", limit: 255
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
end
@ -70,7 +70,7 @@ ActiveRecord::Schema.define(version: 20161031215120) do
t.string "contact", limit: 255, default: "", null: false
t.string "submitter", limit: 255, default: "", 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.datetime "decision_time"
t.datetime "submission_time"
@ -124,7 +124,7 @@ ActiveRecord::Schema.define(version: 20161031215120) do
t.datetime "created_at"
t.datetime "updated_at"
t.text "tag"
t.string "tags", limit: 255, default: "", null: false
t.text "tags", default: ""
t.text "diaspora"
t.text "object_changes"
t.text "place_name"
@ -142,23 +142,21 @@ ActiveRecord::Schema.define(version: 20161031215120) do
create_table "taggings", force: :cascade do |t|
t.integer "tag_id"
t.integer "taggable_id"
t.string "taggable_type", limit: 255
t.string "taggable_type"
t.integer "tagger_id"
t.string "tagger_type", limit: 255
t.string "tagger_type"
t.string "context", limit: 128
t.datetime "created_at"
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"
create_table "tags", force: :cascade do |t|
t.string "name", limit: 255
t.integer "taggings_count", default: 0
t.string "name"
t.integer "taggings_count", default: 0
end
add_index "tags", ["name"], name: "index_tags_on_name", unique: true
create_table "translations", force: :cascade do |t|
t.string "locale", limit: 255
t.string "key", limit: 255
@ -168,13 +166,19 @@ ActiveRecord::Schema.define(version: 20161031215120) do
end
create_table "users", force: :cascade do |t|
t.string "login", limit: 255, default: "", null: false
t.string "password", limit: 255, default: "", null: false
t.string "email", limit: 255, default: "", null: false
t.string "lastname", limit: 255, default: "", null: false
t.string "firstname", limit: 255, default: "", null: false
t.string "login", limit: 255, default: "", null: false
t.string "password", limit: 255, default: "", null: false
t.string "email", limit: 255, default: "", null: false
t.string "lastname", 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
add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
create_table "versions", force: :cascade do |t|
t.string "item_type", 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