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
data/GUIDELINE
CHANGED
data/Gemfile
CHANGED
@@ -1,24 +1,29 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
# Thing how to seperate gems for Rails
|
3
|
+
# Thing how to seperate gems for Rails Engine from those that are only for lolita
|
4
4
|
gem "rails", "~>3.0"
|
5
5
|
gem "will_paginate", "~> 3.0.pre2"
|
6
6
|
gem "abstract"
|
7
|
+
gem "builder", "~> 2.1.2" #cucumber asks for builder 3 but rails supports 2.1
|
7
8
|
|
8
9
|
group :mongoid do
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
gem "mongo"
|
11
|
+
gem "mongoid", "~> 2.0.0.rc.7"
|
12
|
+
gem "bson_ext"
|
12
13
|
end
|
13
14
|
|
14
15
|
#gem 'cover_me', '>= 1.0.0.rc6', :group => :test
|
15
|
-
|
16
|
+
gem "jeweler", "~> 1.5.2", :group=>:development
|
16
17
|
group :test,:development do
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
gem "rspec", ">=2.2.0"
|
19
|
+
gem "rspec-rails"
|
20
|
+
gem "factory_girl"
|
21
|
+
gem 'ffaker'
|
22
|
+
# gem "rspec-cells"
|
23
|
+
#gem "sqlite3-ruby"
|
24
|
+
gem "ruby-debug19"
|
25
|
+
gem "cucumber-rails"
|
26
|
+
gem "capybara"
|
27
|
+
gem "database_cleaner"
|
28
|
+
gem "akephalos"
|
29
|
+
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.0.
|
1
|
+
3.0.5
|
@@ -60,8 +60,10 @@ class Lolita::RestController < ApplicationController
|
|
60
60
|
|
61
61
|
def save_and_redirect
|
62
62
|
if self.resource.save
|
63
|
+
flash.now[:notice] = I18n.t "lolita.shared.save_notice"
|
63
64
|
show_form
|
64
65
|
else
|
66
|
+
flash.now[:alert] = I18n.t "lolita.shared.save_alert"
|
65
67
|
show_form #to_list
|
66
68
|
end
|
67
69
|
end
|
@@ -69,6 +71,7 @@ class Lolita::RestController < ApplicationController
|
|
69
71
|
def to_list
|
70
72
|
page=resource_class.lolita.list.paginate(params[:page])
|
71
73
|
builder=build_response_for(:list,:page=>page)
|
72
|
-
|
74
|
+
render :index
|
75
|
+
#render_component *builder
|
73
76
|
end
|
74
77
|
end
|
@@ -1,3 +1,12 @@
|
|
1
1
|
module LolitaHelper
|
2
|
-
|
2
|
+
|
3
|
+
# Classes for div block that is located to the right of menu
|
4
|
+
# This is helpful because different positionings within it exist depending on action
|
5
|
+
def content_classes
|
6
|
+
classes = []
|
7
|
+
if params[:action] == "edit"
|
8
|
+
classes << "with-secondary"
|
9
|
+
end
|
10
|
+
classes.join(" ")
|
11
|
+
end
|
3
12
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<td>
|
2
|
-
<%= link_to "
|
3
|
-
<%= link_to "
|
1
|
+
<td class="tool-cell">
|
2
|
+
<%= link_to "Edit",edit_lolita_resource_path(:id=>record.id) %>
|
3
|
+
<%= link_to "Delete", lolita_resource_path(:id=>record.id),:method=>:delete,:confirm=>I18n.t("lolita.list.confirm") %>
|
4
4
|
</td>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<div id="flash" style="display:none">
|
2
|
+
<%= flash[:notice] if flash[:notice] %>
|
3
|
+
<%= flash[:alert] if flash[:alert] %>
|
4
|
+
</div>
|
5
|
+
|
6
|
+
<% if request.xhr? && (flash[:notice] || flash[:alert]) %>
|
7
|
+
<script>
|
8
|
+
$("#flash").slideDown("fast");
|
9
|
+
setTimeout(function() {
|
10
|
+
$("#flash").slideUp("fast")
|
11
|
+
}, 10000); //wait 10 seconds and then slide up
|
12
|
+
</script>
|
13
|
+
<% end%>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<div class="secondary">
|
2
|
+
<div class="box">
|
3
|
+
<div class="boxtitle black">
|
4
|
+
<h1><%= t "lolita.tabs.save" %></h1>
|
5
|
+
<div class="arrow"></div>
|
6
|
+
</div>
|
7
|
+
<div class="save black">
|
8
|
+
<div class="last-save">
|
9
|
+
<%= resource.updated_at.strftime("#{t("lolita.tabs.last_save")}: %m/%d/%Y %H:%M ") if resource.respond_to?(:updated_at) && resource.updated_at %>
|
10
|
+
</div>
|
11
|
+
<button class="save-all"><%=I18n.t("lolita.tabs.save")%></button>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
</div>
|
@@ -5,6 +5,7 @@
|
|
5
5
|
%>
|
6
6
|
<%= form_tag "#", :id=>"tab-form-#{tab.__id__}" do |form| %>
|
7
7
|
<div class="tab-content">
|
8
|
+
<%#= error_messages_for resource #TODO removed in Rails 3, now available as plugin .. %>
|
8
9
|
<% tab.fields_with_field_set do |fields_or_field,field_set| %>
|
9
10
|
<% if field_set %>
|
10
11
|
<%= render_component :"lolita/field_set", :display, :fields=>fields_or_field,:field_set=>field_set %>
|
@@ -1,26 +1,11 @@
|
|
1
|
-
|
1
|
+
<%= render_component :"lolita/shared", :flash, :flash => flash %> <%# FIXME does it really need passed flash as local var? %>
|
2
|
+
<%= render_component :"lolita/shared", :right_sidebar %>
|
2
3
|
|
3
|
-
<%#=
|
4
|
-
|
5
|
-
<div class="secondary"> <%#= right sidebar %>
|
6
|
-
<div class="box">
|
7
|
-
<div class="boxtitle black">
|
8
|
-
<h1><%= t "lolita.tabs.save" %></h1>
|
9
|
-
<div class="arrow"></div>
|
10
|
-
</div>
|
11
|
-
<div class="save black">
|
12
|
-
<div class="last-save">
|
13
|
-
<%= resource.updated_at.strftime("#{t("lolita.tabs.last_save")}: %m/%d/%Y %H:%M ") if resource.updated_at %>
|
14
|
-
</div>
|
15
|
-
<button class="save-all"><%=I18n.t("lolita.tabs.save")%></button>
|
16
|
-
</div>
|
17
|
-
</div>
|
18
|
-
</div>
|
4
|
+
<%#= resource.errors.full_messages if resource.errors.any? %>
|
19
5
|
|
20
6
|
<% #mode container div with all data-* method to helper and change to block method %>
|
21
7
|
<div id="tabs-<%= resource_name %>" class="tabs" data-method="<%=resource.new_record? ? "POST" : "PUT" %>" data-tabs-url="<%=resource.new_record? ? lolita_resources_path : lolita_resource_path(:id=>resource.id)%>">
|
22
8
|
<% tabs.each do |tab| %>
|
23
9
|
<%= render_component :"lolita/tab", :display, :tab=>tab %>
|
24
10
|
<% end %>
|
25
|
-
</div>
|
26
|
-
|
11
|
+
</div>
|
@@ -22,7 +22,7 @@
|
|
22
22
|
<%= render_component :"lolita/shared", :header %>
|
23
23
|
<div id="main" role="main">
|
24
24
|
<%= render_component :"lolita/navigation",:display %>
|
25
|
-
<div id="content" class="<%=
|
25
|
+
<div id="content" class="<%= content_classes %>">
|
26
26
|
<%= yield %>
|
27
27
|
</div>
|
28
28
|
</div>
|
File without changes
|
data/config/locales/en.yml
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
Feature: Create pages
|
2
|
+
In order to manage content
|
3
|
+
As lolita user
|
4
|
+
I want to create posts
|
5
|
+
|
6
|
+
Scenario: List and create new with valid data
|
7
|
+
When I go to list
|
8
|
+
And I follow "Add new post"
|
9
|
+
And I fill in "Title" with "Lolita is nice"
|
10
|
+
When I press "Save" within ".save"
|
11
|
+
Then I should see "Successfully saved"
|
12
|
+
When I follow "Post"
|
13
|
+
#Then I should see "Lolita is nice"
|
14
|
+
|
15
|
+
Scenario: List and create new with invalid data
|
16
|
+
When I go to list
|
17
|
+
And I follow "Add new post"
|
18
|
+
When I press "Save" within ".save"
|
19
|
+
Then I should see "Save did not succeed"
|
20
|
+
When I follow "Post"
|
@@ -0,0 +1,219 @@
|
|
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
|
+
|
8
|
+
require 'uri'
|
9
|
+
require 'cgi'
|
10
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
|
11
|
+
|
12
|
+
module WithinHelpers
|
13
|
+
def with_scope(locator)
|
14
|
+
locator ? within(locator) { yield } : yield
|
15
|
+
end
|
16
|
+
end
|
17
|
+
World(WithinHelpers)
|
18
|
+
|
19
|
+
Given /^(?:|I )am on (.+)$/ do |page_name|
|
20
|
+
visit path_to(page_name)
|
21
|
+
end
|
22
|
+
|
23
|
+
When /^(?:|I )go to (.+)$/ do |page_name|
|
24
|
+
visit path_to(page_name)
|
25
|
+
end
|
26
|
+
|
27
|
+
When /^(?:|I )press "([^"]*)"(?: within "([^"]*)")?$/ do |button, selector|
|
28
|
+
with_scope(selector) do
|
29
|
+
click_button(button)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
When /^(?:|I )follow "([^"]*)"(?: within "([^"]*)")?$/ do |link, selector|
|
34
|
+
with_scope(selector) do
|
35
|
+
click_link(link)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
When /^(?:|I )fill in "([^"]*)" with "([^"]*)"(?: within "([^"]*)")?$/ do |field, value, selector|
|
40
|
+
with_scope(selector) do
|
41
|
+
fill_in(field, :with => value)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
When /^(?:|I )fill in "([^"]*)" for "([^"]*)"(?: within "([^"]*)")?$/ do |value, field, selector|
|
46
|
+
with_scope(selector) do
|
47
|
+
fill_in(field, :with => value)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Use this to fill in an entire form with data from a table. Example:
|
52
|
+
#
|
53
|
+
# When I fill in the following:
|
54
|
+
# | Account Number | 5002 |
|
55
|
+
# | Expiry date | 2009-11-01 |
|
56
|
+
# | Note | Nice guy |
|
57
|
+
# | Wants Email? | |
|
58
|
+
#
|
59
|
+
# TODO: Add support for checkbox, select og option
|
60
|
+
# based on naming conventions.
|
61
|
+
#
|
62
|
+
When /^(?:|I )fill in the following(?: within "([^"]*)")?:$/ do |selector, fields|
|
63
|
+
with_scope(selector) do
|
64
|
+
fields.rows_hash.each do |name, value|
|
65
|
+
When %{I fill in "#{name}" with "#{value}"}
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
When /^(?:|I )select "([^"]*)" from "([^"]*)"(?: within "([^"]*)")?$/ do |value, field, selector|
|
71
|
+
with_scope(selector) do
|
72
|
+
select(value, :from => field)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
When /^(?:|I )check "([^"]*)"(?: within "([^"]*)")?$/ do |field, selector|
|
77
|
+
with_scope(selector) do
|
78
|
+
check(field)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
When /^(?:|I )uncheck "([^"]*)"(?: within "([^"]*)")?$/ do |field, selector|
|
83
|
+
with_scope(selector) do
|
84
|
+
uncheck(field)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
When /^(?:|I )choose "([^"]*)"(?: within "([^"]*)")?$/ do |field, selector|
|
89
|
+
with_scope(selector) do
|
90
|
+
choose(field)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"(?: within "([^"]*)")?$/ do |path, field, selector|
|
95
|
+
with_scope(selector) do
|
96
|
+
attach_file(field, path)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
Then /^(?:|I )should see JSON:$/ do |expected_json|
|
101
|
+
require 'json'
|
102
|
+
expected = JSON.pretty_generate(JSON.parse(expected_json))
|
103
|
+
actual = JSON.pretty_generate(JSON.parse(response.body))
|
104
|
+
expected.should == actual
|
105
|
+
end
|
106
|
+
|
107
|
+
Then /^(?:|I )should see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selector|
|
108
|
+
with_scope(selector) do
|
109
|
+
if page.respond_to? :should
|
110
|
+
page.should have_content(text)
|
111
|
+
else
|
112
|
+
assert page.has_content?(text)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
Then /^(?:|I )should see \/([^\/]*)\/(?: within "([^"]*)")?$/ do |regexp, selector|
|
118
|
+
regexp = Regexp.new(regexp)
|
119
|
+
with_scope(selector) do
|
120
|
+
if page.respond_to? :should
|
121
|
+
page.should have_xpath('//*', :text => regexp)
|
122
|
+
else
|
123
|
+
assert page.has_xpath?('//*', :text => regexp)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
Then /^(?:|I )should not see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selector|
|
129
|
+
with_scope(selector) do
|
130
|
+
if page.respond_to? :should
|
131
|
+
page.should have_no_content(text)
|
132
|
+
else
|
133
|
+
assert page.has_no_content?(text)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
Then /^(?:|I )should not see \/([^\/]*)\/(?: within "([^"]*)")?$/ do |regexp, selector|
|
139
|
+
regexp = Regexp.new(regexp)
|
140
|
+
with_scope(selector) do
|
141
|
+
if page.respond_to? :should
|
142
|
+
page.should have_no_xpath('//*', :text => regexp)
|
143
|
+
else
|
144
|
+
assert page.has_no_xpath?('//*', :text => regexp)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
Then /^the "([^"]*)" field(?: within "([^"]*)")? should contain "([^"]*)"$/ do |field, selector, value|
|
150
|
+
with_scope(selector) do
|
151
|
+
field = find_field(field)
|
152
|
+
field_value = (field.tag_name == 'textarea') ? field.text : field.value
|
153
|
+
if field_value.respond_to? :should
|
154
|
+
field_value.should =~ /#{value}/
|
155
|
+
else
|
156
|
+
assert_match(/#{value}/, field_value)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
Then /^the "([^"]*)" field(?: within "([^"]*)")? should not contain "([^"]*)"$/ do |field, selector, value|
|
162
|
+
with_scope(selector) do
|
163
|
+
field = find_field(field)
|
164
|
+
field_value = (field.tag_name == 'textarea') ? field.text : field.value
|
165
|
+
if field_value.respond_to? :should_not
|
166
|
+
field_value.should_not =~ /#{value}/
|
167
|
+
else
|
168
|
+
assert_no_match(/#{value}/, field_value)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
Then /^the "([^"]*)" checkbox(?: within "([^"]*)")? should be checked$/ do |label, selector|
|
174
|
+
with_scope(selector) do
|
175
|
+
field_checked = find_field(label)['checked']
|
176
|
+
if field_checked.respond_to? :should
|
177
|
+
field_checked.should be_true
|
178
|
+
else
|
179
|
+
assert field_checked
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
Then /^the "([^"]*)" checkbox(?: within "([^"]*)")? should not be checked$/ do |label, selector|
|
185
|
+
with_scope(selector) do
|
186
|
+
field_checked = find_field(label)['checked']
|
187
|
+
if field_checked.respond_to? :should
|
188
|
+
field_checked.should be_false
|
189
|
+
else
|
190
|
+
assert !field_checked
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
Then /^(?:|I )should be on (.+)$/ do |page_name|
|
196
|
+
current_path = URI.parse(current_url).path
|
197
|
+
if current_path.respond_to? :should
|
198
|
+
current_path.should == path_to(page_name)
|
199
|
+
else
|
200
|
+
assert_equal path_to(page_name), current_path
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
Then /^(?:|I )should have the following query string:$/ do |expected_pairs|
|
205
|
+
query = URI.parse(current_url).query
|
206
|
+
actual_params = query ? CGI.parse(query) : {}
|
207
|
+
expected_params = {}
|
208
|
+
expected_pairs.rows_hash.each_pair{|k,v| expected_params[k] = v.split(',')}
|
209
|
+
|
210
|
+
if actual_params.respond_to? :should
|
211
|
+
actual_params.should == expected_params
|
212
|
+
else
|
213
|
+
assert_equal expected_params, actual_params
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
Then /^show me the page$/ do
|
218
|
+
save_and_open_page
|
219
|
+
end
|