lolita 3.0.4 → 3.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/GUIDELINE +5 -0
- data/Gemfile +18 -13
- data/VERSION +1 -1
- data/app/controllers/lolita/rest_controller.rb +4 -1
- data/app/helpers/lolita_helper.rb +10 -1
- data/app/views/components/lolita/list/_new_resource.html.erb +1 -1
- data/app/views/components/lolita/list/_tool_cell.html.erb +3 -3
- data/app/views/components/lolita/shared/_flash.html.erb +13 -0
- data/app/views/components/lolita/shared/_right_sidebar.html.erb +14 -0
- data/app/views/components/lolita/tab/_default.html.erb +1 -0
- data/app/views/components/lolita/tabs/_display.html.erb +4 -19
- data/app/views/lolita/layouts/application.html.erb +1 -1
- data/app/views/lolita/layouts/application.html.erb_spec.rb +0 -0
- data/config/locales/en.yml +2 -0
- data/features/create_page.feature +20 -0
- data/features/step_definitions/lolita_steps.rb +7 -0
- data/features/step_definitions/web_steps.rb +219 -0
- data/features/support/env.rb +73 -0
- data/features/support/paths.rb +35 -0
- data/lib/lolita.rb +5 -3
- data/lib/lolita/adapter/abstract_adapter.rb +1 -0
- data/lib/lolita/adapter/active_record.rb +4 -0
- data/lib/lolita/adapter/mongoid.rb +4 -0
- data/lib/lolita/base_configuration.rb +50 -12
- data/lib/lolita/configuration/tab.rb +7 -6
- data/lib/lolita/configuration/tabs.rb +9 -0
- data/lib/lolita/mapping.rb +4 -1
- data/lib/lolita/modules.rb +3 -17
- data/lib/lolita/rails/all.rb +3 -0
- data/lib/lolita/rails/routes.rb +9 -5
- data/lib/lolita/test/matchers.rb +77 -0
- data/lolita.gemspec +86 -215
- data/public/images/lolita/plus.png +0 -0
- data/public/javascripts/lolita/tab.js +40 -37
- data/public/javascripts/tinymce/langs/en.js +221 -221
- data/public/javascripts/tinymce/license.txt +504 -504
- data/public/javascripts/tinymce/themes/advanced/about.htm +52 -52
- data/public/javascripts/tinymce/themes/advanced/anchor.htm +26 -26
- data/public/javascripts/tinymce/themes/advanced/charmap.htm +51 -51
- data/public/javascripts/tinymce/themes/advanced/color_picker.htm +74 -74
- data/public/javascripts/tinymce/themes/advanced/editor_template_src.js +1328 -1328
- data/public/javascripts/tinymce/themes/advanced/image.htm +80 -80
- data/public/javascripts/tinymce/themes/advanced/js/about.js +73 -73
- data/public/javascripts/tinymce/themes/advanced/js/anchor.js +42 -42
- data/public/javascripts/tinymce/themes/advanced/js/charmap.js +354 -354
- data/public/javascripts/tinymce/themes/advanced/js/color_picker.js +329 -329
- data/public/javascripts/tinymce/themes/advanced/js/image.js +247 -247
- data/public/javascripts/tinymce/themes/advanced/js/link.js +153 -153
- data/public/javascripts/tinymce/themes/advanced/js/source_editor.js +56 -56
- data/public/javascripts/tinymce/themes/advanced/langs/en.js +68 -68
- data/public/javascripts/tinymce/themes/advanced/langs/en_dlg.js +53 -53
- data/public/javascripts/tinymce/themes/advanced/link.htm +57 -57
- data/public/javascripts/tinymce/themes/advanced/shortcuts.htm +47 -47
- data/public/javascripts/tinymce/themes/advanced/skins/cirkuit/content.css +66 -66
- data/public/javascripts/tinymce/themes/advanced/skins/cirkuit/dialog.css +117 -117
- data/public/javascripts/tinymce/themes/advanced/skins/cirkuit/ui.css +988 -988
- data/public/javascripts/tinymce/themes/advanced/source_editor.htm +25 -25
- data/public/stylesheets/lolita/style.css +30 -2
- data/spec/configuration/tab_spec.rb +42 -0
- data/spec/configuration/tabs_spec.rb +12 -0
- data/spec/lolita_spec.rb +1 -1
- data/spec/rails_app/app/mongoid/post.rb +3 -2
- data/spec/rails_app/config/application.rb +13 -13
- data/spec/rails_app/public/images/lolita/plus.png +0 -0
- data/spec/rails_app/public/javascripts/jquery-1.5.1.min.js +16 -0
- data/spec/rails_app/public/javascripts/lolita/main.js +6 -0
- data/spec/rails_app/public/javascripts/lolita/tab.js +41 -0
- data/spec/rails_app/public/javascripts/modernizr-1.7.min.js +2 -0
- data/spec/rails_app/public/javascripts/rails.js +137 -0
- data/spec/rails_app/public/javascripts/tinymce/jquery.tinymce.js +1 -0
- data/spec/rails_app/public/javascripts/tinymce/langs/en.js +222 -0
- data/spec/rails_app/public/javascripts/tinymce/license.txt +504 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/about.htm +52 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/anchor.htm +26 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/charmap.htm +51 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/color_picker.htm +74 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/editor_template.js +1 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/editor_template_src.js +1328 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/image.htm +80 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/img/colorpicker.jpg +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/img/flash.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/img/icons.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/img/iframe.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/img/pagebreak.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/img/quicktime.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/img/realmedia.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/img/shockwave.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/img/trans.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/img/video.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/img/windowsmedia.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/about.js +73 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/anchor.js +42 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/charmap.js +354 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/color_picker.js +329 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/image.js +247 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/link.js +153 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/source_editor.js +56 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/langs/en.js +68 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/langs/en_dlg.js +54 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/link.htm +57 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/shortcuts.htm +47 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/content.css +66 -0
- data/{public/javascripts/tinymce/themes/advanced/skins/default → spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit}/dialog.css +117 -117
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/img/butt2.png +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/img/button-bg.png +0 -0
- data/{public/javascripts/tinymce/themes/advanced/skins/default → spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit}/img/buttons.png +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/img/down_arrow.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/img/fade-butt.png +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/img/icons.png +0 -0
- data/{public/javascripts/tinymce/themes/advanced/skins/default → spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit}/img/items.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/img/menu-arrow.png +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/img/menu-check.png +0 -0
- data/{public/javascripts/tinymce/themes/advanced/skins/default → spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit}/img/progress.gif +0 -0
- data/{public/javascripts/tinymce/themes/advanced/skins/default → spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit}/img/tabs.gif +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/img/toolbarbg.png +0 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/ui.css +988 -0
- data/spec/rails_app/public/javascripts/tinymce/themes/advanced/source_editor.htm +25 -0
- data/spec/rails_app/public/javascripts/tinymce/tiny_mce.js +1 -0
- data/spec/rails_app/public/javascripts/tinymce/tiny_mce_popup.js +5 -0
- data/spec/rails_app/public/stylesheets/lolita/default.css +169 -0
- data/spec/rails_app/public/stylesheets/lolita/style.css +214 -0
- metadata +138 -227
- data/public/javascripts/tinymce/plugins/advhr/css/advhr.css +0 -5
- data/public/javascripts/tinymce/plugins/advhr/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/advhr/editor_plugin_src.js +0 -57
- data/public/javascripts/tinymce/plugins/advhr/js/rule.js +0 -43
- data/public/javascripts/tinymce/plugins/advhr/langs/en_dlg.js +0 -7
- data/public/javascripts/tinymce/plugins/advhr/rule.htm +0 -58
- data/public/javascripts/tinymce/plugins/advimage/css/advimage.css +0 -13
- data/public/javascripts/tinymce/plugins/advimage/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/advimage/editor_plugin_src.js +0 -50
- data/public/javascripts/tinymce/plugins/advimage/image.htm +0 -235
- data/public/javascripts/tinymce/plugins/advimage/img/sample.gif +0 -0
- data/public/javascripts/tinymce/plugins/advimage/js/image.js +0 -445
- data/public/javascripts/tinymce/plugins/advimage/langs/en_dlg.js +0 -45
- data/public/javascripts/tinymce/plugins/advlink/css/advlink.css +0 -8
- data/public/javascripts/tinymce/plugins/advlink/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/advlink/editor_plugin_src.js +0 -61
- data/public/javascripts/tinymce/plugins/advlink/js/advlink.js +0 -525
- data/public/javascripts/tinymce/plugins/advlink/langs/en_dlg.js +0 -54
- data/public/javascripts/tinymce/plugins/advlink/link.htm +0 -338
- data/public/javascripts/tinymce/plugins/advlist/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/advlist/editor_plugin_src.js +0 -154
- data/public/javascripts/tinymce/plugins/autoresize/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/autoresize/editor_plugin_src.js +0 -119
- data/public/javascripts/tinymce/plugins/autosave/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/autosave/editor_plugin_src.js +0 -431
- data/public/javascripts/tinymce/plugins/autosave/langs/en.js +0 -4
- data/public/javascripts/tinymce/plugins/bbcode/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/bbcode/editor_plugin_src.js +0 -120
- data/public/javascripts/tinymce/plugins/contextmenu/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/contextmenu/editor_plugin_src.js +0 -154
- data/public/javascripts/tinymce/plugins/directionality/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/directionality/editor_plugin_src.js +0 -82
- data/public/javascripts/tinymce/plugins/emotions/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/emotions/editor_plugin_src.js +0 -43
- data/public/javascripts/tinymce/plugins/emotions/emotions.htm +0 -41
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-cool.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-cry.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-embarassed.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-foot-in-mouth.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-frown.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-innocent.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-kiss.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-laughing.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-money-mouth.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-sealed.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-smile.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-surprised.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-tongue-out.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-undecided.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-wink.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/img/smiley-yell.gif +0 -0
- data/public/javascripts/tinymce/plugins/emotions/js/emotions.js +0 -22
- data/public/javascripts/tinymce/plugins/emotions/langs/en_dlg.js +0 -20
- data/public/javascripts/tinymce/plugins/example/dialog.htm +0 -22
- data/public/javascripts/tinymce/plugins/example/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/example/editor_plugin_src.js +0 -84
- data/public/javascripts/tinymce/plugins/example/img/example.gif +0 -0
- data/public/javascripts/tinymce/plugins/example/js/dialog.js +0 -19
- data/public/javascripts/tinymce/plugins/example/langs/en.js +0 -3
- data/public/javascripts/tinymce/plugins/example/langs/en_dlg.js +0 -3
- data/public/javascripts/tinymce/plugins/fullpage/css/fullpage.css +0 -182
- data/public/javascripts/tinymce/plugins/fullpage/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/fullpage/editor_plugin_src.js +0 -166
- data/public/javascripts/tinymce/plugins/fullpage/fullpage.htm +0 -571
- data/public/javascripts/tinymce/plugins/fullpage/js/fullpage.js +0 -492
- data/public/javascripts/tinymce/plugins/fullpage/langs/en_dlg.js +0 -85
- data/public/javascripts/tinymce/plugins/fullscreen/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/fullscreen/editor_plugin_src.js +0 -159
- data/public/javascripts/tinymce/plugins/fullscreen/fullscreen.htm +0 -109
- data/public/javascripts/tinymce/plugins/iespell/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/iespell/editor_plugin_src.js +0 -54
- data/public/javascripts/tinymce/plugins/inlinepopups/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/inlinepopups/editor_plugin_src.js +0 -696
- data/public/javascripts/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
- data/public/javascripts/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
- data/public/javascripts/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
- data/public/javascripts/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
- data/public/javascripts/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
- data/public/javascripts/tinymce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
- data/public/javascripts/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
- data/public/javascripts/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css +0 -90
- data/public/javascripts/tinymce/plugins/inlinepopups/template.htm +0 -387
- data/public/javascripts/tinymce/plugins/insertdatetime/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/insertdatetime/editor_plugin_src.js +0 -83
- data/public/javascripts/tinymce/plugins/layer/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/layer/editor_plugin_src.js +0 -214
- data/public/javascripts/tinymce/plugins/legacyoutput/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/legacyoutput/editor_plugin_src.js +0 -139
- data/public/javascripts/tinymce/plugins/media/css/media.css +0 -17
- data/public/javascripts/tinymce/plugins/media/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/media/editor_plugin_src.js +0 -770
- data/public/javascripts/tinymce/plugins/media/js/embed.js +0 -73
- data/public/javascripts/tinymce/plugins/media/js/media.js +0 -340
- data/public/javascripts/tinymce/plugins/media/langs/en_dlg.js +0 -109
- data/public/javascripts/tinymce/plugins/media/media.htm +0 -812
- data/public/javascripts/tinymce/plugins/media/moxieplayer.swf +0 -0
- data/public/javascripts/tinymce/plugins/nonbreaking/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/nonbreaking/editor_plugin_src.js +0 -53
- data/public/javascripts/tinymce/plugins/noneditable/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/noneditable/editor_plugin_src.js +0 -90
- data/public/javascripts/tinymce/plugins/pagebreak/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/pagebreak/editor_plugin_src.js +0 -74
- data/public/javascripts/tinymce/plugins/paste/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/paste/editor_plugin_src.js +0 -899
- data/public/javascripts/tinymce/plugins/paste/js/pastetext.js +0 -36
- data/public/javascripts/tinymce/plugins/paste/js/pasteword.js +0 -51
- data/public/javascripts/tinymce/plugins/paste/langs/en_dlg.js +0 -5
- data/public/javascripts/tinymce/plugins/paste/pastetext.htm +0 -27
- data/public/javascripts/tinymce/plugins/paste/pasteword.htm +0 -21
- data/public/javascripts/tinymce/plugins/preview/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/preview/editor_plugin_src.js +0 -53
- data/public/javascripts/tinymce/plugins/preview/example.html +0 -28
- data/public/javascripts/tinymce/plugins/preview/jscripts/embed.js +0 -73
- data/public/javascripts/tinymce/plugins/preview/preview.html +0 -17
- data/public/javascripts/tinymce/plugins/print/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/print/editor_plugin_src.js +0 -34
- data/public/javascripts/tinymce/plugins/save/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/save/editor_plugin_src.js +0 -101
- data/public/javascripts/tinymce/plugins/searchreplace/css/searchreplace.css +0 -6
- data/public/javascripts/tinymce/plugins/searchreplace/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/searchreplace/editor_plugin_src.js +0 -61
- data/public/javascripts/tinymce/plugins/searchreplace/js/searchreplace.js +0 -140
- data/public/javascripts/tinymce/plugins/searchreplace/langs/en_dlg.js +0 -16
- data/public/javascripts/tinymce/plugins/searchreplace/searchreplace.htm +0 -100
- data/public/javascripts/tinymce/plugins/spellchecker/css/content.css +0 -1
- data/public/javascripts/tinymce/plugins/spellchecker/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/spellchecker/editor_plugin_src.js +0 -415
- data/public/javascripts/tinymce/plugins/spellchecker/img/wline.gif +0 -0
- data/public/javascripts/tinymce/plugins/style/css/props.css +0 -13
- data/public/javascripts/tinymce/plugins/style/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/style/editor_plugin_src.js +0 -55
- data/public/javascripts/tinymce/plugins/style/js/props.js +0 -635
- data/public/javascripts/tinymce/plugins/style/langs/en_dlg.js +0 -70
- data/public/javascripts/tinymce/plugins/style/props.htm +0 -838
- data/public/javascripts/tinymce/plugins/tabfocus/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/tabfocus/editor_plugin_src.js +0 -114
- data/public/javascripts/tinymce/plugins/table/cell.htm +0 -178
- data/public/javascripts/tinymce/plugins/table/css/cell.css +0 -17
- data/public/javascripts/tinymce/plugins/table/css/row.css +0 -25
- data/public/javascripts/tinymce/plugins/table/css/table.css +0 -13
- data/public/javascripts/tinymce/plugins/table/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/table/editor_plugin_src.js +0 -1183
- data/public/javascripts/tinymce/plugins/table/js/cell.js +0 -284
- data/public/javascripts/tinymce/plugins/table/js/merge_cells.js +0 -27
- data/public/javascripts/tinymce/plugins/table/js/row.js +0 -232
- data/public/javascripts/tinymce/plugins/table/js/table.js +0 -450
- data/public/javascripts/tinymce/plugins/table/langs/en_dlg.js +0 -74
- data/public/javascripts/tinymce/plugins/table/merge_cells.htm +0 -32
- data/public/javascripts/tinymce/plugins/table/row.htm +0 -157
- data/public/javascripts/tinymce/plugins/table/table.htm +0 -188
- data/public/javascripts/tinymce/plugins/template/blank.htm +0 -12
- data/public/javascripts/tinymce/plugins/template/css/template.css +0 -23
- data/public/javascripts/tinymce/plugins/template/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/template/editor_plugin_src.js +0 -159
- data/public/javascripts/tinymce/plugins/template/js/template.js +0 -106
- data/public/javascripts/tinymce/plugins/template/langs/en_dlg.js +0 -15
- data/public/javascripts/tinymce/plugins/template/template.htm +0 -31
- data/public/javascripts/tinymce/plugins/visualchars/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/visualchars/editor_plugin_src.js +0 -83
- data/public/javascripts/tinymce/plugins/wordcount/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/wordcount/editor_plugin_src.js +0 -114
- data/public/javascripts/tinymce/plugins/xhtmlxtras/abbr.htm +0 -142
- data/public/javascripts/tinymce/plugins/xhtmlxtras/acronym.htm +0 -142
- data/public/javascripts/tinymce/plugins/xhtmlxtras/attributes.htm +0 -149
- data/public/javascripts/tinymce/plugins/xhtmlxtras/cite.htm +0 -142
- data/public/javascripts/tinymce/plugins/xhtmlxtras/css/attributes.css +0 -11
- data/public/javascripts/tinymce/plugins/xhtmlxtras/css/popup.css +0 -9
- data/public/javascripts/tinymce/plugins/xhtmlxtras/del.htm +0 -162
- data/public/javascripts/tinymce/plugins/xhtmlxtras/editor_plugin.js +0 -1
- data/public/javascripts/tinymce/plugins/xhtmlxtras/editor_plugin_src.js +0 -132
- data/public/javascripts/tinymce/plugins/xhtmlxtras/ins.htm +0 -162
- data/public/javascripts/tinymce/plugins/xhtmlxtras/js/abbr.js +0 -28
- data/public/javascripts/tinymce/plugins/xhtmlxtras/js/acronym.js +0 -28
- data/public/javascripts/tinymce/plugins/xhtmlxtras/js/attributes.js +0 -125
- data/public/javascripts/tinymce/plugins/xhtmlxtras/js/cite.js +0 -28
- data/public/javascripts/tinymce/plugins/xhtmlxtras/js/del.js +0 -53
- data/public/javascripts/tinymce/plugins/xhtmlxtras/js/element_common.js +0 -229
- data/public/javascripts/tinymce/plugins/xhtmlxtras/js/ins.js +0 -53
- data/public/javascripts/tinymce/plugins/xhtmlxtras/langs/en_dlg.js +0 -32
- data/public/javascripts/tinymce/themes/advanced/skins/default/content.css +0 -47
- data/public/javascripts/tinymce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
- data/public/javascripts/tinymce/themes/advanced/skins/default/img/menu_check.gif +0 -0
- data/public/javascripts/tinymce/themes/advanced/skins/default/ui.css +0 -213
- data/public/javascripts/tinymce/themes/advanced/skins/highcontrast/content.css +0 -23
- data/public/javascripts/tinymce/themes/advanced/skins/highcontrast/dialog.css +0 -105
- data/public/javascripts/tinymce/themes/advanced/skins/highcontrast/ui.css +0 -101
- data/public/javascripts/tinymce/themes/advanced/skins/o2k7/content.css +0 -46
- data/public/javascripts/tinymce/themes/advanced/skins/o2k7/dialog.css +0 -116
- data/public/javascripts/tinymce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
- data/public/javascripts/tinymce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
- data/public/javascripts/tinymce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
- data/public/javascripts/tinymce/themes/advanced/skins/o2k7/ui.css +0 -215
- data/public/javascripts/tinymce/themes/advanced/skins/o2k7/ui_black.css +0 -8
- data/public/javascripts/tinymce/themes/advanced/skins/o2k7/ui_silver.css +0 -5
- data/public/javascripts/tinymce/themes/simple/editor_template.js +0 -1
- data/public/javascripts/tinymce/themes/simple/editor_template_src.js +0 -84
- data/public/javascripts/tinymce/themes/simple/img/icons.gif +0 -0
- data/public/javascripts/tinymce/themes/simple/langs/en.js +0 -11
- data/public/javascripts/tinymce/themes/simple/skins/default/content.css +0 -25
- data/public/javascripts/tinymce/themes/simple/skins/default/ui.css +0 -32
- data/public/javascripts/tinymce/themes/simple/skins/o2k7/content.css +0 -17
- data/public/javascripts/tinymce/themes/simple/skins/o2k7/img/button_bg.png +0 -0
- data/public/javascripts/tinymce/themes/simple/skins/o2k7/ui.css +0 -35
- data/public/javascripts/tinymce/tiny_mce_src.js +0 -14724
- data/public/javascripts/tinymce/utils/editable_selects.js +0 -70
- data/public/javascripts/tinymce/utils/form_utils.js +0 -207
- data/public/javascripts/tinymce/utils/mctabs.js +0 -162
- data/public/javascripts/tinymce/utils/validate.js +0 -252
@@ -0,0 +1,73 @@
|
|
1
|
+
# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
|
2
|
+
# It is recommended to regenerate this file in the future when you upgrade to a
|
3
|
+
# newer version of cucumber-rails. Consider adding your own code to a new file
|
4
|
+
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
|
5
|
+
# files.
|
6
|
+
|
7
|
+
ENV["RAILS_ENV"] ||= "test"
|
8
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec/rails_app/config/environment')
|
9
|
+
|
10
|
+
require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
|
11
|
+
require 'cucumber/rails/world'
|
12
|
+
require 'cucumber/rails/active_record'
|
13
|
+
require 'cucumber/web/tableish'
|
14
|
+
|
15
|
+
require 'capybara/rails'
|
16
|
+
require 'capybara/cucumber'
|
17
|
+
require 'capybara/session'
|
18
|
+
#require 'cucumber/rails/capybara_javascript_emulation' # Lets you click links with onclick javascript handlers without using @culerity or @javascript
|
19
|
+
# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
|
20
|
+
# order to ease the transition to Capybara we set the default here. If you'd
|
21
|
+
# prefer to use XPath just remove this line and adjust any selectors in your
|
22
|
+
# steps to use the XPath syntax.
|
23
|
+
Capybara.default_selector = :css
|
24
|
+
|
25
|
+
require 'akephalos'
|
26
|
+
Capybara.default_driver = :akephalos
|
27
|
+
#Capybara.default_driver = :selenium
|
28
|
+
|
29
|
+
# If you set this to false, any error raised from within your app will bubble
|
30
|
+
# up to your step definition and out to cucumber unless you catch it somewhere
|
31
|
+
# on the way. You can make Rails rescue errors and render error pages on a
|
32
|
+
# per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
|
33
|
+
#
|
34
|
+
# If you set this to true, Rails will rescue all errors and render error
|
35
|
+
# pages, more or less in the same way your application would behave in the
|
36
|
+
# default production environment. It's not recommended to do this for all
|
37
|
+
# of your scenarios, as this makes it hard to discover errors in your application.
|
38
|
+
ActionController::Base.allow_rescue = false
|
39
|
+
|
40
|
+
# If you set this to true, each scenario will run in a database transaction.
|
41
|
+
# You can still turn off transactions on a per-scenario basis, simply tagging
|
42
|
+
# a feature or scenario with the @no-txn tag. If you are using Capybara,
|
43
|
+
# tagging with @culerity or @javascript will also turn transactions off.
|
44
|
+
#
|
45
|
+
# If you set this to false, transactions will be off for all scenarios,
|
46
|
+
# regardless of whether you use @no-txn or not.
|
47
|
+
#
|
48
|
+
# Beware that turning transactions off will leave data in your database
|
49
|
+
# after each scenario, which can lead to hard-to-debug failures in
|
50
|
+
# subsequent scenarios. If you do this, we recommend you create a Before
|
51
|
+
# block that will explicitly put your database in a known state.
|
52
|
+
#Cucumber::Rails::World.use_transactional_fixtures = true
|
53
|
+
# How to clean your database when transactions are turned off. See
|
54
|
+
# http://github.com/bmabey/database_cleaner for more info.
|
55
|
+
if defined?(ActiveRecord::Base)
|
56
|
+
begin
|
57
|
+
require 'database_cleaner'
|
58
|
+
DatabaseCleaner.strategy = :truncation
|
59
|
+
rescue LoadError => ignore_if_database_cleaner_not_present
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
require 'mongoid'
|
64
|
+
Mongoid.configure do |config|
|
65
|
+
name = "lolita3_test"
|
66
|
+
host = "localhost"
|
67
|
+
config.master = Mongo::Connection.new.db(name)
|
68
|
+
config.slaves = [
|
69
|
+
Mongo::Connection.new(host, 27017, :slave_ok => true).db(name)
|
70
|
+
]
|
71
|
+
#config.use_object_ids = true
|
72
|
+
config.persist_in_safe_mode = false
|
73
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module NavigationHelpers
|
2
|
+
# Maps a name to a path. Used by the
|
3
|
+
#
|
4
|
+
# When /^I go to (.+)$/ do |page_name|
|
5
|
+
#
|
6
|
+
# step definition in web_steps.rb
|
7
|
+
#
|
8
|
+
def path_to(page_name)
|
9
|
+
case page_name
|
10
|
+
|
11
|
+
when /list/
|
12
|
+
lolita_posts_path
|
13
|
+
when /the home\s?page/
|
14
|
+
'/'
|
15
|
+
|
16
|
+
# Add more mappings here.
|
17
|
+
# Here is an example that pulls values out of the Regexp:
|
18
|
+
#
|
19
|
+
# when /^(.*)'s profile page$/i
|
20
|
+
# user_profile_path(User.find_by_login($1))
|
21
|
+
|
22
|
+
else
|
23
|
+
begin
|
24
|
+
page_name =~ /the (.*) page/
|
25
|
+
path_components = $1.split(/\s+/)
|
26
|
+
self.send(path_components.push('path').join('_').to_sym)
|
27
|
+
rescue Object => e
|
28
|
+
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
|
29
|
+
"Now, go and add a mapping in #{__FILE__}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
World(NavigationHelpers)
|
data/lib/lolita.rb
CHANGED
@@ -83,6 +83,10 @@ module Lolita
|
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
86
|
+
module Test
|
87
|
+
autoload :Matchers, 'lolita/test/matchers'
|
88
|
+
end
|
89
|
+
|
86
90
|
module Controllers
|
87
91
|
autoload :InternalHelpers, 'lolita/controllers/internal_helpers'
|
88
92
|
autoload :UserHelpers, 'lolita/controllers/user_helpers'
|
@@ -124,9 +128,7 @@ end
|
|
124
128
|
engine_time=Time.now
|
125
129
|
|
126
130
|
if defined?(Rails)
|
127
|
-
require 'lolita/
|
128
|
-
require 'lolita/rails'
|
129
|
-
require 'lolita/modules'
|
131
|
+
require 'lolita/rails/all'
|
130
132
|
end
|
131
133
|
|
132
134
|
puts "Lolita engine started in #{Time.at(Time.now-engine_time).strftime("%M:%S.%3N")}"
|
@@ -1,8 +1,10 @@
|
|
1
1
|
module Lolita
|
2
|
+
# Base::Configuration methods are accessable through Lolita module.
|
3
|
+
# Like Lolita.modules and Lolita.routes and so on.
|
2
4
|
class BaseConfiguration
|
3
5
|
|
4
6
|
attr_reader :scope, :modules, :routes, :controllers
|
5
|
-
attr_accessor :mappings,:
|
7
|
+
attr_accessor :mappings,:default_route,:user_classes,:authentication
|
6
8
|
|
7
9
|
def initialize(scope)
|
8
10
|
@scope=scope
|
@@ -14,30 +16,57 @@ module Lolita
|
|
14
16
|
@controllers={}
|
15
17
|
end
|
16
18
|
|
17
|
-
def
|
19
|
+
def conditional_routes(klass=nil)
|
20
|
+
@routes.map{|name,route|
|
21
|
+
if route.is_a?(Proc)
|
22
|
+
route.call(klass)
|
23
|
+
else
|
24
|
+
nil
|
25
|
+
end
|
26
|
+
}.compact
|
27
|
+
end
|
18
28
|
|
29
|
+
# Include module in Lolita, don't know why i need this
|
30
|
+
def use(module_name)
|
31
|
+
Lolita.send(:include,module_name)
|
19
32
|
end
|
20
33
|
|
21
34
|
def add_mapping(resource,options={})
|
22
35
|
mapping = Lolita::Mapping.new(resource, options)
|
23
36
|
self.mappings[mapping.name] = mapping
|
24
|
-
#self.default_scope ||= mapping.name
|
25
37
|
mapping
|
26
38
|
end
|
27
39
|
|
28
|
-
|
29
|
-
|
30
|
-
|
40
|
+
# Add new module to Lolita
|
41
|
+
# Accpted options
|
42
|
+
# * <tt>controller</tt> - not in use
|
43
|
+
# * <tt>route</tt> - Symbol of route name or lambad, that return route name based on resource.
|
44
|
+
# Route name is used to call method lolita_[route_name] in Mapper class, and that should draw route.
|
45
|
+
# * <tt>:name</tt> - name of module, underscored symbol. Used to draw default route, by default always
|
46
|
+
# lolita_rest is called, but if route with resource name is found, than by default this route will be drawn.
|
47
|
+
# Like lolita_for :posts, can go to different controller than rest and do other things.
|
48
|
+
# * <tt>:path</tt> - some file that will be included. Deprecated will be removed
|
49
|
+
# ====Example
|
50
|
+
# Lolita.add_module Lolita::Posts, :route=>:post, :name=>:post
|
51
|
+
# lolita_for :posts #=> create url whatever is defined in lolita_post method, and goes to :controller=>"lolita/posts"
|
52
|
+
# Lolita.add_module Lolita::FileUpload, :route=>lambda{|resource| resource.lolita.tabs.by_type(:file) ? :file_upload : nil}
|
53
|
+
# lolita_for :users #=> creat default rest urls and also call method lolita_file_upload if user lolita define :file tab.
|
54
|
+
def add_module module_container, options={}
|
55
|
+
options.assert_valid_keys(:controller,:route,:model,:path,:name)
|
56
|
+
name=options[:name]||module_container.to_s.to_sym
|
57
|
+
self.modules<<module_container
|
31
58
|
config={
|
32
59
|
:route=>self.routes,
|
33
60
|
:controller=>self.controllers
|
34
61
|
}
|
35
62
|
config.each{|key,value|
|
36
63
|
next unless options[key]
|
37
|
-
new_value=options[key]
|
64
|
+
new_value=options[key]
|
38
65
|
if value.is_a?(Hash)
|
39
66
|
value[name]=new_value
|
40
|
-
elsif
|
67
|
+
elsif value.is_a?(Proc)
|
68
|
+
value[name]=new_value
|
69
|
+
elsif value.respond_to?(:include?) && !value.include?(new_value)
|
41
70
|
value << new_value
|
42
71
|
end
|
43
72
|
}
|
@@ -45,11 +74,20 @@ module Lolita
|
|
45
74
|
if options[:path]
|
46
75
|
require File.join(options[:path],name.to_s)
|
47
76
|
end
|
48
|
-
|
49
|
-
# model_path = (options[:model] == true ? "lolita/models/#{name}" : options[:model])
|
50
|
-
# Lolita::Models.send(:autoload, name.to_s.camelize.to_sym, model_path)
|
51
|
-
# end
|
77
|
+
|
52
78
|
end
|
53
79
|
|
80
|
+
# Lolita.extend_route_for(:any,:posts,:file_upload) do |resource|
|
81
|
+
# if resource.tabs.by_type(:metadata)
|
82
|
+
# with do
|
83
|
+
# resources :metadata
|
84
|
+
# end
|
85
|
+
# end
|
86
|
+
#end
|
87
|
+
# :any for any
|
88
|
+
# lolita/posts/metadata
|
89
|
+
# lolita/posts/files/metadata
|
90
|
+
def lolita_extend_route_for()
|
91
|
+
end
|
54
92
|
end
|
55
93
|
end
|
@@ -23,8 +23,8 @@ module Lolita
|
|
23
23
|
|
24
24
|
def add(dbi,*args,&block)
|
25
25
|
type=args.first if args
|
26
|
-
|
27
|
-
temp_tab=self.new(dbi,*args,&block)
|
26
|
+
if !type || type==:default
|
27
|
+
temp_tab=self.new(dbi,*args,&block)
|
28
28
|
type=temp_tab.type
|
29
29
|
end
|
30
30
|
unless type==:default
|
@@ -34,15 +34,15 @@ module Lolita
|
|
34
34
|
raise Lolita::TabNotFoundError, "Lolita::Configuration::#{type.to_s.camelize}Tab not found. Add it in /lolita/configuration/tab/#{type}.rb"
|
35
35
|
end
|
36
36
|
else
|
37
|
-
|
37
|
+
temp_tab
|
38
38
|
end
|
39
39
|
end
|
40
40
|
end
|
41
41
|
# For different types there are different builders(cells)
|
42
42
|
@@available_types=[:content]
|
43
43
|
|
44
|
-
lolita_accessor :title,:name
|
45
|
-
attr_accessor :dbi,:
|
44
|
+
lolita_accessor :title,:name,:type
|
45
|
+
attr_accessor :dbi,:current_fieldset,:current_dbi
|
46
46
|
attr_reader :field_sets,:nested_form
|
47
47
|
|
48
48
|
# To create new tab the following parametrs need to be provided.
|
@@ -160,7 +160,7 @@ module Lolita
|
|
160
160
|
def set_attributes *args
|
161
161
|
if args
|
162
162
|
options=args.extract_options!
|
163
|
-
self.type=args.first
|
163
|
+
self.type=args.first if args.first.is_a?(Symbol)
|
164
164
|
options.each{|method,options|
|
165
165
|
self.send(:"#{method}=",options)
|
166
166
|
}
|
@@ -175,6 +175,7 @@ module Lolita
|
|
175
175
|
end
|
176
176
|
|
177
177
|
def set_default_attributes
|
178
|
+
@type=:default unless @type
|
178
179
|
@name="tab_#{self.__id__}" unless @name
|
179
180
|
@title=@type.to_s.humanize unless @title
|
180
181
|
end
|
@@ -1,5 +1,9 @@
|
|
1
1
|
module Lolita
|
2
2
|
module Configuration
|
3
|
+
# Lolita::Configuration::Tabs is container class that holds all
|
4
|
+
# tabs for each lolita instance.
|
5
|
+
# Also it has some useful methods.
|
6
|
+
|
3
7
|
class Tabs
|
4
8
|
include Enumerable
|
5
9
|
include Lolita::ObservedArray
|
@@ -38,6 +42,10 @@ module Lolita
|
|
38
42
|
self<<Lolita::Configuration::Tab.add(@dbi,*args,&block)
|
39
43
|
end
|
40
44
|
|
45
|
+
def by_type(type)
|
46
|
+
@tabs.detect{|tab| tab.type==type.to_sym}
|
47
|
+
end
|
48
|
+
|
41
49
|
def exclude=(values)
|
42
50
|
exclude(values)
|
43
51
|
end
|
@@ -77,6 +85,7 @@ module Lolita
|
|
77
85
|
}
|
78
86
|
end
|
79
87
|
end
|
88
|
+
|
80
89
|
private
|
81
90
|
|
82
91
|
def create_content_tab
|
data/lib/lolita/mapping.rb
CHANGED
@@ -3,6 +3,7 @@ module Lolita
|
|
3
3
|
attr_reader :class_name,:path,:singular,:plural,:path_prefix,:module,:controllers,:as
|
4
4
|
alias :name :singular
|
5
5
|
|
6
|
+
# TODO how it is when lolita plugin extend default path and there is module is this not break the logic?
|
6
7
|
def initialize(name,options={})
|
7
8
|
@plural=name.to_sym#(options[:as] ? "#{options[:as]}_#{name}" : name).to_sym
|
8
9
|
@singular=(options[:singular] || @plural.to_s.singularize).to_sym
|
@@ -12,7 +13,9 @@ module Lolita
|
|
12
13
|
@path=(options[:path] || "lolita").to_s
|
13
14
|
@module=options[:module]
|
14
15
|
mod=@module ? nil : "lolita/"
|
15
|
-
@controllers=Hash.new{|h,k|
|
16
|
+
@controllers=Hash.new{|h,k|
|
17
|
+
h[k]="#{mod}#{k}"
|
18
|
+
}
|
16
19
|
end
|
17
20
|
#
|
18
21
|
# lolita/posts/new => lolita/crud/new :class=>Post
|
data/lib/lolita/modules.rb
CHANGED
@@ -1,20 +1,6 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require "lolita/modules/rest"
|
2
|
+
|
3
|
+
Lolita.default_route = :rest
|
3
4
|
|
4
5
|
|
5
|
-
#Lolita.add_module :pictures
|
6
|
-
# Lolita.use(:blogs)
|
7
|
-
# Lolita.use(:threads)
|
8
|
-
# Lolita.use :lolita-devise-admins
|
9
|
-
# require 'lolita-devise-users'
|
10
|
-
# /lolita/admins
|
11
|
-
# /lolita/admin/1/edit
|
12
|
-
#Lolita.add_module :statistic, :route=>true
|
13
|
-
# lolita/questions/statistic => lolita/statistic/index
|
14
|
-
# lolita_modules :statistic
|
15
|
-
# Lolita.mapping[:posts].to.lolita.modules.each do |m|
|
16
|
-
# lolita_rest
|
17
|
-
# lolita_statistic -> lolita/questions/statistic
|
18
|
-
# lolita_gallery -> lolita/questions/add_image
|
19
|
-
#Lolita.mount :blog, :route=>true # lolita/blog
|
20
6
|
|
data/lib/lolita/rails/routes.rb
CHANGED
@@ -5,13 +5,14 @@ module ActionDispatch::Routing
|
|
5
5
|
# Every module, that is used with lolita and has routes, need to have
|
6
6
|
# <code>resource method</code>, for example, lolita_rest, that should be added
|
7
7
|
# to ActionDispatch::Routing::Mapper class, as a *protected* method.
|
8
|
-
# Module can automaticliy add resource route or
|
8
|
+
# Module can automaticliy add resource route or allow user to do it.
|
9
9
|
# ====Example
|
10
|
-
# Lolita.add_module
|
10
|
+
# Lolita.add_module Lolita::Gallery,:route=>:gallery
|
11
11
|
# # in route.rb
|
12
|
-
# lolita_for :
|
13
|
-
# #
|
12
|
+
# lolita_for :galleries
|
13
|
+
# # lolita_for try to call :lolita_gallery in Mapper class
|
14
14
|
def lolita_for *resources
|
15
|
+
#TODO refactor
|
15
16
|
options = resources.extract_options!
|
16
17
|
|
17
18
|
if as = options.delete(:as)
|
@@ -42,12 +43,15 @@ module ActionDispatch::Routing
|
|
42
43
|
elsif target_class.respond_to?(:lolita) && target_class.instance_variable_get(:@lolita).nil?
|
43
44
|
raise Lolita::NotInitialized, "Call lolita method in #{target_class}."
|
44
45
|
else
|
45
|
-
route=Lolita
|
46
|
+
route=Lolita.routes[mapping.name] || Lolita.default_route
|
46
47
|
end
|
47
48
|
unless route
|
48
49
|
raise Lolita::ModuleNotFound, "Module #{mapping.name.to_s.capitalize} not found! Add Lolita.use(:#{mapping.name}) to initializers/lolita.rb"
|
49
50
|
end
|
50
51
|
send(:"lolita_#{route}",mapping,mapping.controllers)
|
52
|
+
Lolita.conditional_routes(target_class).each do |route_name|
|
53
|
+
send(:"lolita_#{route_name}",mapping,mapping.controllers)
|
54
|
+
end
|
51
55
|
end
|
52
56
|
end
|
53
57
|
}
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module Lolita
|
2
|
+
module Test
|
3
|
+
# Matchers that make easier to test Lolita and Lolita addons
|
4
|
+
module Matchers
|
5
|
+
|
6
|
+
class BeRoutable
|
7
|
+
|
8
|
+
def matches?(actual)
|
9
|
+
@actual=actual
|
10
|
+
collect_routes
|
11
|
+
set_method_and_url
|
12
|
+
result=@routes.detect{|route|
|
13
|
+
method_match(route) && @url.to_s.match(route[:path_info])
|
14
|
+
}
|
15
|
+
!!result
|
16
|
+
end
|
17
|
+
|
18
|
+
def failure_message
|
19
|
+
"expected #{@url.inspect}#{@method ? " with method #{@method.inspect}" : ""} to be routable"
|
20
|
+
end
|
21
|
+
def negative_failure_message
|
22
|
+
"expected #{@url.inspect}#{@method ? " with method #{@method.inspect}" : ""} to not be routable"
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def method_match(route)
|
28
|
+
if route[:request_method]
|
29
|
+
if @method
|
30
|
+
@method.to_s.upcase.match(route[:request_method])
|
31
|
+
else
|
32
|
+
false
|
33
|
+
end
|
34
|
+
else
|
35
|
+
true
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def set_method_and_url
|
40
|
+
if @actual.is_a?(Hash)
|
41
|
+
@method,@url=@actual.keys.first,@actual.values.first
|
42
|
+
elsif @actual.is_a?(Array)
|
43
|
+
if @actual.size>=2
|
44
|
+
@method,@url=@actual[0],@actual[1]
|
45
|
+
elsif
|
46
|
+
@url=@actual.first
|
47
|
+
end
|
48
|
+
else
|
49
|
+
@url=@actual.to_s
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def collect_routes
|
54
|
+
@routes=[]
|
55
|
+
all_applications.each do |application|
|
56
|
+
@routes+=application.routes.routes.map(&:conditions)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def all_applications
|
61
|
+
if defined?(Rails) && defined?(Rails::Application)
|
62
|
+
ObjectSpace.each_object(Rails::Application).select { |klass|
|
63
|
+
klass.class < Rails::Application
|
64
|
+
}.map(&:class)
|
65
|
+
else
|
66
|
+
[]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def be_routable
|
72
|
+
BeRoutable.new
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|