calagator 0.0.1.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +23 -0
- data/README.md +75 -0
- data/Rakefile +12 -0
- data/app/assets/images/confused-alligator-sm.png +0 -0
- data/app/assets/images/disk.png +0 -0
- data/app/assets/images/edit.png +0 -0
- data/app/assets/images/external_sites/epdx.png +0 -0
- data/app/assets/images/external_sites/external.gif +0 -0
- data/app/assets/images/external_sites/facebook.png +0 -0
- data/app/assets/images/external_sites/foursquare.png +0 -0
- data/app/assets/images/external_sites/gowalla.png +0 -0
- data/app/assets/images/external_sites/lanyrd.png +0 -0
- data/app/assets/images/external_sites/meetup.png +0 -0
- data/app/assets/images/external_sites/plancast.png +0 -0
- data/app/assets/images/external_sites/shizzow.png +0 -0
- data/app/assets/images/external_sites/upcoming.png +0 -0
- data/app/assets/images/external_sites/yelp.png +0 -0
- data/app/assets/images/feed.png +0 -0
- data/app/assets/images/heart.png +0 -0
- data/app/assets/images/icon_ical.gif +0 -0
- data/app/assets/images/information.png +0 -0
- data/app/assets/images/nav_marker.gif +0 -0
- data/app/assets/images/nav_marker.png +0 -0
- data/app/assets/images/plus.png +0 -0
- data/app/assets/images/redx.png +0 -0
- data/app/assets/images/site-icon.png +0 -0
- data/app/assets/images/spinner.gif +0 -0
- data/app/assets/images/star.png +0 -0
- data/app/assets/images/subnav_marker.gif +0 -0
- data/app/assets/images/subnav_marker.png +0 -0
- data/app/assets/images/tag_blue.png +0 -0
- data/app/assets/images/tag_icons/angular.png +0 -0
- data/app/assets/images/tag_icons/beer.png +0 -0
- data/app/assets/images/tag_icons/bitcoin.png +0 -0
- data/app/assets/images/tag_icons/free.png +0 -0
- data/app/assets/images/tag_icons/golang.png +0 -0
- data/app/assets/images/tag_icons/html.png +0 -0
- data/app/assets/images/tag_icons/javascript.png +0 -0
- data/app/assets/images/tag_icons/linux.png +0 -0
- data/app/assets/images/tag_icons/php.png +0 -0
- data/app/assets/images/tag_icons/pizza.png +0 -0
- data/app/assets/images/tag_icons/python.png +0 -0
- data/app/assets/images/tag_icons/rails.png +0 -0
- data/app/assets/images/tag_icons/ruby.png +0 -0
- data/app/assets/images/tag_icons/sass.png +0 -0
- data/app/assets/images/tag_icons/swift.png +0 -0
- data/app/assets/images/transmit_blue.png +0 -0
- data/app/assets/images/weekday_background.gif +0 -0
- data/app/assets/javascripts/calagator.js +18 -0
- data/app/assets/javascripts/calagator/forms.js +60 -0
- data/app/assets/stylesheets/calagator.scss +8 -0
- data/app/assets/stylesheets/calagator/common.scss +14 -0
- data/app/assets/stylesheets/calagator/datepicker.scss +177 -0
- data/app/assets/stylesheets/calagator/errors.css +110 -0
- data/app/assets/stylesheets/calagator/forms.scss +4 -0
- data/app/assets/stylesheets/calagator/reset.css +40 -0
- data/app/assets/stylesheets/calagator/theme.css +0 -0
- data/app/controllers/calagator/admin_controller.rb +27 -0
- data/app/controllers/calagator/application_controller.rb +82 -0
- data/app/controllers/calagator/events_controller.rb +171 -0
- data/app/controllers/calagator/site_controller.rb +35 -0
- data/app/controllers/calagator/sources_controller.rb +94 -0
- data/app/controllers/calagator/venues_controller.rb +133 -0
- data/app/controllers/calagator/versions_controller.rb +20 -0
- data/app/helpers/calagator/application_helper.rb +128 -0
- data/app/helpers/calagator/events_helper.rb +184 -0
- data/app/helpers/calagator/google_event_export_helper.rb +67 -0
- data/app/helpers/calagator/mapping_helper.rb +103 -0
- data/app/helpers/calagator/sources_helper.rb +10 -0
- data/app/helpers/calagator/tags_helper.rb +42 -0
- data/app/helpers/calagator/time_range_helper.rb +166 -0
- data/app/models/calagator/event.rb +246 -0
- data/app/models/calagator/event/cloner.rb +39 -0
- data/app/models/calagator/event/ical_renderer.rb +155 -0
- data/app/models/calagator/event/overview.rb +45 -0
- data/app/models/calagator/event/saver.rb +58 -0
- data/app/models/calagator/event/search.rb +72 -0
- data/app/models/calagator/event/search_engine.rb +28 -0
- data/app/models/calagator/event/search_engine/apache_sunspot.rb +106 -0
- data/app/models/calagator/event/search_engine/sql.rb +107 -0
- data/app/models/calagator/source.rb +115 -0
- data/app/models/calagator/source/importer.rb +46 -0
- data/app/models/calagator/source/parser.rb +128 -0
- data/app/models/calagator/source/parser/facebook.rb +67 -0
- data/app/models/calagator/source/parser/hcal.rb +108 -0
- data/app/models/calagator/source/parser/http_authentication_required_error.rb +6 -0
- data/app/models/calagator/source/parser/ical.rb +186 -0
- data/app/models/calagator/source/parser/meetup.rb +72 -0
- data/app/models/calagator/source/parser/not_found.rb +9 -0
- data/app/models/calagator/source/parser/plancast.rb +59 -0
- data/app/models/calagator/venue.rb +161 -0
- data/app/models/calagator/venue/geocoder.rb +51 -0
- data/app/models/calagator/venue/search.rb +63 -0
- data/app/models/calagator/venue/search_engine.rb +24 -0
- data/app/models/calagator/venue/search_engine/apache_sunspot.rb +85 -0
- data/app/models/calagator/venue/search_engine/sql.rb +68 -0
- data/app/models/event/search_engine/base.rb +0 -0
- data/app/observers/calagator/cache_observer.rb +37 -0
- data/app/views/calagator/admin/events.html.erb +28 -0
- data/app/views/calagator/admin/index.html.erb +8 -0
- data/app/views/calagator/events/_feed_item.html.erb +62 -0
- data/app/views/calagator/events/_form.html.erb +63 -0
- data/app/views/calagator/events/_gcal_reminder.html.erb +1 -0
- data/app/views/calagator/events/_hcal.html.erb +41 -0
- data/app/views/calagator/events/_item.html.erb +120 -0
- data/app/views/calagator/events/_list.html.erb +30 -0
- data/app/views/calagator/events/_list_item.html.erb +37 -0
- data/app/views/calagator/events/_search_section.html.erb +15 -0
- data/app/views/calagator/events/_subnav.html.erb +13 -0
- data/app/views/calagator/events/_table.html.erb +74 -0
- data/app/views/calagator/events/duplicates.html.erb +58 -0
- data/app/views/calagator/events/edit.html.erb +3 -0
- data/app/views/calagator/events/index.atom.builder +32 -0
- data/app/views/calagator/events/index.html.erb +51 -0
- data/app/views/calagator/events/index.kml.erb +20 -0
- data/app/views/calagator/events/new.html.erb +7 -0
- data/app/views/calagator/events/search.html.erb +25 -0
- data/app/views/calagator/events/show.html.erb +81 -0
- data/app/views/calagator/site/_appropriateness_message.html.erb +15 -0
- data/app/views/calagator/site/_description.html.erb +3 -0
- data/app/views/calagator/site/about.html.erb +7 -0
- data/app/views/calagator/site/defunct.html.erb +15 -0
- data/app/views/calagator/site/export.html.erb +4 -0
- data/app/views/calagator/site/index.html.erb +40 -0
- data/app/views/calagator/site/opensearch.xml.builder +8 -0
- data/app/views/calagator/sources/_subnav.html.erb +0 -0
- data/app/views/calagator/sources/edit.html.erb +12 -0
- data/app/views/calagator/sources/import.html.erb +10 -0
- data/app/views/calagator/sources/index.html.erb +22 -0
- data/app/views/calagator/sources/new.html.erb +32 -0
- data/app/views/calagator/sources/show.html.erb +16 -0
- data/app/views/calagator/venues/_form.html.erb +57 -0
- data/app/views/calagator/venues/_subnav.html.erb +10 -0
- data/app/views/calagator/venues/duplicates.html.erb +65 -0
- data/app/views/calagator/venues/edit.html.erb +3 -0
- data/app/views/calagator/venues/index.html.erb +93 -0
- data/app/views/calagator/venues/index.kml.erb +15 -0
- data/app/views/calagator/venues/map.html.erb +4 -0
- data/app/views/calagator/venues/new.html.erb +5 -0
- data/app/views/calagator/venues/show.html.erb +113 -0
- data/app/views/calagator/versions/_chooser.html.erb +28 -0
- data/app/views/calagator/versions/_edit_with_chooser.html.erb +16 -0
- data/app/views/layouts/calagator/application.html.erb +110 -0
- data/config/deploy/local.rb +37 -0
- data/config/deploy/lucca.rb +33 -0
- data/config/initializers/dates.rb +7 -0
- data/config/initializers/formtastic.rb +82 -0
- data/config/initializers/geokit.rb +74 -0
- data/config/initializers/ics_renderer.rb +6 -0
- data/config/initializers/load_tag_model_extensions.rb +3 -0
- data/config/initializers/mime_types.rb +9 -0
- data/config/initializers/observers.rb +1 -0
- data/config/initializers/search_engine.rb +4 -0
- data/config/initializers/set_default_url_host.rb +5 -0
- data/config/initializers/time_get_zone.rb +8 -0
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +55 -0
- data/config/secrets.yml.blag +75 -0
- data/config/sunspot.yml +23 -0
- data/db/development.sqlite3 +0 -0
- data/db/development.sqlite3.bak +0 -0
- data/db/development.sqlite3.old +0 -0
- data/db/development~20111112@110950.sqlite3 +0 -0
- data/db/migrate/001_create_events.rb +17 -0
- data/db/migrate/002_create_venues.rb +17 -0
- data/db/migrate/003_create_sources.rb +16 -0
- data/db/migrate/004_add_detailed_fields_to_venue.rb +19 -0
- data/db/migrate/005_add_end_time_to_events.rb +9 -0
- data/db/migrate/006_add_source_id_to_events.rb +9 -0
- data/db/migrate/008_add_source_id_to_venues.rb +10 -0
- data/db/migrate/009_add_duplicate_of_column_to_venues.rb +9 -0
- data/db/migrate/010_add_duplicate_of_column_to_events.rb +9 -0
- data/db/migrate/011_change_lat_long_type.rb +12 -0
- data/db/migrate/012_add_source_reimport.rb +9 -0
- data/db/migrate/013_change_end_time_to_duration.rb +11 -0
- data/db/migrate/014_remove_format_type_from_source.rb +9 -0
- data/db/migrate/015_create_updates.rb +15 -0
- data/db/migrate/016_remove_next_update_from_source.rb +9 -0
- data/db/migrate/20080705163959_change_duration_to_end_time.rb +11 -0
- data/db/migrate/20080705164959_create_tags_and_taggings.rb +28 -0
- data/db/migrate/20081011181519_create_versioned_events.rb +25 -0
- data/db/migrate/20081011193124_create_versioned_venues.rb +32 -0
- data/db/migrate/20081115190515_add_rrule_to_events.rb +15 -0
- data/db/migrate/20090912082129_create_versions.rb +18 -0
- data/db/migrate/20110219205156_add_closed_flag_to_venues.rb +9 -0
- data/db/migrate/20110220001008_add_wifi_flag_to_venues.rb +9 -0
- data/db/migrate/20110220011427_add_access_notes_to_venues.rb +9 -0
- data/db/migrate/20110220031117_add_events_count_to_venues.rb +8 -0
- data/db/migrate/20110604174521_add_venue_details_to_events.rb +9 -0
- data/db/migrate/20110717231316_acts_as_taggable_on_migration.rb +50 -0
- data/db/migrate/20120709092821_cleanup.rb +14 -0
- data/db/migrate/20120831234448_specify_venues_latitude_and_longitude_precision.rb +11 -0
- data/db/migrate/20150206085809_remove_updates.rb +13 -0
- data/db/migrate/20150207231355_add_locked_status_to_events.rb +5 -0
- data/db/production.sqlite3 +0 -0
- data/db/schema.rb +102 -0
- data/db/seeds.rb +16 -0
- data/db/test.sqlite3 +0 -0
- data/db/test2.sqlite3 +0 -0
- data/lib/calagator.rb +30 -0
- data/lib/calagator/blacklist_validator.rb +69 -0
- data/lib/calagator/decode_html_entities_hack.rb +33 -0
- data/lib/calagator/duplicate_checking.rb +133 -0
- data/lib/calagator/duplicate_checking/controller_actions.rb +38 -0
- data/lib/calagator/duplicate_checking/duplicate_finder.rb +83 -0
- data/lib/calagator/duplicate_checking/duplicate_squasher.rb +74 -0
- data/lib/calagator/engine.rb +30 -0
- data/lib/calagator/strip_whitespace.rb +19 -0
- data/lib/calagator/tag_model_extensions.rb +104 -0
- data/lib/calagator/url_prefixer.rb +9 -0
- data/lib/calagator/version.rb +3 -0
- data/lib/generators/calagator/install_generator.rb +39 -0
- data/lib/generators/calagator/templates/config/calagator.rb +26 -0
- data/lib/generators/calagator/templates/config/secrets.yml.sample +83 -0
- data/lib/secrets_reader.rb +76 -0
- data/lib/tasks/spec_db.rake +53 -0
- data/lib/tasks/sunspot_reindex_calagator.rake +6 -0
- data/lib/tasks/sunspot_solr_restart_enhancements.rake +19 -0
- data/lib/tasks/update_counter_caches.rake +13 -0
- data/lib/templates/erb/scaffold/_form.html.erb +11 -0
- data/lib/theme_reader.rb +17 -0
- data/lib/wait_for_solr.rb +25 -0
- data/spec/controllers/calagator/application_controller_spec.rb +47 -0
- data/spec/controllers/calagator/events_controller_spec.rb +794 -0
- data/spec/controllers/calagator/site_controller_spec.rb +59 -0
- data/spec/controllers/calagator/sources_controller_spec.rb +439 -0
- data/spec/controllers/calagator/venues_controller_spec.rb +319 -0
- data/spec/controllers/calagator/versions_controller_spec.rb +82 -0
- data/spec/controllers/squash_many_duplicates_examples.rb +49 -0
- data/spec/dummy/Gemfile +39 -0
- data/spec/dummy/Gemfile.lock +195 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/images/rails.png +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +16 -0
- data/spec/dummy/app/assets/stylesheets/application.css +14 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +62 -0
- data/spec/dummy/config/boot.rb +6 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/calagator.rb +26 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +59 -0
- data/spec/dummy/config/secrets.yml +83 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20150309023304_create_events.calagator.rb +18 -0
- data/spec/dummy/db/migrate/20150309023305_create_venues.calagator.rb +18 -0
- data/spec/dummy/db/migrate/20150309023306_create_sources.calagator.rb +17 -0
- data/spec/dummy/db/migrate/20150309023307_add_detailed_fields_to_venue.calagator.rb +20 -0
- data/spec/dummy/db/migrate/20150309023308_add_end_time_to_events.calagator.rb +10 -0
- data/spec/dummy/db/migrate/20150309023309_add_source_id_to_events.calagator.rb +10 -0
- data/spec/dummy/db/migrate/20150309023310_add_source_id_to_venues.calagator.rb +11 -0
- data/spec/dummy/db/migrate/20150309023311_add_duplicate_of_column_to_venues.calagator.rb +10 -0
- data/spec/dummy/db/migrate/20150309023312_add_duplicate_of_column_to_events.calagator.rb +10 -0
- data/spec/dummy/db/migrate/20150309023313_change_lat_long_type.calagator.rb +13 -0
- data/spec/dummy/db/migrate/20150309023314_add_source_reimport.calagator.rb +10 -0
- data/spec/dummy/db/migrate/20150309023315_change_end_time_to_duration.calagator.rb +12 -0
- data/spec/dummy/db/migrate/20150309023316_remove_format_type_from_source.calagator.rb +10 -0
- data/spec/dummy/db/migrate/20150309023317_create_updates.calagator.rb +16 -0
- data/spec/dummy/db/migrate/20150309023318_remove_next_update_from_source.calagator.rb +10 -0
- data/spec/dummy/db/migrate/20150309023319_change_duration_to_end_time.calagator.rb +12 -0
- data/spec/dummy/db/migrate/20150309023320_create_tags_and_taggings.calagator.rb +29 -0
- data/spec/dummy/db/migrate/20150309023321_create_versioned_events.calagator.rb +26 -0
- data/spec/dummy/db/migrate/20150309023322_create_versioned_venues.calagator.rb +33 -0
- data/spec/dummy/db/migrate/20150309023323_add_rrule_to_events.calagator.rb +16 -0
- data/spec/dummy/db/migrate/20150309023324_create_versions.calagator.rb +19 -0
- data/spec/dummy/db/migrate/20150309023325_add_closed_flag_to_venues.calagator.rb +10 -0
- data/spec/dummy/db/migrate/20150309023326_add_wifi_flag_to_venues.calagator.rb +10 -0
- data/spec/dummy/db/migrate/20150309023327_add_access_notes_to_venues.calagator.rb +10 -0
- data/spec/dummy/db/migrate/20150309023328_add_events_count_to_venues.calagator.rb +9 -0
- data/spec/dummy/db/migrate/20150309023329_add_venue_details_to_events.calagator.rb +10 -0
- data/spec/dummy/db/migrate/20150309023330_acts_as_taggable_on_migration.calagator.rb +51 -0
- data/spec/dummy/db/migrate/20150309023331_cleanup.calagator.rb +15 -0
- data/spec/dummy/db/migrate/20150309023332_specify_venues_latitude_and_longitude_precision.calagator.rb +12 -0
- data/spec/dummy/db/migrate/20150309023333_remove_updates.calagator.rb +14 -0
- data/spec/dummy/db/migrate/20150309023334_add_locked_status_to_events.calagator.rb +6 -0
- data/spec/dummy/db/schema.rb +95 -0
- data/spec/dummy/db/seeds.rb +7 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/doc/README_FOR_APP +2 -0
- data/spec/dummy/log/development.log +273 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/robots.txt +5 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/test/performance/browsing_test.rb +12 -0
- data/spec/dummy/test/test_helper.rb +13 -0
- data/spec/factories.rb +93 -0
- data/spec/features/add_event_spec.rb +99 -0
- data/spec/features/add_venue_spec.rb +34 -0
- data/spec/features/admin_auth_spec.rb +22 -0
- data/spec/features/admin_lock_event_spec.rb +41 -0
- data/spec/features/import_events_from_feed_spec.rb +43 -0
- data/spec/features/managing_event_spec.rb +111 -0
- data/spec/features/managing_venue_spec.rb +71 -0
- data/spec/features/search_event_spec.rb +27 -0
- data/spec/helpers/calagator/application_helper_spec.rb +82 -0
- data/spec/helpers/calagator/events_helper_spec.rb +172 -0
- data/spec/helpers/calagator/google_event_export_helper_spec.rb +70 -0
- data/spec/helpers/calagator/sources_helper_spec.rb +12 -0
- data/spec/helpers/calagator/tags_helper_spec.rb +85 -0
- data/spec/helpers/calagator/time_range_helper_spec.rb +59 -0
- data/spec/lib/calagator/blacklist_validator_spec.rb +65 -0
- data/spec/lib/calagator/decode_html_entities_hack_spec.rb +54 -0
- data/spec/lib/calagator/settings_spec.rb +20 -0
- data/spec/lib/calagator/url_prefixer_spec.rb +33 -0
- data/spec/lib/secrets_reader_spec.rb +65 -0
- data/spec/models/calagator/event/cloner_spec.rb +43 -0
- data/spec/models/calagator/event/overview_spec.rb +79 -0
- data/spec/models/calagator/event/search_spec.rb +103 -0
- data/spec/models/calagator/event_search_spec.rb +149 -0
- data/spec/models/calagator/event_spec.rb +859 -0
- data/spec/models/calagator/source/parser_facebook_spec.rb +73 -0
- data/spec/models/calagator/source/parser_hcal_spec.rb +69 -0
- data/spec/models/calagator/source/parser_ical_non_standard_spec.rb +91 -0
- data/spec/models/calagator/source/parser_ical_spec.rb +322 -0
- data/spec/models/calagator/source/parser_meetup_spec.rb +69 -0
- data/spec/models/calagator/source/parser_plancast_spec.rb +53 -0
- data/spec/models/calagator/source/parser_spec.rb +238 -0
- data/spec/models/calagator/source_spec.rb +135 -0
- data/spec/models/calagator/venue/search_spec.rb +92 -0
- data/spec/models/calagator/venue_search_spec.rb +124 -0
- data/spec/models/calagator/venue_spec.rb +346 -0
- data/spec/models/tag_spec.rb +35 -0
- data/spec/rails_helper.rb +39 -0
- data/spec/spec_helper.rb +140 -0
- data/spec/support/disable_geocoding.rb +1 -0
- data/spec/support/http_samples.rb +5 -0
- data/spec/support/samples/facebook.json +23 -0
- data/spec/support/samples/hcal_basic.xml +6 -0
- data/spec/support/samples/hcal_dup_event_dup_venue.xml +13 -0
- data/spec/support/samples/hcal_event_duplicates_fixture.xml +13 -0
- data/spec/support/samples/hcal_event_wo_lat_and_long.xml +14 -0
- data/spec/support/samples/hcal_multiple.xml +16 -0
- data/spec/support/samples/hcal_same_event_twice_with_different_venues.xml +12 -0
- data/spec/support/samples/hcal_single.xml +8 -0
- data/spec/support/samples/hcal_two_identical_events.xml +14 -0
- data/spec/support/samples/hcal_upcoming_v1.html +412 -0
- data/spec/support/samples/hcal_upcoming_v2.html +749 -0
- data/spec/support/samples/hcal_upcoming_v3.html +685 -0
- data/spec/support/samples/hcal_upcoming_v4.html +761 -0
- data/spec/support/samples/ical_apple.ics +22 -0
- data/spec/support/samples/ical_apple_v3.ics +37 -0
- data/spec/support/samples/ical_basic.ics +15 -0
- data/spec/support/samples/ical_basic_with_duration.ics +16 -0
- data/spec/support/samples/ical_event_with_squashed_venue.ics +12 -0
- data/spec/support/samples/ical_eventful_many.ics +504 -0
- data/spec/support/samples/ical_gmt.ics +12 -0
- data/spec/support/samples/ical_google.ics +786 -0
- data/spec/support/samples/ical_multiple_calendars.ics +111 -0
- data/spec/support/samples/ical_upcoming.ics +36 -0
- data/spec/support/samples/ical_upcoming_many.ics +682 -0
- data/spec/support/samples/ical_upcoming_v2.ics +43 -0
- data/spec/support/samples/ical_z.ics +10 -0
- data/spec/support/samples/meetup.ics +16 -0
- data/spec/support/samples/meetup.json +31 -0
- data/spec/support/samples/plancast.ics +59 -0
- data/spec/support/samples/plancast.json +51 -0
- data/spec/support/samples/plancast_with_missing_venue.json +39 -0
- data/spec/support/samples/upcoming_v1.xml +8 -0
- data/spec/support/samples/upcoming_v2_with_invalid_utc_dates.xml +8 -0
- data/spec/support/time_convenience_methods.rb +8 -0
- data/spec/support/time_zones.rb +12 -0
- data/spec/support/url_helpers.rb +5 -0
- data/spec/support/wait_for_ajax.rb +15 -0
- data/spec/support/webmock.rb +8 -0
- data/spec/travis_spec.rb +7 -0
- metadata +1194 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e45c9cd061a44a04a7e8ec6ad012a3f3aec00a07
|
4
|
+
data.tar.gz: 10f94b93dbde8e6283c62b594c3efa68cc6835a8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ba74de7bd5ea7b0e823193478709ef591c6febb2893cc9a25475ec7ba6705ddc771d497d4018998bcb172f6773f3a6ad62c665466d17761a4f379d775a3f7431
|
7
|
+
data.tar.gz: 8165fcbb59280f2c7ea906f6c79671d5ddac6e2c319d72f7b4490827c536af2728d0328e30dce0faa961e5c5883d48ef860a4d14a291f9b1ad16cadb1de50eb6
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
http://www.opensource.org/licenses/mit-license.php
|
2
|
+
|
3
|
+
The MIT License
|
4
|
+
|
5
|
+
Copyright (c) 2007-2011 Calagator
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
+
of this software and associated documentation files (the "Software"), to deal
|
9
|
+
in the Software without restriction, including without limitation the rights
|
10
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11
|
+
copies of the Software, and to permit persons to whom the Software is
|
12
|
+
furnished to do so, subject to the following conditions:
|
13
|
+
|
14
|
+
The above copyright notice and this permission notice shall be included in
|
15
|
+
all copies or substantial portions of the Software.
|
16
|
+
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
23
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
WORK IN PROGRESS
|
2
|
+
================
|
3
|
+
|
4
|
+
**This repo is not ready for deployment!**
|
5
|
+
|
6
|
+
This repository is part of an ongoing project to split the [calagator project](http://github.com/calagator/calagator/) into a Rails engine with a separate Rails shell on top. This repo will become the Rails shell for the [Calagator.org](http://calagator.org) deployment.
|
7
|
+
|
8
|
+
---
|
9
|
+
|
10
|
+
[![Build Status](https://travis-ci.org/calagator/calagator.svg?branch=master)](http://travis-ci.org/calagator/calagator)
|
11
|
+
[![Code Climate](https://codeclimate.com/github/calagator/calagator.png)](https://codeclimate.com/github/calagator/calagator)
|
12
|
+
[![Coverage Status](https://coveralls.io/repos/calagator/calagator/badge.png)](https://coveralls.io/r/calagator/calagator)
|
13
|
+
[![Dependency Status](https://gemnasium.com/calagator/calagator.svg)](https://gemnasium.com/calagator/calagator)
|
14
|
+
|
15
|
+
|
16
|
+
Calagator
|
17
|
+
=========
|
18
|
+
|
19
|
+
|
20
|
+
About
|
21
|
+
-----
|
22
|
+
|
23
|
+
Calagator is an open source community calendaring platform:
|
24
|
+
|
25
|
+
* [Calagator.org](http://calagator.org/) is the flagship website running this software.
|
26
|
+
* [Source code](http://github.com/calagator/calagator/) is available.
|
27
|
+
* [Mailing list](http://groups.google.com/group/pdx-tech-calendar/) for discussion about the software.
|
28
|
+
* [Development mailing list](http://groups.google.com/group/calagator-development/) for discussion of patches, code discussion, and other development issues.
|
29
|
+
* [Wiki](https://github.com/calagator/calagator/wiki) features many useful articles on using and developing.
|
30
|
+
* [Issue tracker](https://github.com/calagator/calagator/issues?state=open) lists outstanding issues.
|
31
|
+
|
32
|
+
|
33
|
+
Why
|
34
|
+
---
|
35
|
+
|
36
|
+
By releasing this code under a liberal MIT open source license, we hope to empower other people so they can better organize and participate in more events that support free sharing of information, open society, and involved citizenry.
|
37
|
+
|
38
|
+
|
39
|
+
Releases
|
40
|
+
--------
|
41
|
+
|
42
|
+
The stable releases of this software are tagged with version numbers, such as `v0.20090416`, that represent the date they were made. There is also a `stable` branch that points to the current stable release. The [CHANGES.md](http://github.com/calagator/calagator/blob/master/CHANGES.md) file describes significant changes made between stable releases.
|
43
|
+
|
44
|
+
|
45
|
+
Installing
|
46
|
+
----------
|
47
|
+
|
48
|
+
Read the [INSTALL.md](http://github.com/calagator/calagator/blob/master/INSTALL.md) file for details on installing the software.
|
49
|
+
|
50
|
+
|
51
|
+
Contributing
|
52
|
+
------------
|
53
|
+
|
54
|
+
Bug fixes and features are welcomed. Please fork the source code and submit a pull request: <http://github.com/calagator/calagator/tree/master>
|
55
|
+
|
56
|
+
When you make a pull request, make sure to add your name to the list of contributors in [CONTRIBUTORS.md](http://github.com/calagator/calagator/blob/master/CONTRIBUTORS.md).
|
57
|
+
|
58
|
+
All Calagator contributors are expected to read and follow our [code of conduct](https://github.com/calagator/calagator/wiki/Code-of-Conduct).
|
59
|
+
|
60
|
+
Contributors
|
61
|
+
------------
|
62
|
+
|
63
|
+
This free, open source software was made possible by a group of volunteers that put many hours of hard work into it. See the [CONTRIBUTORS.md](http://github.com/calagator/calagator/blob/master/CONTRIBUTORS.md) file for details.
|
64
|
+
|
65
|
+
|
66
|
+
License
|
67
|
+
-------
|
68
|
+
|
69
|
+
This program is provided under an MIT open source license, read the [LICENSE.txt](http://github.com/calagator/calagator/blob/master/LICENSE.txt) file for details.
|
70
|
+
|
71
|
+
|
72
|
+
Copyright
|
73
|
+
---------
|
74
|
+
|
75
|
+
Copyright (c) 2007-2015 Calagator
|
data/Rakefile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
|
5
|
+
load 'rails/tasks/engine.rake'
|
6
|
+
|
7
|
+
Bundler::GemHelper.install_tasks
|
8
|
+
|
9
|
+
require 'rspec/core/rake_task'
|
10
|
+
RSpec::Core::RakeTask.new(:spec)
|
11
|
+
|
12
|
+
task :default => :spec
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,18 @@
|
|
1
|
+
//= require jquery
|
2
|
+
//= require jquery_ujs
|
3
|
+
//= require calagator/forms
|
4
|
+
//= require leaflet.awesome-markers
|
5
|
+
|
6
|
+
$(document).ready(function(){
|
7
|
+
// Shows hidden section when a link is clicked, and hides the link.
|
8
|
+
//
|
9
|
+
// The link must have a DOM id that corresponds to the section to display,
|
10
|
+
// e.g. a "foo_toggle" link relates to the "foo" section.
|
11
|
+
$(".expander_toggle").click(function(event) {
|
12
|
+
var id_to_hide = event.target.id;
|
13
|
+
var id_to_show = id_to_hide.replace(/_toggle$/, "");
|
14
|
+
$("#"+id_to_hide).hide(200);
|
15
|
+
$("#"+id_to_show).show(200);
|
16
|
+
$e = event;
|
17
|
+
});
|
18
|
+
});
|
@@ -0,0 +1,60 @@
|
|
1
|
+
//= require jquery-ui
|
2
|
+
//= require jquery.timepicker
|
3
|
+
|
4
|
+
$(document).ready(function(){
|
5
|
+
// Initialize autocompletion for venues
|
6
|
+
$("input.autocomplete").each(function() {
|
7
|
+
$(this).attr('autocomplete', 'off').autocomplete({
|
8
|
+
source: "/venues/autocomplete.json",
|
9
|
+
minLength: 2,
|
10
|
+
search: function(event, ui) {
|
11
|
+
//$("#event_venue_loading").show();
|
12
|
+
$("#event_venue_id").val('');
|
13
|
+
},
|
14
|
+
select: function(event, ui) {
|
15
|
+
$('input.autocomplete').val( ui.item.title );
|
16
|
+
$("#event_venue_id").val( ui.item.id );
|
17
|
+
|
18
|
+
return false;
|
19
|
+
}
|
20
|
+
}).data( "ui-autocomplete" )._renderItem = function( ul, item ) {
|
21
|
+
var short_address = (item.street_address && item.street_address.length > 0)
|
22
|
+
? item.street_address+", "+item.locality+" "+item.region
|
23
|
+
: item.address;
|
24
|
+
return $( "<li><a href='javascript:void(0);'><strong>"+item.title+"</strong><br />"+short_address+"</a></li>" )
|
25
|
+
.data( "item.autocomplete", item )
|
26
|
+
.appendTo(ul);
|
27
|
+
};
|
28
|
+
});
|
29
|
+
|
30
|
+
// Initialize date and time pickers
|
31
|
+
$('.date_picker').datepicker({ dateFormat: 'yy-mm-dd' });
|
32
|
+
$('.time_picker').timepicker({ 'timeFormat': 'g:i A' });
|
33
|
+
|
34
|
+
// Update "time_end" to maintain the same offset from "time_start" if "time_start" changes, and display a highlight to alert the user.
|
35
|
+
var oldTime = $("#time_start").timepicker('getTime');
|
36
|
+
$("#time_start").change(function() {
|
37
|
+
if ($("#time_end").val()) { // Only update when second input has a value.
|
38
|
+
var duration = ($("#time_end").timepicker('getTime') - oldTime);
|
39
|
+
var newTime = $("#time_start").timepicker('getTime');
|
40
|
+
// Calculate and update the time in the second input.
|
41
|
+
$("#time_end").timepicker('setTime', new Date(newTime.getTime() + duration));
|
42
|
+
$('#time_end').effect('highlight', {}, 3000);
|
43
|
+
oldTime = newTime;
|
44
|
+
}
|
45
|
+
});
|
46
|
+
|
47
|
+
// Update "date_end" so that it is the same as "date_start" if "date_start" is changed to after "date_end", and displays a highlight to alert the user.
|
48
|
+
$("#date_start").change(function() {
|
49
|
+
// Only update when end value is defined.
|
50
|
+
if ($("#date_end").val()) {
|
51
|
+
// Only update when end value is before start value.
|
52
|
+
var startDate = $.datepicker.parseDate('yy-mm-dd', $('#date_start').val());
|
53
|
+
var endDate = $.datepicker.parseDate('yy-mm-dd', $('#date_end').val());
|
54
|
+
if (endDate < startDate) {
|
55
|
+
$('#date_end').val($('#date_start').val());
|
56
|
+
$('#date_end').effect('highlight', {}, 3000);
|
57
|
+
}
|
58
|
+
}
|
59
|
+
});
|
60
|
+
});
|
@@ -0,0 +1,177 @@
|
|
1
|
+
/* @override http://localhost:3000/stylesheets/datepicker.css */
|
2
|
+
#datepicker_div th, #datepicker_div td {
|
3
|
+
padding: 0;
|
4
|
+
text-align: center;
|
5
|
+
}
|
6
|
+
|
7
|
+
/* Main Flora Style Sheet for jQuery UI Datepicker */
|
8
|
+
#datepicker_div, .datepicker_inline {
|
9
|
+
font-size: 14px;
|
10
|
+
padding: 0;
|
11
|
+
margin: 0;
|
12
|
+
background: #e8fbfe;
|
13
|
+
width: 185px;
|
14
|
+
}
|
15
|
+
|
16
|
+
#datepicker_div {
|
17
|
+
display: none;
|
18
|
+
border: 1px solid #454;
|
19
|
+
z-index: 10;
|
20
|
+
}
|
21
|
+
|
22
|
+
.datepicker_inline {
|
23
|
+
float: left;
|
24
|
+
display: block;
|
25
|
+
border: 0;
|
26
|
+
}
|
27
|
+
.datepicker_dialog {
|
28
|
+
padding: 5px !important;
|
29
|
+
border: 4px ridge #DDD !important;
|
30
|
+
}
|
31
|
+
button.datepicker_trigger {
|
32
|
+
width: 25px;
|
33
|
+
}
|
34
|
+
img.datepicker_trigger {
|
35
|
+
margin: 2px;
|
36
|
+
vertical-align: middle;
|
37
|
+
}
|
38
|
+
.datepicker_prompt {
|
39
|
+
float: left;
|
40
|
+
padding: 2px;
|
41
|
+
background: #bcf794;
|
42
|
+
color: #000;
|
43
|
+
}
|
44
|
+
.datepicker_prompt {
|
45
|
+
width: 185px;
|
46
|
+
}
|
47
|
+
.datepicker_control, .datepicker_links, .datepicker_header, .datepicker {
|
48
|
+
clear: both;
|
49
|
+
float: left;
|
50
|
+
width: 100%;
|
51
|
+
color: #FFF;
|
52
|
+
}
|
53
|
+
.datepicker_control {
|
54
|
+
background: #82c555;
|
55
|
+
padding: 2px 0px;
|
56
|
+
}
|
57
|
+
.datepicker_links {
|
58
|
+
background: #b7f090;
|
59
|
+
padding: 2px 0px;
|
60
|
+
}
|
61
|
+
.datepicker_control, .datepicker_links {
|
62
|
+
font-weight: bold;
|
63
|
+
font-size: 80%;
|
64
|
+
letter-spacing: 1px;
|
65
|
+
}
|
66
|
+
.datepicker_links label {
|
67
|
+
padding: 2px 5px;
|
68
|
+
color: #888;
|
69
|
+
}
|
70
|
+
.datepicker_clear, .datepicker_prev {
|
71
|
+
float: left;
|
72
|
+
width: 34%;
|
73
|
+
}
|
74
|
+
.datepicker_current {
|
75
|
+
float: left;
|
76
|
+
width: 30%;
|
77
|
+
text-align: center;
|
78
|
+
}
|
79
|
+
.datepicker_close, .datepicker_next {
|
80
|
+
float: right;
|
81
|
+
width: 34%;
|
82
|
+
text-align: right;
|
83
|
+
}
|
84
|
+
.datepicker_header {
|
85
|
+
padding: 1px 0 4px;
|
86
|
+
background: #e8fbfe;
|
87
|
+
text-align: center;
|
88
|
+
font-weight: bold;
|
89
|
+
height: 1.5em;
|
90
|
+
}
|
91
|
+
.datepicker_header select {
|
92
|
+
color: #000;
|
93
|
+
border: 0px;
|
94
|
+
font-weight: bold;
|
95
|
+
}
|
96
|
+
.datepicker {
|
97
|
+
background: #bcf794;
|
98
|
+
text-align: center;
|
99
|
+
font-size: 100%;
|
100
|
+
}
|
101
|
+
.datepicker a {
|
102
|
+
display: block;
|
103
|
+
width: 100%;
|
104
|
+
}
|
105
|
+
.datepicker .datepicker_titleRow {
|
106
|
+
background: #B1DB87;
|
107
|
+
color: #000;
|
108
|
+
}
|
109
|
+
.datepicker .datepicker_daysRow {
|
110
|
+
background: #FFF;
|
111
|
+
color: #666;
|
112
|
+
}
|
113
|
+
.datepicker_weekCol {
|
114
|
+
background: #B1DB87;
|
115
|
+
color: #000;
|
116
|
+
}
|
117
|
+
.datepicker .datepicker_daysCell {
|
118
|
+
color: #000;
|
119
|
+
border: 1px solid #DDD;
|
120
|
+
}
|
121
|
+
#datepicker .datepicker_daysCell a {
|
122
|
+
display: block;
|
123
|
+
}
|
124
|
+
.datepicker .datepicker_weekEndCell {
|
125
|
+
background: #E0F4D7;
|
126
|
+
}
|
127
|
+
.datepicker .datepicker_daysCellOver {
|
128
|
+
background: #FFF;
|
129
|
+
border: 1px solid #777;
|
130
|
+
}
|
131
|
+
.datepicker .datepicker_unselectable {
|
132
|
+
color: #888;
|
133
|
+
}
|
134
|
+
.datepicker_today {
|
135
|
+
background: #82c555;
|
136
|
+
}
|
137
|
+
.datepicker_currentDay {
|
138
|
+
background: #83C948 !important;
|
139
|
+
}
|
140
|
+
#datepicker_div a, .datepicker_inline a {
|
141
|
+
cursor: pointer;
|
142
|
+
margin: 0;
|
143
|
+
padding: 0;
|
144
|
+
background: none;
|
145
|
+
color: #000;
|
146
|
+
}
|
147
|
+
.datepicker_inline .datepicker_links a {
|
148
|
+
padding: 0 5px !important;
|
149
|
+
}
|
150
|
+
.datepicker_control a, .datepicker_links a {
|
151
|
+
padding: 2px 5px !important;
|
152
|
+
color: #000 !important;
|
153
|
+
}
|
154
|
+
.datepicker_titleRow a {
|
155
|
+
color: #000 !important;
|
156
|
+
}
|
157
|
+
.datepicker_multi .datepicker {
|
158
|
+
border: 1px solid #83C948;
|
159
|
+
}
|
160
|
+
.datepicker_oneMonth {
|
161
|
+
float: left;
|
162
|
+
width: 185px;
|
163
|
+
}
|
164
|
+
.datepicker_newRow {
|
165
|
+
clear: left;
|
166
|
+
}
|
167
|
+
.datepicker_cover {
|
168
|
+
display: none;
|
169
|
+
display/**/: block;
|
170
|
+
position: absolute;
|
171
|
+
z-index: -1;
|
172
|
+
filter: mask();
|
173
|
+
top: -4px;
|
174
|
+
left: -4px;
|
175
|
+
width: 193px;
|
176
|
+
height: 200px;
|
177
|
+
}
|