danabr75-ckeditor 4.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +42 -0
- data/MIT-LICENSE +20 -0
- data/README.md +337 -0
- data/Rakefile +64 -0
- data/app/assets/javascripts/ckeditor/application.js +5 -0
- data/app/assets/javascripts/ckeditor/config.js +58 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/gal_add.jpg +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/gal_add.png +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/gal_del.png +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/gal_more.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/preloader.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/avi.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/ckfnothumb.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/doc.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/docx.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/exe.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/gz.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/htm.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/jpg.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/mp3.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/mpg.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/pdf.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/psd.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/rar.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/swf.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/tar.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/txt.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/unknown.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/wmv.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/xls.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/xlsx.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/images/thumbs/zip.gif +0 -0
- data/app/assets/javascripts/ckeditor/filebrowser/javascripts/application.js.erb +232 -0
- data/app/assets/javascripts/ckeditor/filebrowser/javascripts/fileuploader.js +1301 -0
- data/app/assets/javascripts/ckeditor/filebrowser/javascripts/jquery.endless-scroll.js +300 -0
- data/app/assets/javascripts/ckeditor/filebrowser/javascripts/jquery.tmpl.min.js +10 -0
- data/app/assets/javascripts/ckeditor/filebrowser/javascripts/rails.js +373 -0
- data/app/assets/javascripts/ckeditor/filebrowser/stylesheets/uploader.css.erb +128 -0
- data/app/assets/javascripts/ckeditor/init.js.erb +8 -0
- data/app/assets/stylesheets/ckeditor/application.css +6 -0
- data/app/controllers/ckeditor/application_controller.rb +20 -0
- data/app/controllers/ckeditor/attachment_files_controller.rb +38 -0
- data/app/controllers/ckeditor/pictures_controller.rb +38 -0
- data/app/helpers/ckeditor/application_helper.rb +11 -0
- data/app/views/ckeditor/attachment_files/index.html.erb +21 -0
- data/app/views/ckeditor/pictures/index.html.erb +21 -0
- data/app/views/ckeditor/shared/_asset.html.erb +20 -0
- data/app/views/ckeditor/shared/_asset_tmpl.html.erb +22 -0
- data/app/views/layouts/ckeditor/application.html.erb +31 -0
- data/config/locales/bg.ckeditor.yml +9 -0
- data/config/locales/cs.ckeditor.yml +9 -0
- data/config/locales/de.ckeditor.yml +9 -0
- data/config/locales/el-GR.cdkeditor.yml +9 -0
- data/config/locales/en.ckeditor.yml +9 -0
- data/config/locales/es.ckeditor.yml +9 -0
- data/config/locales/fr.ckeditor.yml +9 -0
- data/config/locales/hu.ckeditor.yml +9 -0
- data/config/locales/it.ckeditor.yml +9 -0
- data/config/locales/ja.ckeditor.yml +9 -0
- data/config/locales/nb.ckeditor.yml +9 -0
- data/config/locales/nl.ckeditor.yml +9 -0
- data/config/locales/pl.ckeditor.yml +9 -0
- data/config/locales/pt-BR.ckeditor.yml +9 -0
- data/config/locales/pt-PT.ckeditor.yml +9 -0
- data/config/locales/ru.ckeditor.yml +9 -0
- data/config/locales/sv-SE.ckeditor.yml +9 -0
- data/config/locales/tr.ckeditor.yml +9 -0
- data/config/locales/uk.ckeditor.yml +9 -0
- data/config/locales/zh-CN.ckeditor.yml +9 -0
- data/config/locales/zh-TW.ckeditor.yml +9 -0
- data/config/routes.rb +4 -0
- data/lib/ckeditor.rb +234 -0
- data/lib/ckeditor/asset_response.rb +71 -0
- data/lib/ckeditor/backend/carrierwave.rb +57 -0
- data/lib/ckeditor/backend/dragonfly.rb +47 -0
- data/lib/ckeditor/backend/paperclip.rb +52 -0
- data/lib/ckeditor/backend/refile.rb +37 -0
- data/lib/ckeditor/engine.rb +46 -0
- data/lib/ckeditor/helpers/controllers.rb +34 -0
- data/lib/ckeditor/helpers/form_builder.rb +11 -0
- data/lib/ckeditor/helpers/form_helper.rb +11 -0
- data/lib/ckeditor/helpers/view_helper.rb +11 -0
- data/lib/ckeditor/hooks/cancan.rb +49 -0
- data/lib/ckeditor/hooks/formtastic.rb +12 -0
- data/lib/ckeditor/hooks/pundit.rb +47 -0
- data/lib/ckeditor/hooks/simple_form.rb +20 -0
- data/lib/ckeditor/http.rb +88 -0
- data/lib/ckeditor/orm/active_record.rb +24 -0
- data/lib/ckeditor/orm/base.rb +50 -0
- data/lib/ckeditor/orm/mongoid.rb +41 -0
- data/lib/ckeditor/paginatable.rb +56 -0
- data/lib/ckeditor/text_area.rb +53 -0
- data/lib/ckeditor/utils.rb +108 -0
- data/lib/ckeditor/utils/content_type_detector.rb +41 -0
- data/lib/ckeditor/utils/javascript_code.rb +10 -0
- data/lib/ckeditor/version.rb +6 -0
- data/lib/generators/ckeditor/install_generator.rb +83 -0
- data/lib/generators/ckeditor/pundit_policy_generator.rb +22 -0
- data/lib/generators/ckeditor/templates/active_record/carrierwave/ckeditor/asset.rb +7 -0
- data/lib/generators/ckeditor/templates/active_record/carrierwave/ckeditor/attachment_file.rb +7 -0
- data/lib/generators/ckeditor/templates/active_record/carrierwave/ckeditor/picture.rb +7 -0
- data/lib/generators/ckeditor/templates/active_record/carrierwave/migration.rb +26 -0
- data/lib/generators/ckeditor/templates/active_record/dragonfly/ckeditor/asset.rb +7 -0
- data/lib/generators/ckeditor/templates/active_record/dragonfly/ckeditor/attachment_file.rb +7 -0
- data/lib/generators/ckeditor/templates/active_record/dragonfly/ckeditor/picture.rb +12 -0
- data/lib/generators/ckeditor/templates/active_record/dragonfly/migration.rb +27 -0
- data/lib/generators/ckeditor/templates/active_record/paperclip/ckeditor/asset.rb +4 -0
- data/lib/generators/ckeditor/templates/active_record/paperclip/ckeditor/attachment_file.rb +13 -0
- data/lib/generators/ckeditor/templates/active_record/paperclip/ckeditor/picture.rb +14 -0
- data/lib/generators/ckeditor/templates/active_record/paperclip/migration.rb +26 -0
- data/lib/generators/ckeditor/templates/active_record/refile/ckeditor/asset.rb +4 -0
- data/lib/generators/ckeditor/templates/active_record/refile/ckeditor/attachment_file.rb +7 -0
- data/lib/generators/ckeditor/templates/active_record/refile/ckeditor/picture.rb +11 -0
- data/lib/generators/ckeditor/templates/active_record/refile/migration.rb +28 -0
- data/lib/generators/ckeditor/templates/base/carrierwave/uploaders/ckeditor_attachment_file_uploader.rb +38 -0
- data/lib/generators/ckeditor/templates/base/carrierwave/uploaders/ckeditor_picture_uploader.rb +47 -0
- data/lib/generators/ckeditor/templates/base/dragonfly/initializer.rb +20 -0
- data/lib/generators/ckeditor/templates/ckeditor.rb +53 -0
- data/lib/generators/ckeditor/templates/mongoid/carrierwave/ckeditor/asset.rb +7 -0
- data/lib/generators/ckeditor/templates/mongoid/carrierwave/ckeditor/attachment_file.rb +7 -0
- data/lib/generators/ckeditor/templates/mongoid/carrierwave/ckeditor/picture.rb +7 -0
- data/lib/generators/ckeditor/templates/mongoid/paperclip/ckeditor/asset.rb +5 -0
- data/lib/generators/ckeditor/templates/mongoid/paperclip/ckeditor/attachment_file.rb +13 -0
- data/lib/generators/ckeditor/templates/mongoid/paperclip/ckeditor/picture.rb +14 -0
- data/lib/generators/ckeditor/templates/pundit_policy/attachment_file_policy.rb +20 -0
- data/lib/generators/ckeditor/templates/pundit_policy/picture_policy.rb +20 -0
- data/lib/tasks/ckeditor.rake +26 -0
- data/test/controllers/attachment_files_controller_test.rb +63 -0
- data/test/controllers/pictures_controller_test.rb +63 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +10 -0
- data/test/dummy/app/assets/stylesheets/application.css +7 -0
- data/test/dummy/app/assets/stylesheets/scaffold.css +56 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/posts_controller.rb +83 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/helpers/posts_helper.rb +2 -0
- data/test/dummy/app/models/post.rb +17 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/posts/_form.html.erb +30 -0
- data/test/dummy/app/views/posts/edit.html.erb +6 -0
- data/test/dummy/app/views/posts/index.html.erb +27 -0
- data/test/dummy/app/views/posts/new.html.erb +5 -0
- data/test/dummy/app/views/posts/show.html.erb +5 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +63 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/ckeditor.rb +10 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/mongoid.yml +136 -0
- data/test/dummy/config/routes.rb +6 -0
- data/test/dummy/config/secrets.yml +8 -0
- data/test/dummy/db/migrate/20110623120047_create_posts.rb +14 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test/fixtures/files/rails.png +0 -0
- data/test/dummy/test/fixtures/files/rails.tar.gz +0 -0
- data/test/functional/posts_controller_test.rb +41 -0
- data/test/generators/install_generator_test.rb +111 -0
- data/test/integration/navigation_test.rb +7 -0
- data/test/models/attachment_file_test.rb +22 -0
- data/test/models/ckeditor_test.rb +101 -0
- data/test/models/picture_test.rb +26 -0
- data/test/models/utils_test.rb +18 -0
- data/test/orm/active_record.rb +1 -0
- data/test/orm/mongoid.rb +6 -0
- data/test/support/helpers.rb +30 -0
- data/test/support/integration_case.rb +5 -0
- data/test/support/raw_post.rb +9 -0
- data/test/support/routes.txt +4 -0
- data/test/test_helper.rb +36 -0
- data/vendor/assets/javascripts/ckeditor/CHANGES.md +1037 -0
- data/vendor/assets/javascripts/ckeditor/LICENSE.md +1420 -0
- data/vendor/assets/javascripts/ckeditor/README.md +39 -0
- data/vendor/assets/javascripts/ckeditor/adapters/jquery.js +10 -0
- data/vendor/assets/javascripts/ckeditor/ckeditor.js +1083 -0
- data/vendor/assets/javascripts/ckeditor/config.js +10 -0
- data/vendor/assets/javascripts/ckeditor/contents.css +132 -0
- data/vendor/assets/javascripts/ckeditor/lang/af.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/ar.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/bg.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/bn.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/bs.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/ca.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/cs.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/cy.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/da.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/de.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/el.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/en-au.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/en-ca.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/en-gb.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/en.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/eo.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/es.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/et.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/eu.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/fa.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/fi.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/fo.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/fr-ca.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/fr.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/gl.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/gu.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/he.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/hi.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/hr.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/hu.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/id.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/is.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/it.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/ja.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/ka.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/km.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/ko.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/ku.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/lt.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/lv.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/mk.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/mn.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/ms.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/nb.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/nl.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/no.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/pl.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/pt-br.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/pt.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/ro.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/ru.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/si.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/sk.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/sl.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/sq.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/sr-latn.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/sr.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/sv.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/th.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/tr.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/tt.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/ug.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/uk.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/vi.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/zh-cn.js +5 -0
- data/vendor/assets/javascripts/ckeditor/lang/zh.js +5 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt +25 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/af.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/da.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/el.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/es.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/et.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/eu.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fo.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/id.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/km.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/no.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/si.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/th.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/about/dialogs/about.js +7 -0
- data/vendor/assets/javascripts/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/colordialog/dialogs/colordialog.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
- data/vendor/assets/javascripts/ckeditor/plugins/div/dialogs/div.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/find/dialogs/find.js +24 -0
- data/vendor/assets/javascripts/ckeditor/plugins/flash/dialogs/flash.js +24 -0
- data/vendor/assets/javascripts/ckeditor/plugins/flash/images/placeholder.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/button.js +8 -0
- data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/checkbox.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/form.js +8 -0
- data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/hiddenfield.js +7 -0
- data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/radio.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/select.js +20 -0
- data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/textarea.js +8 -0
- data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/textfield.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/forms/images/hiddenfield.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/icons.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/icons_hidpi.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/iframe/dialogs/iframe.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/iframe/images/placeholder.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/image/dialogs/image.js +44 -0
- data/vendor/assets/javascripts/ckeditor/plugins/image/images/noimage.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/link/dialogs/anchor.js +7 -0
- data/vendor/assets/javascripts/ckeditor/plugins/link/dialogs/link.js +26 -0
- data/vendor/assets/javascripts/ckeditor/plugins/link/images/anchor.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/link/images/hidpi/anchor.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/liststyle/dialogs/liststyle.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/magicline/images/hidpi/icon-rtl.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/magicline/images/hidpi/icon.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/magicline/images/icon-rtl.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/magicline/images/icon.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/pastefromword/filter/default.js +32 -0
- data/vendor/assets/javascripts/ckeditor/plugins/preview/preview.html +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/scayt/CHANGELOG.md +20 -0
- data/vendor/assets/javascripts/ckeditor/plugins/scayt/LICENSE.md +28 -0
- data/vendor/assets/javascripts/ckeditor/plugins/scayt/README.md +25 -0
- data/vendor/assets/javascripts/ckeditor/plugins/scayt/dialogs/options.js +19 -0
- data/vendor/assets/javascripts/ckeditor/plugins/scayt/dialogs/toolbar.css +71 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_address.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_div.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_p.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/dialogs/smiley.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/angel_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/angry_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/broken_heart.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/confused_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/cry_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/devil_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/embarrassed_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/embarrassed_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/envelope.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/envelope.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/heart.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/heart.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/kiss.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/kiss.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/lightbulb.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/omg_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/regular_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/sad_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/shades_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/teeth_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/thumbs_down.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/thumbs_up.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/tongue_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/tongue_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/smiley/images/wink_smile.png +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt +20 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/af.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ar.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/bg.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ca.js +14 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/cs.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/cy.js +14 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/da.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/de.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/el.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/en.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/eo.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/es.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/et.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/eu.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fa.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fi.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fr.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/gl.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/he.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/hr.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/hu.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/id.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/it.js +14 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ja.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/km.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ko.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ku.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/lt.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/lv.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/nb.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/nl.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/no.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pl.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pt.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ru.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/si.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sk.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sl.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sq.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sv.js +11 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/th.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/tr.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/tt.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ug.js +13 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/uk.js +12 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/vi.js +14 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/zh.js +9 -0
- data/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/specialchar.js +14 -0
- data/vendor/assets/javascripts/ckeditor/plugins/table/dialogs/table.js +21 -0
- data/vendor/assets/javascripts/ckeditor/plugins/tabletools/dialogs/tableCell.js +17 -0
- data/vendor/assets/javascripts/ckeditor/plugins/templates/dialogs/templates.css +84 -0
- data/vendor/assets/javascripts/ckeditor/plugins/templates/dialogs/templates.js +10 -0
- data/vendor/assets/javascripts/ckeditor/plugins/templates/templates/default.js +7 -0
- data/vendor/assets/javascripts/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/LICENSE.md +28 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/README.md +25 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/ciframe.html +66 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +52 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc.css +82 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc.js +92 -0
- data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc_ie.js +11 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/dialog.css +5 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/dialog_ie.css +5 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/dialog_ie7.css +5 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/dialog_ie8.css +5 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/dialog_iequirks.css +5 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/editor.css +5 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/editor_gecko.css +5 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/editor_ie.css +5 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/editor_ie7.css +5 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/editor_ie8.css +5 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/editor_iequirks.css +5 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/icons.png +0 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/icons_hidpi.png +0 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/images/arrow.png +0 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/images/close.png +0 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/images/hidpi/close.png +0 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/images/hidpi/lock-open.png +0 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/images/hidpi/lock.png +0 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/images/hidpi/refresh.png +0 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/images/lock-open.png +0 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/images/lock.png +0 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/images/refresh.png +0 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/images/spinner.gif +0 -0
- data/vendor/assets/javascripts/ckeditor/skins/moono/readme.md +49 -0
- data/vendor/assets/javascripts/ckeditor/styles.js +111 -0
- metadata +640 -0
@@ -0,0 +1,300 @@
|
|
1
|
+
/**
|
2
|
+
* Author: Sergey Kukunin
|
3
|
+
* See: https://github.com/Kukunin/jquery-endless-scroll
|
4
|
+
*/
|
5
|
+
(function($) {
|
6
|
+
'use strict';
|
7
|
+
|
8
|
+
// Is pushState supported by this browser?
|
9
|
+
$.support.pushState =
|
10
|
+
window.history && window.history.pushState && window.history.replaceState &&
|
11
|
+
// pushState isn't reliable on iOS until 5.
|
12
|
+
!navigator.userAgent.match(/((iPod|iPhone|iPad).+\bOS\s+[1-4]|WebApps\/.+CFNetwork)/)
|
13
|
+
|
14
|
+
//Declaration of modules
|
15
|
+
var scrollModule = {
|
16
|
+
init: function(options, obj) {
|
17
|
+
obj.options = $.extend({
|
18
|
+
scrollContainer: window,
|
19
|
+
scrollPadding: 100,
|
20
|
+
scrollEventDelay: 300
|
21
|
+
}, options);
|
22
|
+
this.options = obj.options;
|
23
|
+
this.container = obj.container;
|
24
|
+
obj.scrollModule = this;
|
25
|
+
|
26
|
+
this._toplock = true;
|
27
|
+
this._bottomlock = true;
|
28
|
+
|
29
|
+
this.scrollContainer = $(this.options.scrollContainer);
|
30
|
+
|
31
|
+
this.updateEntities();
|
32
|
+
this.sortMarkers();
|
33
|
+
|
34
|
+
this.currentPage = null;
|
35
|
+
|
36
|
+
this.container.on("jes:afterPageLoad", $.proxy(function(event, url, placement) {
|
37
|
+
this.updateEntities();
|
38
|
+
this.sortMarkers();
|
39
|
+
this.checkMarker();
|
40
|
+
|
41
|
+
if ( placement == "top" ) {
|
42
|
+
//Get offset between first and second pages
|
43
|
+
var offset = this.markers[1].top,
|
44
|
+
scrollTop = this.scrollContainer.scrollTop();
|
45
|
+
|
46
|
+
this.scrollContainer.scrollTop(scrollTop + offset);
|
47
|
+
}
|
48
|
+
}, this));
|
49
|
+
|
50
|
+
this.bind();
|
51
|
+
},
|
52
|
+
updateEntities: function() {
|
53
|
+
this.entities = $(this.options.entity, this.container);
|
54
|
+
},
|
55
|
+
sortMarkers: function() {
|
56
|
+
var markers = [];
|
57
|
+
$(".jes-marker", this.container).each(function() {
|
58
|
+
markers.push({ top: $(this).position().top, url: $(this).data("jesUrl") });
|
59
|
+
});
|
60
|
+
this.markers = markers;
|
61
|
+
},
|
62
|
+
//Check, whether user scrolled to another page
|
63
|
+
checkMarker: function() {
|
64
|
+
var newPage = this.markers[0],
|
65
|
+
scrollTop = this.scrollContainer.scrollTop();
|
66
|
+
|
67
|
+
//Determine, what is current page
|
68
|
+
for ( var i = 1; i < this.markers.length; i++ ) {
|
69
|
+
if ( scrollTop > this.markers[i].top ) {
|
70
|
+
newPage = this.markers[i];
|
71
|
+
} else {
|
72
|
+
break;
|
73
|
+
}
|
74
|
+
}
|
75
|
+
if ( newPage.url != this.currentPage ) {
|
76
|
+
this.currentPage = newPage.url;
|
77
|
+
$(this.container).trigger("jes:scrollToPage", newPage.url);
|
78
|
+
}
|
79
|
+
},
|
80
|
+
bind: function() {
|
81
|
+
this.scrollContainer.on("scroll.jes", $.proxy(function(event) {
|
82
|
+
if ( this._tId ) { return; }
|
83
|
+
|
84
|
+
this.scrollHandler(event);
|
85
|
+
//Clean up mark
|
86
|
+
this._tId= setTimeout($.proxy(function(){
|
87
|
+
this._tId = null;
|
88
|
+
},this), this.options.scrollEventDelay);
|
89
|
+
|
90
|
+
}, this));
|
91
|
+
},
|
92
|
+
unbind: function() {
|
93
|
+
$(this.options.scrollContainer).off("scroll.jes");
|
94
|
+
},
|
95
|
+
scrollHandler: function(ev) {
|
96
|
+
var $scrollable = this.scrollContainer,
|
97
|
+
$entities = this.entities,
|
98
|
+
$firstEntity = $entities.first(),
|
99
|
+
$lastEntity = $entities.last();
|
100
|
+
|
101
|
+
var scrollTop = $scrollable.scrollTop(),
|
102
|
+
height = $scrollable.height(),
|
103
|
+
scrollBottom = scrollTop + height;
|
104
|
+
|
105
|
+
var topEntityPosition = $firstEntity.position().top,
|
106
|
+
topTarget = topEntityPosition + this.options.scrollPadding,
|
107
|
+
bottomEntityPosition = $lastEntity.outerHeight() + $lastEntity.position().top,
|
108
|
+
bottomTarget = bottomEntityPosition - this.options.scrollPadding;
|
109
|
+
|
110
|
+
//Don't trigger event again, if already fired
|
111
|
+
//Visitor have to leave the area and get back to fire event again
|
112
|
+
//Process top threshold
|
113
|
+
if ( scrollTop < topTarget ) {
|
114
|
+
if ( !this._toplock ) {
|
115
|
+
$(this.container).trigger("jes:topThreshold");
|
116
|
+
this._toplock = true;
|
117
|
+
}
|
118
|
+
} else {
|
119
|
+
this._toplock = false;
|
120
|
+
}
|
121
|
+
|
122
|
+
//Process bottom threshold
|
123
|
+
if ( scrollBottom > bottomTarget ) {
|
124
|
+
if ( !this._bottomlock ) {
|
125
|
+
$(this.container).trigger("jes:bottomThreshold");
|
126
|
+
this._bottomlock = true;
|
127
|
+
}
|
128
|
+
} else {
|
129
|
+
this._bottomlock = false;
|
130
|
+
}
|
131
|
+
|
132
|
+
this.checkMarker();
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
136
|
+
var ajaxModule = {
|
137
|
+
init: function(options, obj) {
|
138
|
+
obj.options = $.extend({
|
139
|
+
}, options);
|
140
|
+
|
141
|
+
this.options = obj.options;
|
142
|
+
this.container = obj.container;
|
143
|
+
|
144
|
+
//markers
|
145
|
+
this.setMarker($(this.options.entity, this.container).first(), location.href);
|
146
|
+
|
147
|
+
obj.ajaxModule = this;
|
148
|
+
},
|
149
|
+
loadPage: function(url, placement, callback) {
|
150
|
+
//The hash with methods list
|
151
|
+
//depends from placement
|
152
|
+
var actions = {
|
153
|
+
top: {
|
154
|
+
find: 'first',
|
155
|
+
inject: 'insertBefore'
|
156
|
+
},
|
157
|
+
bottom: {
|
158
|
+
find: 'last',
|
159
|
+
inject: 'insertAfter'
|
160
|
+
}
|
161
|
+
},
|
162
|
+
action = actions[placement];
|
163
|
+
|
164
|
+
this.container.trigger("jes:beforePageLoad", [url, placement]);
|
165
|
+
|
166
|
+
//Make AJAX query
|
167
|
+
$.get(url, null, $.proxy(function (_data) {
|
168
|
+
var data = $("<div>").html(_data),
|
169
|
+
containerSelector = this.options.container,
|
170
|
+
container = $(containerSelector, data).first();
|
171
|
+
|
172
|
+
if ( container.length ) {
|
173
|
+
//Find entities
|
174
|
+
var entities = container.find(this.options.entity);
|
175
|
+
|
176
|
+
if ( placement == "bottom" ) {
|
177
|
+
//Remove duplicated (staled) entities from page
|
178
|
+
entities.each(function(i) {
|
179
|
+
var id = $(this).attr("id");
|
180
|
+
if ( id ) {
|
181
|
+
$('#' + id, this.container).remove();
|
182
|
+
}
|
183
|
+
});
|
184
|
+
}
|
185
|
+
|
186
|
+
//Find the cursor
|
187
|
+
var cursor = $(this.options.entity, containerSelector)[action.find]();
|
188
|
+
|
189
|
+
//Find and insert entities
|
190
|
+
entities[action.inject](cursor);
|
191
|
+
this.setMarker(entities.first(), url);
|
192
|
+
}
|
193
|
+
|
194
|
+
if ( $.isFunction(callback) ) {
|
195
|
+
callback(data);
|
196
|
+
}
|
197
|
+
this.container.trigger("jes:afterPageLoad", [url, placement, data, entities]);
|
198
|
+
}, this), 'html');
|
199
|
+
},
|
200
|
+
setMarker: function(entity, url) {
|
201
|
+
entity.addClass("jes-marker").data("jesUrl", url);
|
202
|
+
}
|
203
|
+
}
|
204
|
+
|
205
|
+
var navigationModule = {
|
206
|
+
init: function(options, obj) {
|
207
|
+
obj.options = $.extend({
|
208
|
+
nextPage: ".pagination a[rel=next]",
|
209
|
+
previousPage: ".pagination a[rel=previous]"
|
210
|
+
}, options);
|
211
|
+
|
212
|
+
this.options = obj.options;
|
213
|
+
this.container = obj.container;
|
214
|
+
|
215
|
+
$.each([{
|
216
|
+
selector: this.options.nextPage,
|
217
|
+
event: "jes:bottomThreshold.navigation",
|
218
|
+
placement: 'bottom'
|
219
|
+
}, {
|
220
|
+
selector: this.options.previousPage,
|
221
|
+
event: "jes:topThreshold.navigation",
|
222
|
+
placement: 'top'
|
223
|
+
}], $.proxy(function(i, v) {
|
224
|
+
v.element = $(v.selector);
|
225
|
+
if ( v.element.length ) {
|
226
|
+
var url = v.element.prop("href"),
|
227
|
+
lock = false;
|
228
|
+
|
229
|
+
var handler = function() {
|
230
|
+
//this object is container
|
231
|
+
if ( lock || !url ) return;
|
232
|
+
|
233
|
+
lock = true;
|
234
|
+
obj.ajaxModule.loadPage(url, v.placement, $.proxy(function( data ) {
|
235
|
+
//Search new next link
|
236
|
+
var newElement = $(v.selector, $(data));
|
237
|
+
if ( newElement.length ) {
|
238
|
+
//Update URL and remove lock
|
239
|
+
lock = false;
|
240
|
+
url = newElement.prop("href");
|
241
|
+
v.element.attr("href", url);
|
242
|
+
} else {
|
243
|
+
//Remove event at all
|
244
|
+
$(this).off(v.event);
|
245
|
+
v.element.remove();
|
246
|
+
}
|
247
|
+
}, this));
|
248
|
+
};
|
249
|
+
|
250
|
+
$(this.container).on(v.event, handler);
|
251
|
+
$(v.element).on("click", $.proxy(function(ev) {
|
252
|
+
ev.preventDefault();
|
253
|
+
handler.apply(this.container)
|
254
|
+
}, this));
|
255
|
+
}
|
256
|
+
},this));
|
257
|
+
}
|
258
|
+
}
|
259
|
+
|
260
|
+
var pushStateHistory = {
|
261
|
+
init: function(options, obj) {
|
262
|
+
if ( !$.support.pushState ) {
|
263
|
+
return;
|
264
|
+
}
|
265
|
+
|
266
|
+
obj.container.on("jes:scrollToPage", function(event, url) {
|
267
|
+
history.replaceState({}, null, url);
|
268
|
+
});
|
269
|
+
}
|
270
|
+
}
|
271
|
+
|
272
|
+
$.endlessScroll = function(options) {
|
273
|
+
|
274
|
+
//Initialize modules
|
275
|
+
this.options = $.extend(true, {
|
276
|
+
container: "#container",
|
277
|
+
entity: ".entity",
|
278
|
+
_modules: [ ajaxModule, scrollModule, navigationModule, pushStateHistory ],
|
279
|
+
modules: []
|
280
|
+
}, options);
|
281
|
+
|
282
|
+
this.container = $(this.options.container);
|
283
|
+
if ( !this.container.length ) {
|
284
|
+
throw "Container for endless scroll isn't available on the page";
|
285
|
+
return;
|
286
|
+
}
|
287
|
+
|
288
|
+
|
289
|
+
//Merge custom options with default
|
290
|
+
$.merge(this.options.modules, this.options._modules);
|
291
|
+
//Init modules
|
292
|
+
this.options.modules.forEach($.proxy(function(module) {
|
293
|
+
module.init(this.options, this);
|
294
|
+
},this));
|
295
|
+
|
296
|
+
|
297
|
+
return this;
|
298
|
+
}
|
299
|
+
|
300
|
+
})(jQuery);
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/*
|
2
|
+
* jQuery Templates Plugin 1.0.0pre
|
3
|
+
* http://github.com/jquery/jquery-tmpl
|
4
|
+
* Requires jQuery 1.4.2
|
5
|
+
*
|
6
|
+
* Copyright Software Freedom Conservancy, Inc.
|
7
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
8
|
+
* http://jquery.org/license
|
9
|
+
*/
|
10
|
+
(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
|
@@ -0,0 +1,373 @@
|
|
1
|
+
(function($, undefined) {
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Unobtrusive scripting adapter for jQuery
|
5
|
+
*
|
6
|
+
* Requires jQuery 1.6.0 or later.
|
7
|
+
* https://github.com/rails/jquery-ujs
|
8
|
+
|
9
|
+
* Uploading file using rails.js
|
10
|
+
* =============================
|
11
|
+
*
|
12
|
+
* By default, browsers do not allow files to be uploaded via AJAX. As a result, if there are any non-blank file fields
|
13
|
+
* in the remote form, this adapter aborts the AJAX submission and allows the form to submit through standard means.
|
14
|
+
*
|
15
|
+
* The `ajax:aborted:file` event allows you to bind your own handler to process the form submission however you wish.
|
16
|
+
*
|
17
|
+
* Ex:
|
18
|
+
* $('form').live('ajax:aborted:file', function(event, elements){
|
19
|
+
* // Implement own remote file-transfer handler here for non-blank file inputs passed in `elements`.
|
20
|
+
* // Returning false in this handler tells rails.js to disallow standard form submission
|
21
|
+
* return false;
|
22
|
+
* });
|
23
|
+
*
|
24
|
+
* The `ajax:aborted:file` event is fired when a file-type input is detected with a non-blank value.
|
25
|
+
*
|
26
|
+
* Third-party tools can use this hook to detect when an AJAX file upload is attempted, and then use
|
27
|
+
* techniques like the iframe method to upload the file instead.
|
28
|
+
*
|
29
|
+
* Required fields in rails.js
|
30
|
+
* ===========================
|
31
|
+
*
|
32
|
+
* If any blank required inputs (required="required") are detected in the remote form, the whole form submission
|
33
|
+
* is canceled. Note that this is unlike file inputs, which still allow standard (non-AJAX) form submission.
|
34
|
+
*
|
35
|
+
* The `ajax:aborted:required` event allows you to bind your own handler to inform the user of blank required inputs.
|
36
|
+
*
|
37
|
+
* !! Note that Opera does not fire the form's submit event if there are blank required inputs, so this event may never
|
38
|
+
* get fired in Opera. This event is what causes other browsers to exhibit the same submit-aborting behavior.
|
39
|
+
*
|
40
|
+
* Ex:
|
41
|
+
* $('form').live('ajax:aborted:required', function(event, elements){
|
42
|
+
* // Returning false in this handler tells rails.js to submit the form anyway.
|
43
|
+
* // The blank required inputs are passed to this function in `elements`.
|
44
|
+
* return ! confirm("Would you like to submit the form with missing info?");
|
45
|
+
* });
|
46
|
+
*/
|
47
|
+
|
48
|
+
// Shorthand to make it a little easier to call public rails functions from within rails.js
|
49
|
+
var rails;
|
50
|
+
|
51
|
+
$.rails = rails = {
|
52
|
+
// Link elements bound by jquery-ujs
|
53
|
+
linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote], a[data-disable-with]',
|
54
|
+
|
55
|
+
// Select elements bound by jquery-ujs
|
56
|
+
inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',
|
57
|
+
|
58
|
+
// Form elements bound by jquery-ujs
|
59
|
+
formSubmitSelector: 'form',
|
60
|
+
|
61
|
+
// Form input elements bound by jquery-ujs
|
62
|
+
formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not(button[type])',
|
63
|
+
|
64
|
+
// Form input elements disabled during form submission
|
65
|
+
disableSelector: 'input[data-disable-with], button[data-disable-with], textarea[data-disable-with]',
|
66
|
+
|
67
|
+
// Form input elements re-enabled after form submission
|
68
|
+
enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled',
|
69
|
+
|
70
|
+
// Form required input elements
|
71
|
+
requiredInputSelector: 'input[name][required]:not([disabled]),textarea[name][required]:not([disabled])',
|
72
|
+
|
73
|
+
// Form file input elements
|
74
|
+
fileInputSelector: 'input:file',
|
75
|
+
|
76
|
+
// Link onClick disable selector with possible reenable after remote submission
|
77
|
+
linkDisableSelector: 'a[data-disable-with]',
|
78
|
+
|
79
|
+
// Make sure that every Ajax request sends the CSRF token
|
80
|
+
CSRFProtection: function(xhr) {
|
81
|
+
var token = $('meta[name="csrf-token"]').attr('content');
|
82
|
+
if (token) xhr.setRequestHeader('X-CSRF-Token', token);
|
83
|
+
},
|
84
|
+
|
85
|
+
// Triggers an event on an element and returns false if the event result is false
|
86
|
+
fire: function(obj, name, data) {
|
87
|
+
var event = $.Event(name);
|
88
|
+
obj.trigger(event, data);
|
89
|
+
return event.result !== false;
|
90
|
+
},
|
91
|
+
|
92
|
+
// Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm
|
93
|
+
confirm: function(message) {
|
94
|
+
return confirm(message);
|
95
|
+
},
|
96
|
+
|
97
|
+
// Default ajax function, may be overridden with custom function in $.rails.ajax
|
98
|
+
ajax: function(options) {
|
99
|
+
return $.ajax(options);
|
100
|
+
},
|
101
|
+
|
102
|
+
// Submits "remote" forms and links with ajax
|
103
|
+
handleRemote: function(element) {
|
104
|
+
var method, url, data,
|
105
|
+
crossDomain = element.data('cross-domain') || null,
|
106
|
+
dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType),
|
107
|
+
options;
|
108
|
+
|
109
|
+
if (rails.fire(element, 'ajax:before')) {
|
110
|
+
|
111
|
+
if (element.is('form')) {
|
112
|
+
method = element.attr('method');
|
113
|
+
url = element.attr('action');
|
114
|
+
data = element.serializeArray();
|
115
|
+
// memoized value from clicked submit button
|
116
|
+
var button = element.data('ujs:submit-button');
|
117
|
+
if (button) {
|
118
|
+
data.push(button);
|
119
|
+
element.data('ujs:submit-button', null);
|
120
|
+
}
|
121
|
+
} else if (element.is(rails.inputChangeSelector)) {
|
122
|
+
method = element.data('method');
|
123
|
+
url = element.data('url');
|
124
|
+
data = element.serialize();
|
125
|
+
if (element.data('params')) data = data + "&" + element.data('params');
|
126
|
+
} else {
|
127
|
+
method = element.data('method');
|
128
|
+
url = element.attr('href');
|
129
|
+
data = element.data('params') || null;
|
130
|
+
}
|
131
|
+
|
132
|
+
options = {
|
133
|
+
type: method || 'GET', data: data, dataType: dataType, crossDomain: crossDomain,
|
134
|
+
// stopping the "ajax:beforeSend" event will cancel the ajax request
|
135
|
+
beforeSend: function(xhr, settings) {
|
136
|
+
if (settings.dataType === undefined) {
|
137
|
+
xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
|
138
|
+
}
|
139
|
+
return rails.fire(element, 'ajax:beforeSend', [xhr, settings]);
|
140
|
+
},
|
141
|
+
success: function(data, status, xhr) {
|
142
|
+
element.trigger('ajax:success', [data, status, xhr]);
|
143
|
+
},
|
144
|
+
complete: function(xhr, status) {
|
145
|
+
element.trigger('ajax:complete', [xhr, status]);
|
146
|
+
},
|
147
|
+
error: function(xhr, status, error) {
|
148
|
+
element.trigger('ajax:error', [xhr, status, error]);
|
149
|
+
}
|
150
|
+
};
|
151
|
+
// Only pass url to `ajax` options if not blank
|
152
|
+
if (url) { options.url = url; }
|
153
|
+
|
154
|
+
return rails.ajax(options);
|
155
|
+
} else {
|
156
|
+
return false;
|
157
|
+
}
|
158
|
+
},
|
159
|
+
|
160
|
+
// Handles "data-method" on links such as:
|
161
|
+
// <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a>
|
162
|
+
handleMethod: function(link) {
|
163
|
+
var href = link.attr('href'),
|
164
|
+
method = link.data('method'),
|
165
|
+
target = link.attr('target'),
|
166
|
+
csrf_token = $('meta[name=csrf-token]').attr('content'),
|
167
|
+
csrf_param = $('meta[name=csrf-param]').attr('content'),
|
168
|
+
form = $('<form method="post" action="' + href + '"></form>'),
|
169
|
+
metadata_input = '<input name="_method" value="' + method + '" type="hidden" />';
|
170
|
+
|
171
|
+
if (csrf_param !== undefined && csrf_token !== undefined) {
|
172
|
+
metadata_input += '<input name="' + csrf_param + '" value="' + csrf_token + '" type="hidden" />';
|
173
|
+
}
|
174
|
+
|
175
|
+
if (target) { form.attr('target', target); }
|
176
|
+
|
177
|
+
form.hide().append(metadata_input).appendTo('body');
|
178
|
+
form.submit();
|
179
|
+
},
|
180
|
+
|
181
|
+
/* Disables form elements:
|
182
|
+
- Caches element value in 'ujs:enable-with' data store
|
183
|
+
- Replaces element text with value of 'data-disable-with' attribute
|
184
|
+
- Sets disabled property to true
|
185
|
+
*/
|
186
|
+
disableFormElements: function(form) {
|
187
|
+
form.find(rails.disableSelector).each(function() {
|
188
|
+
var element = $(this), method = element.is('button') ? 'html' : 'val';
|
189
|
+
element.data('ujs:enable-with', element[method]());
|
190
|
+
element[method](element.data('disable-with'));
|
191
|
+
element.prop('disabled', true);
|
192
|
+
});
|
193
|
+
},
|
194
|
+
|
195
|
+
/* Re-enables disabled form elements:
|
196
|
+
- Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)
|
197
|
+
- Sets disabled property to false
|
198
|
+
*/
|
199
|
+
enableFormElements: function(form) {
|
200
|
+
form.find(rails.enableSelector).each(function() {
|
201
|
+
var element = $(this), method = element.is('button') ? 'html' : 'val';
|
202
|
+
if (element.data('ujs:enable-with')) element[method](element.data('ujs:enable-with'));
|
203
|
+
element.prop('disabled', false);
|
204
|
+
});
|
205
|
+
},
|
206
|
+
|
207
|
+
/* For 'data-confirm' attribute:
|
208
|
+
- Fires `confirm` event
|
209
|
+
- Shows the confirmation dialog
|
210
|
+
- Fires the `confirm:complete` event
|
211
|
+
|
212
|
+
Returns `true` if no function stops the chain and user chose yes; `false` otherwise.
|
213
|
+
Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.
|
214
|
+
Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function
|
215
|
+
return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.
|
216
|
+
*/
|
217
|
+
allowAction: function(element) {
|
218
|
+
var message = element.data('confirm'),
|
219
|
+
answer = false, callback;
|
220
|
+
if (!message) { return true; }
|
221
|
+
|
222
|
+
if (rails.fire(element, 'confirm')) {
|
223
|
+
answer = rails.confirm(message);
|
224
|
+
callback = rails.fire(element, 'confirm:complete', [answer]);
|
225
|
+
}
|
226
|
+
return answer && callback;
|
227
|
+
},
|
228
|
+
|
229
|
+
// Helper function which checks for blank inputs in a form that match the specified CSS selector
|
230
|
+
blankInputs: function(form, specifiedSelector, nonBlank) {
|
231
|
+
var inputs = $(), input,
|
232
|
+
selector = specifiedSelector || 'input,textarea';
|
233
|
+
form.find(selector).each(function() {
|
234
|
+
input = $(this);
|
235
|
+
// Collect non-blank inputs if nonBlank option is true, otherwise, collect blank inputs
|
236
|
+
if (nonBlank ? input.val() : !input.val()) {
|
237
|
+
inputs = inputs.add(input);
|
238
|
+
}
|
239
|
+
});
|
240
|
+
return inputs.length ? inputs : false;
|
241
|
+
},
|
242
|
+
|
243
|
+
// Helper function which checks for non-blank inputs in a form that match the specified CSS selector
|
244
|
+
nonBlankInputs: function(form, specifiedSelector) {
|
245
|
+
return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank
|
246
|
+
},
|
247
|
+
|
248
|
+
// Helper function, needed to provide consistent behavior in IE
|
249
|
+
stopEverything: function(e) {
|
250
|
+
$(e.target).trigger('ujs:everythingStopped');
|
251
|
+
e.stopImmediatePropagation();
|
252
|
+
return false;
|
253
|
+
},
|
254
|
+
|
255
|
+
// find all the submit events directly bound to the form and
|
256
|
+
// manually invoke them. If anyone returns false then stop the loop
|
257
|
+
callFormSubmitBindings: function(form, event) {
|
258
|
+
var events = form.data('events'), continuePropagation = true;
|
259
|
+
if (events !== undefined && events['submit'] !== undefined) {
|
260
|
+
$.each(events['submit'], function(i, obj){
|
261
|
+
if (typeof obj.handler === 'function') return continuePropagation = obj.handler(event);
|
262
|
+
});
|
263
|
+
}
|
264
|
+
return continuePropagation;
|
265
|
+
},
|
266
|
+
|
267
|
+
// replace element's html with the 'data-disable-with' after storing original html
|
268
|
+
// and prevent clicking on it
|
269
|
+
disableElement: function(element) {
|
270
|
+
element.data('ujs:enable-with', element.html()); // store enabled state
|
271
|
+
element.html(element.data('disable-with')); // set to disabled state
|
272
|
+
element.bind('click.railsDisable', function(e) { // prevent further clicking
|
273
|
+
return rails.stopEverything(e)
|
274
|
+
});
|
275
|
+
},
|
276
|
+
|
277
|
+
// restore element to its original state which was disabled by 'disableElement' above
|
278
|
+
enableElement: function(element) {
|
279
|
+
if (element.data('ujs:enable-with') !== undefined) {
|
280
|
+
element.html(element.data('ujs:enable-with')); // set to old enabled state
|
281
|
+
// this should be element.removeData('ujs:enable-with')
|
282
|
+
// but, there is currently a bug in jquery which makes hyphenated data attributes not get removed
|
283
|
+
element.data('ujs:enable-with', false); // clean up cache
|
284
|
+
}
|
285
|
+
element.unbind('click.railsDisable'); // enable element
|
286
|
+
}
|
287
|
+
|
288
|
+
};
|
289
|
+
|
290
|
+
$.ajaxPrefilter(function(options, originalOptions, xhr){ if ( !options.crossDomain ) { rails.CSRFProtection(xhr); }});
|
291
|
+
|
292
|
+
$(document).delegate(rails.linkDisableSelector, 'ajax:complete', function() {
|
293
|
+
rails.enableElement($(this));
|
294
|
+
});
|
295
|
+
|
296
|
+
$(document).delegate(rails.linkClickSelector, 'click.rails', function(e) {
|
297
|
+
var link = $(this), method = link.data('method'), data = link.data('params');
|
298
|
+
if (!rails.allowAction(link)) return rails.stopEverything(e);
|
299
|
+
|
300
|
+
if (link.is(rails.linkDisableSelector)) rails.disableElement(link);
|
301
|
+
|
302
|
+
if (link.data('remote') !== undefined) {
|
303
|
+
if ( (e.metaKey || e.ctrlKey) && (!method || method === 'GET') && !data ) { return true; }
|
304
|
+
|
305
|
+
if (rails.handleRemote(link) === false) { rails.enableElement(link); }
|
306
|
+
return false;
|
307
|
+
|
308
|
+
} else if (link.data('method')) {
|
309
|
+
rails.handleMethod(link);
|
310
|
+
return false;
|
311
|
+
}
|
312
|
+
});
|
313
|
+
|
314
|
+
$(document).delegate(rails.inputChangeSelector, 'change.rails', function(e) {
|
315
|
+
var link = $(this);
|
316
|
+
if (!rails.allowAction(link)) return rails.stopEverything(e);
|
317
|
+
|
318
|
+
rails.handleRemote(link);
|
319
|
+
return false;
|
320
|
+
});
|
321
|
+
|
322
|
+
$(document).delegate(rails.formSubmitSelector, 'submit.rails', function(e) {
|
323
|
+
var form = $(this),
|
324
|
+
remote = form.data('remote') !== undefined,
|
325
|
+
blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector),
|
326
|
+
nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);
|
327
|
+
|
328
|
+
if (!rails.allowAction(form)) return rails.stopEverything(e);
|
329
|
+
|
330
|
+
// skip other logic when required values are missing or file upload is present
|
331
|
+
if (blankRequiredInputs && form.attr("novalidate") == undefined && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {
|
332
|
+
return rails.stopEverything(e);
|
333
|
+
}
|
334
|
+
|
335
|
+
if (remote) {
|
336
|
+
if (nonBlankFileInputs) {
|
337
|
+
return rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);
|
338
|
+
}
|
339
|
+
|
340
|
+
// If browser does not support submit bubbling, then this live-binding will be called before direct
|
341
|
+
// bindings. Therefore, we should directly call any direct bindings before remotely submitting form.
|
342
|
+
if (!$.support.submitBubbles && $().jquery < '1.7' && rails.callFormSubmitBindings(form, e) === false) return rails.stopEverything(e);
|
343
|
+
|
344
|
+
rails.handleRemote(form);
|
345
|
+
return false;
|
346
|
+
|
347
|
+
} else {
|
348
|
+
// slight timeout so that the submit button gets properly serialized
|
349
|
+
setTimeout(function(){ rails.disableFormElements(form); }, 13);
|
350
|
+
}
|
351
|
+
});
|
352
|
+
|
353
|
+
$(document).delegate(rails.formInputClickSelector, 'click.rails', function(event) {
|
354
|
+
var button = $(this);
|
355
|
+
|
356
|
+
if (!rails.allowAction(button)) return rails.stopEverything(event);
|
357
|
+
|
358
|
+
// register the pressed submit button
|
359
|
+
var name = button.attr('name'),
|
360
|
+
data = name ? {name:name, value:button.val()} : null;
|
361
|
+
|
362
|
+
button.closest('form').data('ujs:submit-button', data);
|
363
|
+
});
|
364
|
+
|
365
|
+
$(document).delegate(rails.formSubmitSelector, 'ajax:beforeSend.rails', function(event) {
|
366
|
+
if (this == event.target) rails.disableFormElements($(this));
|
367
|
+
});
|
368
|
+
|
369
|
+
$(document).delegate(rails.formSubmitSelector, 'ajax:complete.rails', function(event) {
|
370
|
+
if (this == event.target) rails.enableFormElements($(this));
|
371
|
+
});
|
372
|
+
|
373
|
+
})( jQuery );
|