refinerycms-core 1.0.11 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/{public → app/assets/images}/favicon.ico +0 -0
- data/{public → app/assets}/images/refinery/add.png +0 -0
- data/{public → app/assets}/images/refinery/admin_bg.png +0 -0
- data/{public → app/assets}/images/refinery/ajax-loader.gif +0 -0
- data/{public → app/assets}/images/refinery/branch-end.gif +0 -0
- data/{public → app/assets}/images/refinery/branch-start.gif +0 -0
- data/{public → app/assets}/images/refinery/branch.gif +0 -0
- data/{public → app/assets}/images/refinery/carousel-left.png +0 -0
- data/{public → app/assets}/images/refinery/carousel-right.png +0 -0
- data/{public → app/assets}/images/refinery/cross.png +0 -0
- data/{public → app/assets}/images/refinery/dialogLoadingAnimation.gif +0 -0
- data/{public → app/assets}/images/refinery/header_background.png +0 -0
- data/{public → app/assets}/images/refinery/hover-gradient.jpg +0 -0
- data/{public → app/assets}/images/refinery/icons/accept.png +0 -0
- data/{public → app/assets}/images/refinery/icons/add.png +0 -0
- data/{public → app/assets}/images/refinery/icons/ajax-loader.gif +0 -0
- data/{public → app/assets}/images/refinery/icons/application_edit.png +0 -0
- data/{public → app/assets}/images/refinery/icons/application_go.png +0 -0
- data/{public → app/assets}/images/refinery/icons/arrow_left.png +0 -0
- data/{public → app/assets}/images/refinery/icons/arrow_switch.png +0 -0
- data/{public → app/assets}/images/refinery/icons/arrow_up.png +0 -0
- data/{public → app/assets}/images/refinery/icons/bin.png +0 -0
- data/{public → app/assets}/images/refinery/icons/bin_closed.png +0 -0
- data/{public → app/assets}/images/refinery/icons/cancel.png +0 -0
- data/{public → app/assets}/images/refinery/icons/cog_add.png +0 -0
- data/{public → app/assets}/images/refinery/icons/cog_edit.png +0 -0
- data/{public → app/assets}/images/refinery/icons/cross.png +0 -0
- data/{public → app/assets}/images/refinery/icons/delete.png +0 -0
- data/{public → app/assets}/images/refinery/icons/doc.png +0 -0
- data/{public → app/assets}/images/refinery/icons/down.gif +0 -0
- data/{public → app/assets}/images/refinery/icons/edit.png +0 -0
- data/{public → app/assets}/images/refinery/icons/email.png +0 -0
- data/{public → app/assets}/images/refinery/icons/email_edit.png +0 -0
- data/{public → app/assets}/images/refinery/icons/email_go.png +0 -0
- data/{public → app/assets}/images/refinery/icons/email_open.png +0 -0
- data/{public → app/assets}/images/refinery/icons/eye.png +0 -0
- data/app/assets/images/refinery/icons/folder.png +0 -0
- data/app/assets/images/refinery/icons/folder_open.png +0 -0
- data/{public → app/assets}/images/refinery/icons/folder_page_white.png +0 -0
- data/{public → app/assets}/images/refinery/icons/image_add.png +0 -0
- data/{public → app/assets}/images/refinery/icons/image_edit.png +0 -0
- data/{public → app/assets}/images/refinery/icons/img.png +0 -0
- data/{public → app/assets}/images/refinery/icons/information.png +0 -0
- data/{public → app/assets}/images/refinery/icons/layout_add.png +0 -0
- data/{public → app/assets}/images/refinery/icons/layout_edit.png +0 -0
- data/{public → app/assets}/images/refinery/icons/music.png +0 -0
- data/app/assets/images/refinery/icons/page.png +0 -0
- data/{public → app/assets}/images/refinery/icons/page_add.png +0 -0
- data/{public → app/assets}/images/refinery/icons/page_edit.png +0 -0
- data/{public → app/assets}/images/refinery/icons/page_white_edit.png +0 -0
- data/{public → app/assets}/images/refinery/icons/page_white_gear.png +0 -0
- data/{public → app/assets}/images/refinery/icons/page_white_put.png +0 -0
- data/{public → app/assets}/images/refinery/icons/pdf.png +0 -0
- data/{public → app/assets}/images/refinery/icons/ppt.png +0 -0
- data/{public → app/assets}/images/refinery/icons/star.png +0 -0
- data/{public → app/assets}/images/refinery/icons/tick.png +0 -0
- data/{public → app/assets}/images/refinery/icons/up.gif +0 -0
- data/{public → app/assets}/images/refinery/icons/user_add.png +0 -0
- data/{public → app/assets}/images/refinery/icons/user_comment.png +0 -0
- data/{public → app/assets}/images/refinery/icons/user_edit.png +0 -0
- data/{public → app/assets}/images/refinery/icons/xls.png +0 -0
- data/{public → app/assets}/images/refinery/icons/zip.png +0 -0
- data/{public → app/assets}/images/refinery/icons/zoom.png +0 -0
- data/{public → app/assets}/images/refinery/logo-large.png +0 -0
- data/{public → app/assets}/images/refinery/logo-medium.png +0 -0
- data/{public → app/assets}/images/refinery/logo-site-bar.png +0 -0
- data/{public → app/assets}/images/refinery/logo-small-medium.png +0 -0
- data/{public → app/assets}/images/refinery/logo-small.png +0 -0
- data/{public → app/assets}/images/refinery/logo-tiny.png +0 -0
- data/{public → app/assets}/images/refinery/logo.png +0 -0
- data/{public → app/assets}/images/refinery/nav-3-background.gif +0 -0
- data/{public → app/assets}/images/refinery/nav_inactive_background.png +0 -0
- data/{public → app/assets}/images/refinery/orange_button.png +0 -0
- data/{public → app/assets}/images/refinery/page_bg.png +0 -0
- data/{public → app/assets}/images/refinery/resolve_digital_footer_logo.png +0 -0
- data/{public → app/assets}/images/refinery/text_field_background.png +0 -0
- data/{public → app/assets}/images/refinery/tooltip-nib.gif +0 -0
- data/{public → app/assets}/images/refinery/tooltip-nib.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/arrow_redo.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/arrow_undo.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/eye.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/article.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/aside.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/blockquote.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/command.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/details.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/figcaption.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/figure.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/footer.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/h1.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/h2.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/h3.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/h4.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/h5.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/h6.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/header.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/hgroup.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/mark.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/meter.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/nav.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/p.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/pre.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/progress.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/readme.md +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/rp.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/rt.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/ruby.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/section.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/summary.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/html5/time.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-blockquote.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-h1.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-h2.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-h3.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-h4.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-h5.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-h6.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-p.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/iframe/lbl-pre.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/link_add.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/link_break.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/page_code.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/page_paste.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/photo_add.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/right.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/style.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/table_add.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_align_center.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_align_justify.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_align_left.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_align_right.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_bold.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_heading_1.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_heading_2.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_heading_3.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_heading_4.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_heading_5.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_heading_6.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_indent.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_indent_remove.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_italic.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_list_bullets.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_list_numbers.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_paragraph.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_strikethrough.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_subscript.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_superscript.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/refinery/text_underline.png +0 -0
- data/{public → app/assets}/images/wymeditor/skins/wymeditor_icon.png +0 -0
- data/{public → app/assets}/javascripts/admin.js +1 -2
- data/{public → app/assets}/javascripts/application.js +0 -0
- data/{public → app/assets}/javascripts/dd_belatedpng.js +0 -0
- data/{public → app/assets}/javascripts/jquery/GPL-LICENSE.txt +0 -0
- data/{public → app/assets}/javascripts/jquery/MIT-LICENSE.txt +0 -0
- data/{public → app/assets}/javascripts/jquery/jquery.corner.js +0 -0
- data/{public → app/assets}/javascripts/jquery/jquery.html5-placeholder-shim.js +0 -0
- data/{public → app/assets}/javascripts/jquery/jquery.jcarousel.js +0 -0
- data/{public → app/assets}/javascripts/jquery/jquery.textTruncate.js +0 -0
- data/{public → app/assets}/javascripts/jquery/jquery.timers.js +0 -0
- data/app/assets/javascripts/modernizr-min.js +4 -0
- data/{public/javascripts/refinery/admin.js → app/assets/javascripts/refinery/admin.js.erb} +121 -209
- data/app/assets/javascripts/refinery/ajaxy_pagination.js.coffee +13 -0
- data/{public/javascripts/refinery/boot_wym.js → app/assets/javascripts/refinery/boot_wym.js.erb} +8 -8
- data/{public → app/assets}/javascripts/refinery/core.js +1 -1
- data/app/assets/javascripts/refinery/interface.js.coffee.erb +70 -0
- data/app/assets/javascripts/refinery/modal_dialogs.js.erb +142 -0
- data/app/assets/javascripts/refinery/nestedsortables.js +356 -0
- data/app/assets/javascripts/refinery/refinery.js.erb +20 -0
- data/app/assets/javascripts/refinery/serializelist.js +68 -0
- data/{public → app/assets}/javascripts/refinery/site_bar.js +0 -0
- data/app/assets/javascripts/refinery/sortable_menu.js.coffee +21 -0
- data/{public/javascripts/refinery/submenu.js → app/assets/javascripts/refinery/submenu.js.erb} +1 -1
- data/app/assets/javascripts/refinery/submit_continue.js.coffee.erb +8 -0
- data/app/assets/javascripts/refinery/tree.js +25 -0
- data/app/assets/javascripts/refinery/wymeditor.js +37 -0
- data/app/assets/javascripts/wymeditor/browsers/ie.js.erb +224 -0
- data/app/assets/javascripts/wymeditor/browsers/mozilla.js.erb +293 -0
- data/app/assets/javascripts/wymeditor/browsers/opera.js.erb +123 -0
- data/app/assets/javascripts/wymeditor/browsers/webkit.js.erb +284 -0
- data/app/assets/javascripts/wymeditor/classes.js.erb +1577 -0
- data/app/assets/javascripts/wymeditor/functions.js.erb +218 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/bg.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/ca.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/cs.js +12 -1
- data/{public → app/assets}/javascripts/wymeditor/lang/da.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/de.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/en.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/es.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/fa.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/fi.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/fr.js +13 -1
- data/{public → app/assets}/javascripts/wymeditor/lang/he.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/hu.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/it.js +0 -0
- data/{public/javascripts/wymeditor/lang/jp.js → app/assets/javascripts/wymeditor/lang/ja.js} +1 -1
- data/{public → app/assets}/javascripts/wymeditor/lang/lv.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/nb.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/nl.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/nn.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/pl.js +0 -0
- data/app/assets/javascripts/wymeditor/lang/pt-BR.js +58 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/pt.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/rs.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/ru.js +14 -3
- data/{public → app/assets}/javascripts/wymeditor/lang/sk.js +12 -1
- data/{public → app/assets}/javascripts/wymeditor/lang/sl.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/sv.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/tr.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/vi.js +0 -0
- data/{public → app/assets}/javascripts/wymeditor/lang/zh_cn.js +0 -0
- data/app/assets/javascripts/wymeditor/prototypes.js.erb +1106 -0
- data/app/assets/javascripts/wymeditor/setup.js.erb +622 -0
- data/{public → app/assets}/javascripts/wymeditor/skins/refinery/skin.js +0 -0
- data/app/assets/javascripts/wymeditor/validators.js.erb +776 -0
- data/{public/stylesheets/refinery/home.css → app/assets/stylesheets/.gitkeep} +0 -0
- data/app/assets/stylesheets/application.css.scss +55 -0
- data/{public/stylesheets/refinery/formatting.css → app/assets/stylesheets/formatting.css.scss} +20 -23
- data/{public/stylesheets/home.css → app/assets/stylesheets/home.css.scss} +1 -2
- data/{public/stylesheets/refinery/refinery.css → app/assets/stylesheets/refinery/refinery.css.scss} +616 -654
- data/app/assets/stylesheets/refinery/site_bar.css.scss +92 -0
- data/app/assets/stylesheets/refinery/submenu.css.scss +24 -0
- data/app/assets/stylesheets/refinery/tooltips.css.scss +34 -0
- data/{public/stylesheets/refinery/ui.css → app/assets/stylesheets/refinery/ui.css.scss} +50 -54
- data/{public/stylesheets/refinery/theme.css → app/assets/stylesheets/theme.css.scss} +1 -1
- data/{public/stylesheets/wymeditor/skins/refinery/skin.css → app/assets/stylesheets/wymeditor/skins/refinery/skin.css.scss} +58 -58
- data/{public/stylesheets/wymeditor/skins/refinery/wymiframe.css → app/assets/stylesheets/wymeditor/skins/refinery/wymiframe.css.scss} +29 -29
- data/app/controllers/application_controller.rb +0 -1
- data/app/controllers/refinery/admin/dialogs_controller.rb +24 -0
- data/app/controllers/refinery/admin/refinery_core_controller.rb +14 -0
- data/app/controllers/{admin/base_controller.rb → refinery/admin_controller.rb} +2 -3
- data/app/controllers/refinery/fast_controller.rb +5 -1
- data/app/controllers/refinery/sitemap_controller.rb +20 -0
- data/app/helpers/application_helper.rb +1 -1
- data/app/helpers/refinery/custom_assets_helper.rb +11 -0
- data/app/helpers/refinery/html_truncation_helper.rb +23 -0
- data/app/helpers/refinery/image_helper.rb +37 -0
- data/app/helpers/refinery/menu_helper.rb +66 -0
- data/app/helpers/refinery/meta_helper.rb +52 -0
- data/app/helpers/refinery/pagination_helper.rb +14 -0
- data/app/helpers/refinery/site_bar_helper.rb +30 -0
- data/app/helpers/refinery/tag_helper.rb +20 -0
- data/app/helpers/refinery/translation_helper.rb +15 -0
- data/app/models/refinery/core/base_model.rb +11 -0
- data/app/views/layouts/application.html.erb +9 -9
- data/app/views/layouts/refinery/admin.html.erb +23 -0
- data/app/views/layouts/refinery/admin_dialog.html.erb +17 -0
- data/app/views/layouts/refinery/flash.html.erb +2 -0
- data/app/views/refinery/_content_page.html.erb +2 -0
- data/app/views/{shared → refinery}/_draft_page_message.html.erb +0 -0
- data/app/views/refinery/_footer.html.erb +4 -0
- data/app/views/{shared → refinery}/_google_analytics.html.erb +2 -2
- data/app/views/refinery/_head.html.erb +18 -0
- data/app/views/refinery/_header.html.erb +7 -0
- data/app/views/{shared → refinery}/_html_tag.html.erb +0 -0
- data/app/views/{shared → refinery}/_ie6check.html.erb +2 -2
- data/app/views/{shared → refinery}/_javascripts.html.erb +0 -0
- data/app/views/refinery/_menu.html.erb +20 -0
- data/app/views/refinery/_menu_branch.html.erb +19 -0
- data/app/views/refinery/_message.html.erb +7 -0
- data/app/views/{shared → refinery}/_no_script.html.erb +0 -0
- data/app/views/{shared → refinery}/_site_bar.html.erb +3 -3
- data/app/views/{shared → refinery}/admin/_continue_editing.html.erb +0 -0
- data/app/views/refinery/admin/_dialog_success.html.erb +5 -0
- data/app/views/{shared → refinery}/admin/_error_messages.html.erb +0 -0
- data/app/views/{shared → refinery}/admin/_form_actions.html.erb +11 -15
- data/app/views/refinery/admin/_head.html.erb +13 -0
- data/app/views/{shared → refinery}/admin/_image_picker.html.erb +8 -7
- data/app/views/refinery/admin/_javascripts.html.erb +8 -0
- data/app/views/refinery/admin/_make_sortable.html.erb +16 -0
- data/app/views/{admin → refinery/admin}/_menu.html.erb +4 -4
- data/app/views/{shared → refinery}/admin/_resource_picker.html.erb +14 -23
- data/app/views/{shared → refinery}/admin/_search.html.erb +1 -1
- data/app/views/{shared → refinery}/admin/_sortable_list.html.erb +0 -0
- data/app/views/{shared → refinery}/admin/_tabbed_fields.html.erb +2 -2
- data/app/views/{admin → refinery/admin}/dialogs/show.html.erb +0 -0
- data/app/views/refinery/sitemap/index.xml.builder +25 -0
- data/app/views/{wymiframe.html.erb → refinery/wymiframe.html.erb} +2 -3
- data/config/initializers/will_paginate_monkeypatch.rb +21 -0
- data/config/locales/bg.yml +24 -29
- data/config/locales/cs.yml +20 -25
- data/config/locales/da.yml +19 -24
- data/config/locales/de.yml +19 -24
- data/config/locales/el.yml +19 -24
- data/config/locales/en.yml +25 -31
- data/config/locales/es.yml +12 -17
- data/config/locales/fi.yml +22 -27
- data/config/locales/fr.yml +19 -24
- data/config/locales/it.yml +19 -40
- data/config/locales/{jp.yml → ja.yml} +25 -28
- data/config/locales/ko.yml +76 -0
- data/config/locales/lt.yml +19 -24
- data/config/locales/lv.yml +21 -26
- data/config/locales/nb.yml +19 -24
- data/config/locales/nl.yml +19 -24
- data/config/locales/pl.yml +19 -24
- data/config/locales/pt-BR.yml +19 -24
- data/config/locales/rs.yml +19 -25
- data/config/locales/ru.yml +37 -38
- data/config/locales/sk.yml +19 -24
- data/config/locales/sl.yml +12 -21
- data/config/locales/sv.yml +19 -24
- data/config/locales/vi.yml +19 -24
- data/config/locales/zh-CN.yml +19 -24
- data/config/locales/zh-TW.yml +19 -24
- data/config/routes.rb +5 -10
- data/lib/generators/refinery/clash_keywords.yml +3 -0
- data/lib/generators/refinery/cms/cms_generator.rb +238 -0
- data/lib/generators/{templates → refinery/cms/templates}/.gitignore +3 -1
- data/lib/generators/refinery/cms/templates/app/decorators/controllers/refinery/.gitkeep +0 -0
- data/lib/generators/refinery/cms/templates/app/decorators/models/refinery/.gitkeep +0 -0
- data/lib/generators/{templates → refinery/cms/templates}/app/views/sitemap/index.xml.builder +1 -1
- data/lib/generators/{templates → refinery/cms/templates}/config/database.yml.mysql +5 -5
- data/lib/generators/{templates → refinery/cms/templates}/config/database.yml.postgresql +26 -25
- data/lib/generators/{templates → refinery/cms/templates}/config/database.yml.sqlite3 +1 -9
- data/lib/generators/refinery/cms/templates/config/initializers/devise.rb +229 -0
- data/lib/generators/refinery/core/core_generator.rb +9 -0
- data/lib/generators/refinery/core/templates/config/initializers/refinery/core.rb.erb +48 -0
- data/lib/generators/refinery/dummy/dummy_generator.rb +86 -0
- data/lib/generators/refinery/dummy/templates/rails/Rakefile +7 -0
- data/lib/generators/refinery/dummy/templates/rails/application.rb +14 -0
- data/lib/generators/refinery/dummy/templates/rails/boot.rb +6 -0
- data/lib/generators/refinery/dummy/templates/rails/database.yml +34 -0
- data/lib/generators/refinery/dummy/templates/rails/routes.rb +3 -0
- data/lib/generators/refinery/engine/USAGE +24 -0
- data/lib/generators/refinery/engine/engine_generator.rb +36 -0
- data/lib/generators/refinery/engine/templates/Gemfile +69 -0
- data/lib/generators/refinery/engine/templates/Guardfile +27 -0
- data/lib/generators/refinery/engine/templates/Rakefile +20 -0
- data/lib/generators/refinery/engine/templates/app/controllers/refinery/namespace/admin/plural_name_controller.rb +14 -0
- data/lib/generators/refinery/engine/templates/app/controllers/refinery/namespace/plural_name_controller.rb +34 -0
- data/lib/generators/refinery/engine/templates/app/models/refinery/namespace/singular_name.rb +28 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_actions.html.erb +25 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_form.html.erb +67 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_locale_picker.html.erb +11 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_plural_name.html.erb +2 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_records.html.erb +18 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_singular_name.html.erb +32 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_sortable_list.html.erb +5 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/edit.html.erb +1 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/index.html.erb +7 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/new.html.erb +1 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/plural_name/index.html.erb +11 -0
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/plural_name/show.html.erb +39 -0
- data/lib/generators/refinery/engine/templates/config/locales/en.yml +28 -0
- data/lib/generators/refinery/engine/templates/config/locales/es.yml +29 -0
- data/lib/generators/refinery/engine/templates/config/locales/fr.yml +28 -0
- data/lib/generators/refinery/engine/templates/config/locales/nb.yml +28 -0
- data/lib/generators/refinery/engine/templates/config/locales/nl.yml +28 -0
- data/lib/generators/refinery/engine/templates/config/routes.rb +19 -0
- data/lib/generators/refinery/engine/templates/db/migrate/1_create_namespace_plural_name.rb +39 -0
- data/lib/generators/refinery/engine/templates/db/seeds.rb +23 -0
- data/lib/generators/refinery/engine/templates/lib/generators/refinery/extension_plural_name_generator.rb +18 -0
- data/lib/generators/refinery/engine/templates/lib/refinery/plural_name/engine.rb +30 -0
- data/lib/generators/refinery/engine/templates/lib/refinery/plural_name.rb +21 -0
- data/lib/generators/refinery/engine/templates/lib/refinerycms-extension_plural_name.rb +1 -0
- data/lib/generators/refinery/engine/templates/lib/tasks/refinery/extension_plural_name.rake +13 -0
- data/lib/generators/refinery/engine/templates/readme.md +10 -0
- data/lib/generators/refinery/engine/templates/refinerycms-extension_plural_name.gemspec +18 -0
- data/lib/generators/refinery/engine/templates/spec/models/refinery/namespace/singular_name_spec.rb +20 -0
- data/lib/generators/refinery/engine/templates/spec/requests/refinery/namespace/admin/plural_name_spec.rb +200 -0
- data/lib/generators/refinery/engine/templates/spec/spec_helper.rb +50 -0
- data/lib/generators/refinery/engine/templates/spec/support/factories/refinery/plural_name.rb +7 -0
- data/lib/generators/refinery/engine/templates/tasks/rspec.rake +6 -0
- data/lib/generators/refinery/engine/templates/tasks/testing.rake +8 -0
- data/lib/generators/refinery/form/USAGE +20 -0
- data/lib/generators/refinery/form/form_generator.rb +31 -0
- data/lib/generators/refinery/form/templates/.gitkeep +0 -0
- data/lib/generators/refinery/form/templates/app/controllers/refinery/namespace/admin/plural_name_controller.rb +54 -0
- data/lib/generators/refinery/form/templates/app/controllers/refinery/namespace/admin/settings_controller.rb +51 -0
- data/lib/generators/refinery/form/templates/app/controllers/refinery/namespace/plural_name_controller.rb +53 -0
- data/lib/generators/refinery/form/templates/app/mailers/refinery/namespace/mailer.rb +22 -0
- data/lib/generators/refinery/form/templates/app/models/refinery/namespace/setting.rb +34 -0
- data/lib/generators/refinery/form/templates/app/models/refinery/namespace/singular_name.rb +46 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/_records.html.erb +23 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/_singular_name.html.erb +25 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/_submenu.html.erb +29 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/index.html.erb +4 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/show.html.erb +52 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/plural_name/spam.html.erb +26 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/settings/_confirmation_email_form.html.erb +51 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/settings/_notification_recipients_form.html.erb +21 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/settings/edit.html.erb +5 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/mailer/confirmation.html.erb +1 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/mailer/notification.html.erb +17 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/plural_name/new.html.erb +43 -0
- data/lib/generators/refinery/form/templates/app/views/refinery/namespace/plural_name/thank_you.html.erb +1 -0
- data/lib/generators/refinery/form/templates/config/locales/da.yml +69 -0
- data/lib/generators/refinery/form/templates/config/locales/de.yml +78 -0
- data/lib/generators/refinery/form/templates/config/locales/en.yml +78 -0
- data/lib/generators/refinery/form/templates/config/locales/es.yml +70 -0
- data/lib/generators/refinery/form/templates/config/locales/fr.yml +78 -0
- data/lib/generators/refinery/form/templates/config/locales/it.yml +68 -0
- data/lib/generators/refinery/form/templates/config/locales/lv.yml +77 -0
- data/lib/generators/refinery/form/templates/config/locales/nb.yml +78 -0
- data/lib/generators/refinery/form/templates/config/locales/nl.yml +77 -0
- data/lib/generators/refinery/form/templates/config/locales/pt-BR.yml +78 -0
- data/lib/generators/refinery/form/templates/config/locales/ru.yml +80 -0
- data/lib/generators/refinery/form/templates/config/locales/sl.yml +69 -0
- data/lib/generators/refinery/form/templates/config/locales/zh-CN.yml +4 -0
- data/lib/generators/refinery/form/templates/config/routes.rb +26 -0
- data/lib/generators/refinery/form/templates/db/migrate/1_create_plural_name.rb +42 -0
- data/lib/generators/refinery/form/templates/db/seeds.rb +27 -0
- data/lib/generators/refinery/form/templates/lib/generators/refinery/plural_name_generator.rb +20 -0
- data/lib/generators/refinery/form/templates/lib/refinery/plural_name/engine.rb +30 -0
- data/lib/generators/refinery/form/templates/lib/refinery/plural_name.rb +17 -0
- data/lib/generators/refinery/form/templates/lib/refinerycms-plural_name.rb +1 -0
- data/lib/generators/refinery/form/templates/refinerycms-plural_name.gemspec +19 -0
- data/lib/refinery/activity.rb +75 -18
- data/lib/refinery/admin/base_controller.rb +49 -66
- data/lib/refinery/application_controller.rb +59 -79
- data/lib/refinery/base_presenter.rb +25 -23
- data/lib/refinery/catch_all_routes.rb +1 -1
- data/lib/refinery/cli.rb +162 -0
- data/lib/refinery/core/configuration.rb +57 -0
- data/lib/refinery/core/engine.rb +143 -0
- data/lib/refinery/core.rb +179 -0
- data/lib/refinery/crud.rb +74 -54
- data/lib/refinery/engine.rb +56 -12
- data/lib/refinery/errors.rb +13 -0
- data/lib/refinery/ext/action_view/helpers/form_builder.rb +7 -0
- data/lib/refinery/ext/action_view/helpers/form_helper.rb +20 -0
- data/lib/refinery/ext/action_view/helpers/form_tag_helper.rb +10 -0
- data/lib/refinery/extension_generation.rb +258 -0
- data/lib/refinery/menu.rb +0 -19
- data/lib/refinery/menu_item.rb +32 -14
- data/lib/refinery/plugin.rb +19 -43
- data/lib/refinery/plugins.rb +2 -2
- data/lib/refinery/version.rb +16 -0
- data/lib/refinerycms-core.rb +1 -175
- data/lib/tasks/refinery.rake +2 -191
- data/lib/tasks/yard.rake +1 -1
- data/refinerycms-core.gemspec +23 -422
- data/spec/controllers/refinery/admin/refinery_core_controller_spec.rb +20 -0
- data/spec/controllers/{fast_controller_spec.rb → refinery/fast_controller_spec.rb} +3 -1
- data/spec/controllers/refinery/sitemap_controller_spec.rb +28 -0
- data/spec/helpers/refinery/custom_assets_helper_spec.rb +53 -0
- data/spec/helpers/refinery/html_truncation_helper_spec.rb +26 -0
- data/spec/helpers/refinery/pagination_helper_spec.rb +35 -0
- data/spec/helpers/refinery/tag_helper_spec.rb +23 -0
- data/spec/helpers/refinery/translation_helper_spec.rb +14 -0
- data/spec/lib/generators/refinery/cms/cms_generator_spec.rb +47 -0
- data/spec/lib/generators/refinery/core/core_generator_spec.rb +29 -0
- data/spec/lib/generators/refinery/engine/engine_generator_spec.rb +84 -0
- data/spec/lib/generators/refinery/engine/engine_generator_with_i18n_spec.rb +85 -0
- data/spec/lib/generators/refinery/engine/engine_generator_without_frontend_spec.rb +77 -0
- data/spec/lib/generators/refinery/form/form_generator_spec.rb +91 -0
- data/spec/lib/refinery/activity_spec.rb +38 -0
- data/spec/lib/refinery/application_controller_spec.rb +28 -0
- data/spec/lib/refinery/core_spec.rb +176 -0
- data/spec/lib/refinery/plugin_spec.rb +36 -34
- data/spec/lib/refinery/plugins_spec.rb +42 -16
- data/spec/requests/refinery/admin/custom_assets_spec.rb +32 -0
- data/spec/requests/refinery/admin/dialogs_spec.rb +28 -0
- data/spec/requests/refinery/search_spec.rb +71 -0
- data/spec/requests/refinery/site_bar_spec.rb +49 -0
- data/spec/support/background_selenium_firefox_driver.rb +14 -0
- data/spec/support/database_cleaner.rb +15 -0
- data/spec/support/fixtures/invalid_engine.rb +6 -0
- data/spec/support/fixtures/valid_engine.rb +13 -0
- data/spec/support/refinery.rb +14 -0
- metadata +626 -439
- data/app/controllers/admin/dialogs_controller.rb +0 -23
- data/app/controllers/admin/refinery_core_controller.rb +0 -12
- data/app/controllers/sitemap_controller.rb +0 -18
- data/app/views/admin/_head.html.erb +0 -21
- data/app/views/admin/_javascripts.html.erb +0 -33
- data/app/views/layouts/admin.html.erb +0 -24
- data/app/views/layouts/admin_dialog.html.erb +0 -14
- data/app/views/shared/_content_page.html.erb +0 -63
- data/app/views/shared/_footer.html.erb +0 -4
- data/app/views/shared/_head.html.erb +0 -20
- data/app/views/shared/_header.html.erb +0 -7
- data/app/views/shared/_menu.html.erb +0 -19
- data/app/views/shared/_menu_branch.html.erb +0 -19
- data/app/views/shared/_message.html.erb +0 -10
- data/app/views/shared/admin/_make_sortable.html.erb +0 -13
- data/app/views/welcome.html.erb +0 -17
- data/config/locales/lolcat.yml +0 -71
- data/doc/included-jquery-ui-packages.jpg +0 -0
- data/features/dialogs.feature +0 -20
- data/features/search.feature +0 -55
- data/features/site_bar.feature +0 -27
- data/features/step_definitions/core_steps.rb +0 -59
- data/features/support/paths.rb +0 -18
- data/features/uploads/beach.jpeg +0 -0
- data/features/uploads/refinery_is_awesome.txt +0 -1
- data/lib/gemspec.rb +0 -44
- data/lib/generators/refinerycms_generator.rb +0 -124
- data/lib/generators/templates/autotest/autotest.rb +0 -17
- data/lib/generators/templates/autotest/discover.rb +0 -2
- data/lib/generators/templates/config/initializers/devise.rb +0 -144
- data/lib/generators/templates/db/seeds.rb +0 -5
- data/lib/refinery/admin_base_controller.rb +0 -5
- data/lib/refinery/application.rb +0 -47
- data/lib/refinery/application_helper.rb +0 -19
- data/lib/refinery/configuration.rb +0 -29
- data/lib/refinery/helpers/form_helper.rb +0 -66
- data/lib/refinery/helpers/head_helper.rb +0 -17
- data/lib/refinery/helpers/html_truncation_helper.rb +0 -25
- data/lib/refinery/helpers/image_helper.rb +0 -42
- data/lib/refinery/helpers/menu_helper.rb +0 -98
- data/lib/refinery/helpers/meta_helper.rb +0 -78
- data/lib/refinery/helpers/pagination_helper.rb +0 -16
- data/lib/refinery/helpers/script_helper.rb +0 -36
- data/lib/refinery/helpers/site_bar_helper.rb +0 -32
- data/lib/refinery/helpers/tag_helper.rb +0 -22
- data/lib/refinery/helpers/translation_helper.rb +0 -17
- data/lib/tasks/doc.rake +0 -29
- data/public/javascripts/i18n-messages.js +0 -2
- data/public/javascripts/jquery-min.js +0 -16
- data/public/javascripts/jquery-ui-custom-min.js +0 -252
- data/public/javascripts/jquery.js +0 -8374
- data/public/javascripts/modernizr-min.js +0 -2
- data/public/javascripts/rails.js +0 -297
- data/public/javascripts/refinery/i18n.js +0 -340
- data/public/javascripts/refinery/nestedsortables.js +0 -164
- data/public/javascripts/refinery/serializelist.js +0 -66
- data/public/javascripts/wymeditor/jquery.refinery.wymeditor.js +0 -5262
- data/public/javascripts/wymeditor/lang/pt-BR.js +0 -47
- data/public/stylesheets/application.css +0 -4
- data/public/stylesheets/formatting.css +0 -4
- data/public/stylesheets/refinery/application.css +0 -76
- data/public/stylesheets/refinery/site_bar.css +0 -87
- data/public/stylesheets/refinery/submenu.css +0 -22
- data/public/stylesheets/refinery/tooltips.css +0 -34
- data/public/stylesheets/theme.css +0 -4
- data/spec/controllers/refinery_core_controller_spec.rb +0 -18
- data/spec/controllers/sitemap_controller_spec.rb +0 -27
@@ -1,2 +0,0 @@
|
|
1
|
-
// Modernizr v1.7 www.modernizr.com
|
2
|
-
window.Modernizr=function(a,b,c){function G(){e.input=function(a){for(var b=0,c=a.length;b<c;b++)t[a[b]]=!!(a[b]in l);return t}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)l.setAttribute("type",f=a[d]),e=l.type!=="text",e&&(l.value=m,l.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&l.style.WebkitAppearance!==c?(g.appendChild(l),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(l,null).WebkitAppearance!=="textfield"&&l.offsetHeight!==0,g.removeChild(l)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=l.checkValidity&&l.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(l),g.offsetWidth,e=l.value!=m,g.removeChild(l)):e=l.value!=m)),s[a[d]]=!!e;return s}("search tel url email datetime date month week time datetime-local number range color".split(" "))}function F(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1),d=(a+" "+p.join(c+" ")+c).split(" ");return!!E(d,b)}function E(a,b){for(var d in a)if(k[a[d]]!==c&&(!b||b(a[d],j)))return!0}function D(a,b){return(""+a).indexOf(b)!==-1}function C(a,b){return typeof a===b}function B(a,b){return A(o.join(a+";")+(b||""))}function A(a){k.cssText=a}var d="1.7",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l=b.createElement("input"),m=":)",n=Object.prototype.toString,o=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),p="Webkit Moz O ms Khtml".split(" "),q={svg:"http://www.w3.org/2000/svg"},r={},s={},t={},u=[],v,w=function(a){var c=b.createElement("style"),d=b.createElement("div"),e;c.textContent=a+"{#modernizr{height:3px}}",h.appendChild(c),d.id="modernizr",g.appendChild(d),e=d.offsetHeight===3,c.parentNode.removeChild(c),d.parentNode.removeChild(d);return!!e},x=function(){function d(d,e){e=e||b.createElement(a[d]||"div");var f=(d="on"+d)in e;f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=C(e[d],"function"),C(e[d],c)||(e[d]=c),e.removeAttribute(d))),e=null;return f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),y=({}).hasOwnProperty,z;C(y,c)||C(y.call,c)?z=function(a,b){return b in a&&C(a.constructor.prototype[b],c)}:z=function(a,b){return y.call(a,b)},r.flexbox=function(){function c(a,b,c,d){a.style.cssText=o.join(b+":"+c+";")+(d||"")}function a(a,b,c,d){b+=":",a.style.cssText=(b+o.join(c+";"+b)).slice(0,-b.length)+(d||"")}var d=b.createElement("div"),e=b.createElement("div");a(d,"display","box","width:42px;padding:0;"),c(e,"box-flex","1","width:10px;"),d.appendChild(e),g.appendChild(d);var f=e.offsetWidth===42;d.removeChild(e),g.removeChild(d);return f},r.canvas=function(){var a=b.createElement("canvas");return a.getContext&&a.getContext("2d")},r.canvastext=function(){return e.canvas&&C(b.createElement("canvas").getContext("2d").fillText,"function")},r.webgl=function(){return!!a.WebGLRenderingContext},r.touch=function(){return"ontouchstart"in a||w("@media ("+o.join("touch-enabled),(")+"modernizr)")},r.geolocation=function(){return!!navigator.geolocation},r.postmessage=function(){return!!a.postMessage},r.websqldatabase=function(){var b=!!a.openDatabase;return b},r.indexedDB=function(){for(var b=-1,c=p.length;++b<c;){var d=p[b].toLowerCase();if(a[d+"_indexedDB"]||a[d+"IndexedDB"])return!0}return!1},r.hashchange=function(){return x("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},r.history=function(){return !!(a.history&&history.pushState)},r.draganddrop=function(){return x("dragstart")&&x("drop")},r.websockets=function(){return"WebSocket"in a},r.rgba=function(){A("background-color:rgba(150,255,150,.5)");return D(k.backgroundColor,"rgba")},r.hsla=function(){A("background-color:hsla(120,40%,100%,.5)");return D(k.backgroundColor,"rgba")||D(k.backgroundColor,"hsla")},r.multiplebgs=function(){A("background:url(//:),url(//:),red url(//:)");return(new RegExp("(url\\s*\\(.*?){3}")).test(k.background)},r.backgroundsize=function(){return F("backgroundSize")},r.borderimage=function(){return F("borderImage")},r.borderradius=function(){return F("borderRadius","",function(a){return D(a,"orderRadius")})},r.boxshadow=function(){return F("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){B("opacity:.55");return/^0.55$/.test(k.opacity)},r.cssanimations=function(){return F("animationName")},r.csscolumns=function(){return F("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";A((a+o.join(b+a)+o.join(c+a)).slice(0,-a.length));return D(k.backgroundImage,"gradient")},r.cssreflections=function(){return F("boxReflect")},r.csstransforms=function(){return!!E(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},r.csstransforms3d=function(){var a=!!E(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=w("@media ("+o.join("transform-3d),(")+"modernizr)"));return a},r.csstransitions=function(){return F("transitionProperty")},r.fontface=function(){var a,c,d=h||g,e=b.createElement("style"),f=b.implementation||{hasFeature:function(){return!1}};e.type="text/css",d.insertBefore(e,d.firstChild),a=e.sheet||e.styleSheet;var i=f.hasFeature("CSS2","")?function(b){if(!a||!b)return!1;var c=!1;try{a.insertRule(b,0),c=/src/i.test(a.cssRules[0].cssText),a.deleteRule(a.cssRules.length-1)}catch(d){}return c}:function(b){if(!a||!b)return!1;a.cssText=b;return a.cssText.length!==0&&/src/i.test(a.cssText)&&a.cssText.replace(/\r+|\n+/g,"").indexOf(b.split(" ")[0])===0};c=i('@font-face { font-family: "font"; src: url(data:,); }'),d.removeChild(e);return c},r.video=function(){var a=b.createElement("video"),c=!!a.canPlayType;if(c){c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"');var d='video/mp4; codecs="avc1.42E01E';c.h264=a.canPlayType(d+'"')||a.canPlayType(d+', mp4a.40.2"'),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return c},r.audio=function(){var a=b.createElement("audio"),c=!!a.canPlayType;c&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"'),c.mp3=a.canPlayType("audio/mpeg;"),c.wav=a.canPlayType('audio/wav; codecs="1"'),c.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;"));return c},r.localstorage=function(){try{return!!localStorage.getItem}catch(a){return!1}},r.sessionstorage=function(){try{return!!sessionStorage.getItem}catch(a){return!1}},r.webWorkers=function(){return!!a.Worker},r.applicationcache=function(){return!!a.applicationCache},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");a.innerHTML="<svg/>";return(a.firstChild&&a.firstChild.namespaceURI)==q.svg},r.smil=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"animate")))},r.svgclippaths=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"clipPath")))};for(var H in r)z(r,H)&&(v=H.toLowerCase(),e[v]=r[H](),u.push((e[v]?"":"no-")+v));e.input||G(),e.crosswindowmessaging=e.postmessage,e.historymanagement=e.history,e.addTest=function(a,b){a=a.toLowerCase();if(!e[a]){b=!!b(),g.className+=" "+(b?"":"no-")+a,e[a]=b;return e}},A(""),j=l=null,f&&a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function p(a,b){var c=-1,d=a.length,e,f=[];while(++c<d)e=a[c],(b=e.media||b)!="screen"&&f.push(p(e.imports,b),e.cssText);return f.join("")}function o(a){var b=-1;while(++b<e)a.createElement(d[b])}var c="abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",d=c.split("|"),e=d.length,f=new RegExp("(^|\\s)("+c+")","gi"),g=new RegExp("<(/*)("+c+")","gi"),h=new RegExp("(^|[^\\n]*?\\s)("+c+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),i=b.createDocumentFragment(),j=b.documentElement,k=j.firstChild,l=b.createElement("body"),m=b.createElement("style"),n;o(b),o(i),k.insertBefore(m,k.firstChild),m.media="print",a.attachEvent("onbeforeprint",function(){var a=-1,c=p(b.styleSheets,"all"),k=[],o;n=n||b.body;while((o=h.exec(c))!=null)k.push((o[1]+o[2]+o[3]).replace(f,"$1.iepp_$2")+o[4]);m.styleSheet.cssText=k.join("\n");while(++a<e){var q=b.getElementsByTagName(d[a]),r=q.length,s=-1;while(++s<r)q[s].className.indexOf("iepp_")<0&&(q[s].className+=" iepp_"+d[a])}i.appendChild(n),j.appendChild(l),l.className=n.className,l.innerHTML=n.innerHTML.replace(g,"<$1font")}),a.attachEvent("onafterprint",function(){l.innerHTML="",j.removeChild(l),j.appendChild(n),m.styleSheet.cssText=""})}(a,b),e._enableHTML5=f,e._version=d,g.className=g.className.replace(/\bno-js\b/,"")+" js "+u.join(" ");return e}(this,this.document)
|
data/public/javascripts/rails.js
DELETED
@@ -1,297 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
Taken from http://github.com/rails/jquery-ujs
|
3
|
-
At version http://github.com/rails/jquery-ujs/blob/900d714300b284d7480e1e3f09fbecf8f0e23b27/src/rails.js
|
4
|
-
(Because that was the current master version)
|
5
|
-
*/
|
6
|
-
|
7
|
-
/**
|
8
|
-
* Unobtrusive scripting adapter for jQuery
|
9
|
-
*
|
10
|
-
* Requires jQuery 1.4.3 or later.
|
11
|
-
* https://github.com/rails/jquery-ujs
|
12
|
-
|
13
|
-
* Uploading file using rails.js
|
14
|
-
* =============================
|
15
|
-
*
|
16
|
-
* By default, browsers do not allow files to be uploaded via AJAX. As a result, if there are any non-blank file fields
|
17
|
-
* in the remote form, this adapter aborts the AJAX submission and allows the form to submit through standard means.
|
18
|
-
*
|
19
|
-
* The `ajax:aborted:file` event allows you to bind your own handler to process the form submission however you wish.
|
20
|
-
*
|
21
|
-
* Ex:
|
22
|
-
* $('form').live('ajax:aborted:file', function(event, elements){
|
23
|
-
* // Implement own remote file-transfer handler here for non-blank file inputs passed in `elements`.
|
24
|
-
* // Returning false in this handler tells rails.js to disallow standard form submission
|
25
|
-
* return false;
|
26
|
-
* });
|
27
|
-
*
|
28
|
-
* The `ajax:aborted:file` event is fired when a file-type input is detected with a non-blank value.
|
29
|
-
*
|
30
|
-
* Third-party tools can use this hook to detect when an AJAX file upload is attempted, and then use
|
31
|
-
* techniques like the iframe method to upload the file instead.
|
32
|
-
*
|
33
|
-
* Required fields in rails.js
|
34
|
-
* ===========================
|
35
|
-
*
|
36
|
-
* If any blank required inputs (required="required") are detected in the remote form, the whole form submission
|
37
|
-
* is canceled. Note that this is unlike file inputs, which still allow standard (non-AJAX) form submission.
|
38
|
-
*
|
39
|
-
* The `ajax:aborted:required` event allows you to bind your own handler to inform the user of blank required inputs.
|
40
|
-
*
|
41
|
-
* !! Note that Opera does not fire the form's submit event if there are blank required inputs, so this event may never
|
42
|
-
* get fired in Opera. This event is what causes other browsers to exhibit the same submit-aborting behavior.
|
43
|
-
*
|
44
|
-
* Ex:
|
45
|
-
* $('form').live('ajax:aborted:required', function(event, elements){
|
46
|
-
* // Returning false in this handler tells rails.js to submit the form anyway.
|
47
|
-
* // The blank required inputs are passed to this function in `elements`.
|
48
|
-
* return ! confirm("Would you like to submit the form with missing info?");
|
49
|
-
* });
|
50
|
-
*/
|
51
|
-
|
52
|
-
(function($) {
|
53
|
-
|
54
|
-
// Shorthand to make it a little easier to call public rails functions from within rails.js
|
55
|
-
var rails;
|
56
|
-
|
57
|
-
$.rails = rails = {
|
58
|
-
|
59
|
-
// Link elements bound by jquery-ujs
|
60
|
-
linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]',
|
61
|
-
|
62
|
-
// Form elements bound by jquery-ujs
|
63
|
-
formSubmitSelector: 'form',
|
64
|
-
|
65
|
-
// Form input elements bound by jquery-ujs
|
66
|
-
formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type])',
|
67
|
-
|
68
|
-
// Form input elements disabled during form submission
|
69
|
-
disableSelector: 'input[data-disable-with], button[data-disable-with], textarea[data-disable-with]',
|
70
|
-
|
71
|
-
// Form input elements re-enabled after form submission
|
72
|
-
enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled',
|
73
|
-
|
74
|
-
// Form required input elements
|
75
|
-
requiredInputSelector: 'input[name][required],textarea[name][required]',
|
76
|
-
|
77
|
-
// Form file input elements
|
78
|
-
fileInputSelector: 'input:file',
|
79
|
-
|
80
|
-
// Make sure that every Ajax request sends the CSRF token
|
81
|
-
CSRFProtection: function(xhr) {
|
82
|
-
var token = $('meta[name="csrf-token"]').attr('content');
|
83
|
-
if (token) xhr.setRequestHeader('X-CSRF-Token', token);
|
84
|
-
},
|
85
|
-
|
86
|
-
// Triggers an event on an element and returns false if the event result is false
|
87
|
-
fire: function(obj, name, data) {
|
88
|
-
var event = $.Event(name);
|
89
|
-
obj.trigger(event, data);
|
90
|
-
return event.result !== false;
|
91
|
-
},
|
92
|
-
|
93
|
-
// Submits "remote" forms and links with ajax
|
94
|
-
handleRemote: function(element) {
|
95
|
-
var method, url, data,
|
96
|
-
dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);
|
97
|
-
|
98
|
-
if (rails.fire(element, 'ajax:before')) {
|
99
|
-
|
100
|
-
if (element.is('form')) {
|
101
|
-
method = element.attr('method');
|
102
|
-
url = element.attr('action');
|
103
|
-
data = element.serializeArray();
|
104
|
-
// memoized value from clicked submit button
|
105
|
-
var button = element.data('ujs:submit-button');
|
106
|
-
if (button) {
|
107
|
-
data.push(button);
|
108
|
-
element.data('ujs:submit-button', null);
|
109
|
-
}
|
110
|
-
} else {
|
111
|
-
method = element.data('method');
|
112
|
-
url = element.attr('href');
|
113
|
-
data = null;
|
114
|
-
}
|
115
|
-
|
116
|
-
$.ajax({
|
117
|
-
url: url, type: method || 'GET', data: data, dataType: dataType,
|
118
|
-
// stopping the "ajax:beforeSend" event will cancel the ajax request
|
119
|
-
beforeSend: function(xhr, settings) {
|
120
|
-
if (settings.dataType === undefined) {
|
121
|
-
xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
|
122
|
-
}
|
123
|
-
return rails.fire(element, 'ajax:beforeSend', [xhr, settings]);
|
124
|
-
},
|
125
|
-
success: function(data, status, xhr) {
|
126
|
-
element.trigger('ajax:success', [data, status, xhr]);
|
127
|
-
},
|
128
|
-
complete: function(xhr, status) {
|
129
|
-
element.trigger('ajax:complete', [xhr, status]);
|
130
|
-
},
|
131
|
-
error: function(xhr, status, error) {
|
132
|
-
element.trigger('ajax:error', [xhr, status, error]);
|
133
|
-
}
|
134
|
-
});
|
135
|
-
}
|
136
|
-
},
|
137
|
-
|
138
|
-
// Handles "data-method" on links such as:
|
139
|
-
// <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a>
|
140
|
-
handleMethod: function(link) {
|
141
|
-
var href = link.attr('href'),
|
142
|
-
method = link.data('method'),
|
143
|
-
csrf_token = $('meta[name=csrf-token]').attr('content'),
|
144
|
-
csrf_param = $('meta[name=csrf-param]').attr('content'),
|
145
|
-
form = $('<form method="post" action="' + href + '"></form>'),
|
146
|
-
metadata_input = '<input name="_method" value="' + method + '" type="hidden" />';
|
147
|
-
|
148
|
-
if (csrf_param !== undefined && csrf_token !== undefined) {
|
149
|
-
metadata_input += '<input name="' + csrf_param + '" value="' + csrf_token + '" type="hidden" />';
|
150
|
-
}
|
151
|
-
|
152
|
-
form.hide().append(metadata_input).appendTo('body');
|
153
|
-
form.submit();
|
154
|
-
},
|
155
|
-
|
156
|
-
/* Disables form elements:
|
157
|
-
- Caches element value in 'ujs:enable-with' data store
|
158
|
-
- Replaces element text with value of 'data-disable-with' attribute
|
159
|
-
- Adds disabled=disabled attribute
|
160
|
-
*/
|
161
|
-
disableFormElements: function(form) {
|
162
|
-
form.find(rails.disableSelector).each(function() {
|
163
|
-
var element = $(this), method = element.is('button') ? 'html' : 'val';
|
164
|
-
element.data('ujs:enable-with', element[method]());
|
165
|
-
element[method](element.data('disable-with'));
|
166
|
-
element.attr('disabled', 'disabled');
|
167
|
-
});
|
168
|
-
},
|
169
|
-
|
170
|
-
/* Re-enables disabled form elements:
|
171
|
-
- Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)
|
172
|
-
- Removes disabled attribute
|
173
|
-
*/
|
174
|
-
enableFormElements: function(form) {
|
175
|
-
form.find(rails.enableSelector).each(function() {
|
176
|
-
var element = $(this), method = element.is('button') ? 'html' : 'val';
|
177
|
-
if (element.data('ujs:enable-with')) element[method](element.data('ujs:enable-with'));
|
178
|
-
element.removeAttr('disabled');
|
179
|
-
});
|
180
|
-
},
|
181
|
-
|
182
|
-
// If message provided in 'data-confirm' attribute, fires `confirm` event and returns result of confirm dialog.
|
183
|
-
// Attaching a handler to the element's `confirm` event that returns false cancels the confirm dialog.
|
184
|
-
allowAction: function(element) {
|
185
|
-
var message = element.data('confirm');
|
186
|
-
return !message || (rails.fire(element, 'confirm') && confirm(message));
|
187
|
-
},
|
188
|
-
|
189
|
-
// Helper function which checks for blank inputs in a form that match the specified CSS selector
|
190
|
-
blankInputs: function(form, specifiedSelector, nonBlank) {
|
191
|
-
var inputs = $(), input,
|
192
|
-
selector = specifiedSelector || 'input,textarea';
|
193
|
-
form.find(selector).each(function() {
|
194
|
-
input = $(this);
|
195
|
-
// Collect non-blank inputs if nonBlank option is true, otherwise, collect blank inputs
|
196
|
-
if (nonBlank ? input.val() : !input.val()) {
|
197
|
-
inputs = inputs.add(input);
|
198
|
-
}
|
199
|
-
});
|
200
|
-
return inputs.length ? inputs : false;
|
201
|
-
},
|
202
|
-
|
203
|
-
// Helper function which checks for non-blank inputs in a form that match the specified CSS selector
|
204
|
-
nonBlankInputs: function(form, specifiedSelector) {
|
205
|
-
return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank
|
206
|
-
},
|
207
|
-
|
208
|
-
// Helper function, needed to provide consistent behavior in IE
|
209
|
-
stopEverything: function(e) {
|
210
|
-
e.stopImmediatePropagation();
|
211
|
-
return false;
|
212
|
-
},
|
213
|
-
|
214
|
-
// find all the submit events directly bound to the form and
|
215
|
-
// manually invoke them. If anyone returns false then stop the loop
|
216
|
-
callFormSubmitBindings: function(form) {
|
217
|
-
var events = form.data('events'), continuePropagation = true;
|
218
|
-
if (events !== undefined && events['submit'] !== undefined) {
|
219
|
-
$.each(events['submit'], function(i, obj){
|
220
|
-
if (typeof obj.handler === 'function') return continuePropagation = obj.handler(obj.data);
|
221
|
-
});
|
222
|
-
}
|
223
|
-
return continuePropagation;
|
224
|
-
}
|
225
|
-
};
|
226
|
-
|
227
|
-
// ajaxPrefilter is a jQuery 1.5 feature
|
228
|
-
if ('ajaxPrefilter' in $) {
|
229
|
-
$.ajaxPrefilter(function(options, originalOptions, xhr){ rails.CSRFProtection(xhr); });
|
230
|
-
} else {
|
231
|
-
$(document).ajaxSend(function(e, xhr){ rails.CSRFProtection(xhr); });
|
232
|
-
}
|
233
|
-
|
234
|
-
$(rails.linkClickSelector).live('click.rails', function(e) {
|
235
|
-
var link = $(this);
|
236
|
-
if (!rails.allowAction(link)) return rails.stopEverything(e);
|
237
|
-
|
238
|
-
if (link.data('remote') !== undefined) {
|
239
|
-
rails.handleRemote(link);
|
240
|
-
return false;
|
241
|
-
} else if (link.data('method')) {
|
242
|
-
rails.handleMethod(link);
|
243
|
-
return false;
|
244
|
-
}
|
245
|
-
});
|
246
|
-
|
247
|
-
$(rails.formSubmitSelector).live('submit.rails', function(e) {
|
248
|
-
var form = $(this),
|
249
|
-
remote = form.data('remote') !== undefined,
|
250
|
-
blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector),
|
251
|
-
nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);
|
252
|
-
|
253
|
-
if (!rails.allowAction(form)) return rails.stopEverything(e);
|
254
|
-
|
255
|
-
// skip other logic when required values are missing or file upload is present
|
256
|
-
if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {
|
257
|
-
return !remote;
|
258
|
-
}
|
259
|
-
|
260
|
-
if (remote) {
|
261
|
-
if (nonBlankFileInputs) {
|
262
|
-
return rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);
|
263
|
-
}
|
264
|
-
|
265
|
-
// If browser does not support submit bubbling, then this live-binding will be called before direct
|
266
|
-
// bindings. Therefore, we should directly call any direct bindings before remotely submitting form.
|
267
|
-
if (!$.support.submitBubbles && rails.callFormSubmitBindings(form) === false) return rails.stopEverything(e);
|
268
|
-
|
269
|
-
rails.handleRemote(form);
|
270
|
-
return false;
|
271
|
-
} else {
|
272
|
-
// slight timeout so that the submit button gets properly serialized
|
273
|
-
setTimeout(function(){ rails.disableFormElements(form); }, 13);
|
274
|
-
}
|
275
|
-
});
|
276
|
-
|
277
|
-
$(rails.formInputClickSelector).live('click.rails', function(event) {
|
278
|
-
var button = $(this);
|
279
|
-
|
280
|
-
if (!rails.allowAction(button)) return rails.stopEverything(event);
|
281
|
-
|
282
|
-
// register the pressed submit button
|
283
|
-
var name = button.attr('name'),
|
284
|
-
data = name ? {name:name, value:button.val()} : null;
|
285
|
-
|
286
|
-
button.closest('form').data('ujs:submit-button', data);
|
287
|
-
});
|
288
|
-
|
289
|
-
$(rails.formSubmitSelector).live('ajax:beforeSend.rails', function(event) {
|
290
|
-
if (this == event.target) rails.disableFormElements($(this));
|
291
|
-
});
|
292
|
-
|
293
|
-
$(rails.formSubmitSelector).live('ajax:complete.rails', function(event) {
|
294
|
-
if (this == event.target) rails.enableFormElements($(this));
|
295
|
-
});
|
296
|
-
|
297
|
-
})( jQuery );
|
@@ -1,340 +0,0 @@
|
|
1
|
-
// Instantiate the object
|
2
|
-
var I18n = I18n || {};
|
3
|
-
|
4
|
-
// Set default locale to english
|
5
|
-
I18n.defaultLocale = "en";
|
6
|
-
|
7
|
-
// Set current locale to null
|
8
|
-
I18n.locale = I18n.locale || null;
|
9
|
-
|
10
|
-
I18n.lookup = function(scope, options) {
|
11
|
-
var translations = this.prepareOptions(I18n.translations);
|
12
|
-
var messages = translations[I18n.currentLocale()];
|
13
|
-
options = this.prepareOptions(options);
|
14
|
-
|
15
|
-
if (!messages) {
|
16
|
-
return;
|
17
|
-
}
|
18
|
-
|
19
|
-
if (typeof(scope) == "object") {
|
20
|
-
scope = scope.join(".");
|
21
|
-
}
|
22
|
-
|
23
|
-
if (options.scope) {
|
24
|
-
scope = options.scope.toString() + "." + scope;
|
25
|
-
}
|
26
|
-
|
27
|
-
scope = scope.split(".");
|
28
|
-
|
29
|
-
while (scope.length > 0) {
|
30
|
-
var currentScope = scope.shift();
|
31
|
-
messages = messages[currentScope];
|
32
|
-
|
33
|
-
if (!messages) {
|
34
|
-
break;
|
35
|
-
}
|
36
|
-
}
|
37
|
-
|
38
|
-
if (!messages && options.defaultValue != null && options.defaultValue != undefined) {
|
39
|
-
messages = options.defaultValue;
|
40
|
-
}
|
41
|
-
|
42
|
-
return messages;
|
43
|
-
};
|
44
|
-
|
45
|
-
// Merge serveral hash options, checking if value is set before
|
46
|
-
// overwriting any value. The precedence is from left to right.
|
47
|
-
//
|
48
|
-
// I18n.prepareOptions({name: "John Doe"}, {name: "Mary Doe", role: "user"});
|
49
|
-
// #=> {name: "John Doe", role: "user"}
|
50
|
-
//
|
51
|
-
I18n.prepareOptions = function() {
|
52
|
-
var options = {};
|
53
|
-
var opts;
|
54
|
-
var count = arguments.length;
|
55
|
-
|
56
|
-
for (var i = 0; i < count; i++) {
|
57
|
-
opts = arguments[i];
|
58
|
-
|
59
|
-
if (!opts) {
|
60
|
-
continue;
|
61
|
-
}
|
62
|
-
|
63
|
-
for (var key in opts) {
|
64
|
-
if (options[key] == undefined || options[key] == null) {
|
65
|
-
options[key] = opts[key];
|
66
|
-
}
|
67
|
-
}
|
68
|
-
}
|
69
|
-
|
70
|
-
return options;
|
71
|
-
};
|
72
|
-
|
73
|
-
I18n.interpolate = function(message, options) {
|
74
|
-
options = options || {};
|
75
|
-
var regex = /\{\{(.*?)\}\}/gm;
|
76
|
-
|
77
|
-
var matches = message.match(regex);
|
78
|
-
|
79
|
-
if (!matches) {
|
80
|
-
return message;
|
81
|
-
}
|
82
|
-
|
83
|
-
var placeholder, value, name;
|
84
|
-
|
85
|
-
for (var i = 0; placeholder = matches[i]; i++) {
|
86
|
-
name = placeholder.replace(/\{\{(.*?)\}\}/gm, "$1");
|
87
|
-
|
88
|
-
value = options[name];
|
89
|
-
|
90
|
-
if (options[name] == null || options[name] == undefined) {
|
91
|
-
value = "[missing " + placeholder + " value]";
|
92
|
-
}
|
93
|
-
|
94
|
-
regex = new RegExp(placeholder.replace(/\{/gm, "\\{").replace(/\}/gm, "\\}"));
|
95
|
-
|
96
|
-
message = message.replace(regex, value);
|
97
|
-
}
|
98
|
-
|
99
|
-
return message;
|
100
|
-
};
|
101
|
-
|
102
|
-
I18n.translate = function(scope, options) {
|
103
|
-
options = this.prepareOptions(options);
|
104
|
-
var translation = this.lookup(scope, options);
|
105
|
-
|
106
|
-
try {
|
107
|
-
if (typeof(translation) == "object") {
|
108
|
-
if (typeof(options.count) == "number") {
|
109
|
-
return this.pluralize(options.count, scope, options);
|
110
|
-
} else {
|
111
|
-
return translation;
|
112
|
-
}
|
113
|
-
} else {
|
114
|
-
return this.interpolate(translation, options);
|
115
|
-
}
|
116
|
-
} catch(err) {
|
117
|
-
return this.missingTranslation(scope);
|
118
|
-
}
|
119
|
-
};
|
120
|
-
|
121
|
-
I18n.localize = function(scope, value) {
|
122
|
-
switch (scope) {
|
123
|
-
case "currency":
|
124
|
-
return this.toCurrency(value);
|
125
|
-
case "number":
|
126
|
-
scope = this.lookup("number.format");
|
127
|
-
return this.toNumber(value, scope);
|
128
|
-
default:
|
129
|
-
if (scope.match(/^(date|time)/)) {
|
130
|
-
return this.toTime(scope, value);
|
131
|
-
} else {
|
132
|
-
return value.toString();
|
133
|
-
}
|
134
|
-
}
|
135
|
-
};
|
136
|
-
|
137
|
-
I18n.parseDate = function(d) {
|
138
|
-
var matches, date;
|
139
|
-
var year, month, day, hour, min, sec = null;
|
140
|
-
|
141
|
-
if (matches = d.toString().match(/(\d{4})-(\d{2})-(\d{2})(?:[ |T](\d{2}):(\d{2}):(\d{2}))?(Z)?/)) {
|
142
|
-
// date/time strings: yyyy-mm-dd hh:mm:ss or yyyy-mm-dd or yyyy-mm-ddThh:mm:ssZ
|
143
|
-
for (var i = 1; i <= 6; i++) {
|
144
|
-
matches[i] = matches[i] == undefined? 0 : parseInt(matches[i], 10);
|
145
|
-
}
|
146
|
-
|
147
|
-
// month starts on 0
|
148
|
-
matches[2] = matches[2] - 1;
|
149
|
-
|
150
|
-
if (matches[7]) {
|
151
|
-
date = new Date(Date.UTC(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6]));
|
152
|
-
} else if (!isNaN(matches[4])) {
|
153
|
-
date = new Date(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6]);
|
154
|
-
} else {
|
155
|
-
date = new Date(matches[1], matches[2], matches[3]);
|
156
|
-
}
|
157
|
-
} else if (typeof(d) == "number") {
|
158
|
-
// UNIX timestamp
|
159
|
-
date = new Date();
|
160
|
-
date.setTime(d);
|
161
|
-
} else {
|
162
|
-
// an arbitrary javascript string
|
163
|
-
date = new Date();
|
164
|
-
date.setTime(Date.parse(d));
|
165
|
-
}
|
166
|
-
|
167
|
-
return date;
|
168
|
-
};
|
169
|
-
|
170
|
-
I18n.toTime = function(scope, d) {
|
171
|
-
var date = this.parseDate(d);
|
172
|
-
var format = this.lookup(scope);
|
173
|
-
|
174
|
-
if (date.toString().match(/invalid/i)) {
|
175
|
-
return date.toString();
|
176
|
-
}
|
177
|
-
|
178
|
-
if (!format) {
|
179
|
-
return date.toString();
|
180
|
-
}
|
181
|
-
|
182
|
-
return this.strftime(date, format);
|
183
|
-
};
|
184
|
-
|
185
|
-
I18n.strftime = function(date, format) {
|
186
|
-
var options = this.lookup("date");
|
187
|
-
|
188
|
-
if (!options) {
|
189
|
-
return date.toString();
|
190
|
-
}
|
191
|
-
|
192
|
-
var weekDay = date.getDay();
|
193
|
-
var day = date.getDate();
|
194
|
-
var year = date.getFullYear();
|
195
|
-
var month = date.getMonth() + 1;
|
196
|
-
var hour = date.getHours();
|
197
|
-
var hour12 = hour;
|
198
|
-
var meridian = hour > 12? "PM" : "AM";
|
199
|
-
var secs = date.getSeconds();
|
200
|
-
var mins = date.getMinutes();
|
201
|
-
var offset = date.getTimezoneOffset();
|
202
|
-
var absOffsetHours = Math.floor(Math.abs(offset / 60));
|
203
|
-
var absOffsetMinutes = Math.abs(offset) - (absOffsetHours * 60);
|
204
|
-
var timezoneoffset = (offset > 0 ? "-" : "+") + (absOffsetHours.toString().length < 2 ? '0' + absOffsetHours : absOffsetHours) + (absOffsetMinutes.toString().length < 2 ? '0' + absOffsetMinutes : absOffsetMinutes);
|
205
|
-
|
206
|
-
if (hour12 > 12) {
|
207
|
-
hour12 = hour12 - 12;
|
208
|
-
}
|
209
|
-
|
210
|
-
var padding = function(n) {
|
211
|
-
var s = "0" + n.toString();
|
212
|
-
return s.substr(s.length - 2);
|
213
|
-
};
|
214
|
-
|
215
|
-
var f = format;
|
216
|
-
f = f.replace("%a", options["abbr_day_names"][weekDay]);
|
217
|
-
f = f.replace("%A", options["day_names"][weekDay]);
|
218
|
-
f = f.replace("%b", options["abbr_month_names"][month]);
|
219
|
-
f = f.replace("%B", options["month_names"][month]);
|
220
|
-
f = f.replace("%d", padding(day));
|
221
|
-
f = f.replace("%-d", day);
|
222
|
-
f = f.replace("%H", padding(hour));
|
223
|
-
f = f.replace("%-H", hour);
|
224
|
-
f = f.replace("%I", padding(hour12));
|
225
|
-
f = f.replace("%-I", hour12);
|
226
|
-
f = f.replace("%m", padding(month));
|
227
|
-
f = f.replace("%-m", month);
|
228
|
-
f = f.replace("%M", padding(mins));
|
229
|
-
f = f.replace("%-M", mins);
|
230
|
-
f = f.replace("%p", meridian);
|
231
|
-
f = f.replace("%S", padding(secs));
|
232
|
-
f = f.replace("%-S", secs);
|
233
|
-
f = f.replace("%w", weekDay);
|
234
|
-
f = f.replace("%y", padding(year));
|
235
|
-
f = f.replace("%-y", padding(year).replace(/^0+/, ""));
|
236
|
-
f = f.replace("%Y", year);
|
237
|
-
f = f.replace("%z", timezoneoffset);
|
238
|
-
|
239
|
-
return f;
|
240
|
-
};
|
241
|
-
|
242
|
-
I18n.toNumber = function(number, options) {
|
243
|
-
options = this.prepareOptions(
|
244
|
-
options,
|
245
|
-
this.lookup("number.format"),
|
246
|
-
{precision: 3, separator: '.', delimiter: ','}
|
247
|
-
);
|
248
|
-
|
249
|
-
var string = number.toFixed(options["precision"]).toString();
|
250
|
-
var parts = string.split(".");
|
251
|
-
|
252
|
-
number = parts[0];
|
253
|
-
var precision = parts[1];
|
254
|
-
|
255
|
-
var n = [];
|
256
|
-
|
257
|
-
while (number.length > 0) {
|
258
|
-
n.unshift(number.substr(Math.max(0, number.length - 3), 3));
|
259
|
-
number = number.substr(0, number.length -3);
|
260
|
-
}
|
261
|
-
|
262
|
-
var formattedNumber = n.join(options["delimiter"]);
|
263
|
-
|
264
|
-
if (options["precision"] > 0) {
|
265
|
-
formattedNumber += options["separator"] + parts[1];
|
266
|
-
}
|
267
|
-
|
268
|
-
return formattedNumber;
|
269
|
-
};
|
270
|
-
|
271
|
-
I18n.toCurrency = function(number, options) {
|
272
|
-
options = this.prepareOptions(
|
273
|
-
options,
|
274
|
-
this.lookup("number.currency.format"),
|
275
|
-
this.lookup("number.format"),
|
276
|
-
{ unit: "$", precision: 2, format: "%u%n", delimiter: ",", separator: "." }
|
277
|
-
);
|
278
|
-
|
279
|
-
number = this.toNumber(number, options);
|
280
|
-
number = options["format"]
|
281
|
-
.replace("%u", options["unit"])
|
282
|
-
.replace("%n", number);
|
283
|
-
|
284
|
-
return number;
|
285
|
-
};
|
286
|
-
|
287
|
-
I18n.toPercentage = function(number, options) {
|
288
|
-
options = this.prepareOptions(
|
289
|
-
options,
|
290
|
-
this.lookup("number.percentage.format"),
|
291
|
-
this.lookup("number.format"),
|
292
|
-
{ precision: 3, separator: ".", delimiter: "" }
|
293
|
-
);
|
294
|
-
|
295
|
-
number = this.toNumber(number, options);
|
296
|
-
return number + "%";
|
297
|
-
};
|
298
|
-
|
299
|
-
I18n.pluralize = function(count, scope, options) {
|
300
|
-
var translation = this.lookup(scope, options);
|
301
|
-
|
302
|
-
var message;
|
303
|
-
options = options || {};
|
304
|
-
options["count"] = count.toString();
|
305
|
-
|
306
|
-
switch(Math.abs(count)) {
|
307
|
-
case 0:
|
308
|
-
message = translation["zero"] || translation["none"] || translation["other"] || this.missingTranslation(scope, "zero");
|
309
|
-
break;
|
310
|
-
case 1:
|
311
|
-
message = translation["one"] || this.missingTranslation(scope, "one");
|
312
|
-
break;
|
313
|
-
default:
|
314
|
-
message = translation["other"] || this.missingTranslation(scope, "other");
|
315
|
-
}
|
316
|
-
|
317
|
-
return this.interpolate(message, options);
|
318
|
-
};
|
319
|
-
|
320
|
-
I18n.missingTranslation = function() {
|
321
|
-
var message = '[missing "' + this.currentLocale();
|
322
|
-
var count = arguments.length;
|
323
|
-
|
324
|
-
for (var i = 0; i < count; i++) {
|
325
|
-
message += "." + arguments[i];
|
326
|
-
}
|
327
|
-
|
328
|
-
message += '" translation]';
|
329
|
-
|
330
|
-
return message;
|
331
|
-
};
|
332
|
-
|
333
|
-
I18n.currentLocale = function() {
|
334
|
-
return (I18n.locale || I18n.defaultLocale);
|
335
|
-
};
|
336
|
-
|
337
|
-
// shortcuts
|
338
|
-
I18n.t = I18n.translate;
|
339
|
-
I18n.l = I18n.localize;
|
340
|
-
I18n.p = I18n.pluralize;
|