constructor-cms 0.7.3 → 0.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/spec/dummy/app/views/html_templates/brand_search.haml +4 -0
- data/spec/dummy/db/schema.rb +140 -0
- data/spec/dummy/doc/README_FOR_APP +2 -0
- metadata +12 -313
- data/.gitignore +0 -14
- data/.rspec +0 -2
- data/.travis.yml +0 -13
- data/.yardopts +0 -9
- data/Gemfile +0 -31
- data/Guardfile +0 -15
- data/bin/rails +0 -8
- data/config.ru +0 -4
- data/constructor-cms.gemspec +0 -26
- data/core/app/assets/images/constructor_core/glyphicons-halflings-white.png +0 -0
- data/core/app/assets/images/constructor_core/glyphicons-halflings.png +0 -0
- data/core/app/assets/images/constructor_core/minus.gif +0 -0
- data/core/app/assets/images/constructor_core/plus.gif +0 -0
- data/core/app/assets/images/constructor_core/rss.png +0 -0
- data/core/app/assets/images/constructor_core/treeview-black-line.gif +0 -0
- data/core/app/assets/images/constructor_core/treeview-black.gif +0 -0
- data/core/app/assets/images/constructor_core/treeview-default-line.gif +0 -0
- data/core/app/assets/images/constructor_core/treeview-default.gif +0 -0
- data/core/app/assets/images/constructor_core/treeview-famfamfam-line.gif +0 -0
- data/core/app/assets/images/constructor_core/treeview-famfamfam.gif +0 -0
- data/core/app/assets/images/constructor_core/treeview-gray-line.gif +0 -0
- data/core/app/assets/images/constructor_core/treeview-gray.gif +0 -0
- data/core/app/assets/images/constructor_core/treeview-red-line.gif +0 -0
- data/core/app/assets/images/constructor_core/treeview-red.gif +0 -0
- data/core/app/assets/images/constructor_core/twitter.png +0 -0
- data/core/app/assets/images/constructor_core/widgets.png +0 -0
- data/core/app/assets/javascripts/constructor_core/application.js.coffee +0 -52
- data/core/app/assets/javascripts/constructor_core/bootstrap.js +0 -2276
- data/core/app/assets/javascripts/constructor_core/jquery.cookie.js +0 -92
- data/core/app/assets/javascripts/constructor_core/jquery_bundle.js.coffee +0 -3
- data/core/app/assets/javascripts/constructor_core/keys_snippet.js +0 -33
- data/core/app/assets/javascripts/constructor_core/retina.js +0 -148
- data/core/app/assets/javascripts/constructor_core/urlify.js +0 -82
- data/core/app/assets/stylesheets/constructor_core/application.css.scss +0 -3
- data/core/app/assets/stylesheets/constructor_core/main.css.scss +0 -229
- data/core/app/controllers/constructor_core/application_controller.rb +0 -32
- data/core/app/controllers/constructor_core/sessions_controller.rb +0 -15
- data/core/app/controllers/constructor_core/users_controller.rb +0 -24
- data/core/app/helpers/constructor_core/application_helper.rb +0 -9
- data/core/app/models/constructor_core/user.rb +0 -7
- data/core/app/views/constructor_core/devise/confirmations/new.html.haml +0 -10
- data/core/app/views/constructor_core/devise/mailer/confirmation_instructions.html.haml +0 -5
- data/core/app/views/constructor_core/devise/mailer/reset_password_instructions.html.haml +0 -7
- data/core/app/views/constructor_core/devise/mailer/unlock_instructions.html.haml +0 -5
- data/core/app/views/constructor_core/devise/passwords/edit.html.haml +0 -21
- data/core/app/views/constructor_core/devise/passwords/new.html.haml +0 -13
- data/core/app/views/constructor_core/devise/registrations/edit.html.haml +0 -28
- data/core/app/views/constructor_core/devise/registrations/new.html.haml +0 -20
- data/core/app/views/constructor_core/devise/shared/_links.html.haml +0 -19
- data/core/app/views/constructor_core/devise/unlocks/new.html.haml +0 -9
- data/core/app/views/constructor_core/sessions/new.html.haml +0 -22
- data/core/app/views/constructor_core/users/profile.haml +0 -16
- data/core/app/views/layouts/constructor_core/application_core.haml +0 -95
- data/core/config/environments/production.rb +0 -3
- data/core/config/initializers/devise.rb +0 -15
- data/core/config/locales/devise.en.yml +0 -56
- data/core/config/locales/devise.fr.yml +0 -74
- data/core/config/locales/devise.ru.yml +0 -52
- data/core/config/locales/en.yml +0 -15
- data/core/config/locales/fr.yml +0 -15
- data/core/config/locales/ru.yml +0 -27
- data/core/config/routes.rb +0 -18
- data/core/constructor-core.gemspec +0 -24
- data/core/db/migrate/1_devise_users.rb +0 -24
- data/core/db/migrate/2_add_default_user.rb +0 -9
- data/core/lib/constructor-core.rb +0 -25
- data/core/lib/constructor_core/engine.rb +0 -6
- data/core/lib/constructor_core/version.rb +0 -3
- data/core/vendor/assets/javascripts/.gitkeep +0 -0
- data/core/vendor/assets/javascripts/ckeditor/ckeditor.js +0 -913
- data/core/vendor/assets/javascripts/ckeditor/config.js +0 -38
- data/core/vendor/assets/javascripts/ckeditor/lang/en.js +0 -5
- data/core/vendor/assets/javascripts/ckeditor/lang/ru.js +0 -5
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt +0 -25
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/da.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/el.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/es.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/et.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/km.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/no.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/th.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +0 -7
- data/core/vendor/assets/javascripts/ckeditor/plugins/about/dialogs/about.js +0 -6
- data/core/vendor/assets/javascripts/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +0 -11
- data/core/vendor/assets/javascripts/ckeditor/plugins/colordialog/dialogs/colordialog.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/dialog/dialogDefinition.js +0 -4
- data/core/vendor/assets/javascripts/ckeditor/plugins/div/dialogs/div.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/fakeobjects/images/spacer.gif +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/find/dialogs/find.js +0 -24
- data/core/vendor/assets/javascripts/ckeditor/plugins/icons.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/iframe/dialogs/iframe.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/iframe/images/placeholder.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/image/dialogs/image.js +0 -43
- data/core/vendor/assets/javascripts/ckeditor/plugins/image/images/noimage.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/link/dialogs/anchor.js +0 -8
- data/core/vendor/assets/javascripts/ckeditor/plugins/link/dialogs/link.js +0 -36
- data/core/vendor/assets/javascripts/ckeditor/plugins/link/images/anchor.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/liststyle/dialogs/liststyle.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/magicline/images/icon.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/pastefromword/filter/default.js +0 -31
- data/core/vendor/assets/javascripts/ckeditor/plugins/preview/preview.html +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/scayt/LICENSE.md +0 -28
- data/core/vendor/assets/javascripts/ckeditor/plugins/scayt/README.md +0 -25
- data/core/vendor/assets/javascripts/ckeditor/plugins/scayt/dialogs/options.js +0 -20
- data/core/vendor/assets/javascripts/ckeditor/plugins/scayt/dialogs/toolbar.css +0 -71
- data/core/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_address.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_div.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_p.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt +0 -20
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ca.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/cs.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/cy.js +0 -14
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/de.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/el.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/en.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/eo.js +0 -12
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/et.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fa.js +0 -12
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fi.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/fr.js +0 -11
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/he.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/hr.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/it.js +0 -14
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ku.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/lv.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/nb.js +0 -11
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/nl.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/no.js +0 -11
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pl.js +0 -12
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js +0 -11
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sk.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/sv.js +0 -11
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/th.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/tr.js +0 -12
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/ug.js +0 -13
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js +0 -9
- data/core/vendor/assets/javascripts/ckeditor/plugins/specialchar/dialogs/specialchar.js +0 -14
- data/core/vendor/assets/javascripts/ckeditor/plugins/table/dialogs/table.js +0 -21
- data/core/vendor/assets/javascripts/ckeditor/plugins/tabletools/dialogs/tableCell.js +0 -16
- data/core/vendor/assets/javascripts/ckeditor/plugins/templates/dialogs/templates.css +0 -84
- data/core/vendor/assets/javascripts/ckeditor/plugins/templates/dialogs/templates.js +0 -10
- data/core/vendor/assets/javascripts/ckeditor/plugins/templates/templates/default.js +0 -6
- data/core/vendor/assets/javascripts/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
- data/core/vendor/assets/javascripts/ckeditor/plugins/wsc/LICENSE.md +0 -28
- data/core/vendor/assets/javascripts/ckeditor/plugins/wsc/README.md +0 -25
- data/core/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/ciframe.html +0 -49
- data/core/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +0 -52
- data/core/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc.css +0 -82
- data/core/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc.js +0 -11
- data/core/vendor/assets/javascripts/ckeditor/styles.js +0 -111
- data/core/vendor/assets/stylesheets/.gitkeep +0 -0
- data/core/vendor/assets/stylesheets/ckeditor/contents.css +0 -103
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/dialog.css +0 -5
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/dialog_ie.css +0 -5
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/dialog_ie7.css +0 -5
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/dialog_ie8.css +0 -5
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/dialog_opera.css +0 -5
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/editor.css +0 -5
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/editor_gecko.css +0 -5
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/editor_ie.css +0 -5
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/editor_ie7.css +0 -5
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/editor_ie8.css +0 -5
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/icons.png +0 -0
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/images/arrow.png +0 -0
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/images/close.png +0 -0
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/images/mini.png +0 -0
- data/core/vendor/assets/stylesheets/ckeditor/skins/moono/readme.md +0 -51
- data/pages/app/assets/images/constructor_pages/arrow_down.png +0 -0
- data/pages/app/assets/images/constructor_pages/arrow_up.png +0 -0
- data/pages/app/assets/images/constructor_pages/information.png +0 -0
- data/pages/app/assets/images/constructor_pages/page_white_edit.png +0 -0
- data/pages/app/assets/images/constructor_pages/photos.png +0 -0
- data/pages/app/assets/javascripts/constructor_pages/ajax_pages.js +0 -61
- data/pages/app/assets/javascripts/constructor_pages/jquery.history.js +0 -1
- data/pages/app/controllers/constructor_pages/application_controller.rb +0 -20
- data/pages/app/controllers/constructor_pages/fields_controller.rb +0 -70
- data/pages/app/controllers/constructor_pages/pages_controller.rb +0 -116
- data/pages/app/controllers/constructor_pages/templates_controller.rb +0 -62
- data/pages/app/helpers/constructor_pages/code_name_uniq.rb +0 -7
- data/pages/app/helpers/constructor_pages/fields_helper.rb +0 -18
- data/pages/app/helpers/constructor_pages/pages_helper.rb +0 -22
- data/pages/app/helpers/constructor_pages/templates_helper.rb +0 -13
- data/pages/app/helpers/constructor_pages/treeview_helper.rb +0 -33
- data/pages/app/models/constructor_pages/field.rb +0 -59
- data/pages/app/models/constructor_pages/page.rb +0 -171
- data/pages/app/models/constructor_pages/template.rb +0 -38
- data/pages/app/models/constructor_pages/types/boolean_type.rb +0 -11
- data/pages/app/models/constructor_pages/types/date_type.rb +0 -11
- data/pages/app/models/constructor_pages/types/float_type.rb +0 -11
- data/pages/app/models/constructor_pages/types/html_type.rb +0 -11
- data/pages/app/models/constructor_pages/types/image_type.rb +0 -19
- data/pages/app/models/constructor_pages/types/integer_type.rb +0 -11
- data/pages/app/models/constructor_pages/types/string_type.rb +0 -11
- data/pages/app/models/constructor_pages/types/text_type.rb +0 -11
- data/pages/app/views/constructor_pages/fields/_form.haml +0 -29
- data/pages/app/views/constructor_pages/fields/edit.haml +0 -6
- data/pages/app/views/constructor_pages/fields/new.haml +0 -6
- data/pages/app/views/constructor_pages/fields/types/_boolean.haml +0 -1
- data/pages/app/views/constructor_pages/fields/types/_date.haml +0 -1
- data/pages/app/views/constructor_pages/fields/types/_float.haml +0 -1
- data/pages/app/views/constructor_pages/fields/types/_html.haml +0 -1
- data/pages/app/views/constructor_pages/fields/types/_image.haml +0 -7
- data/pages/app/views/constructor_pages/fields/types/_integer.haml +0 -1
- data/pages/app/views/constructor_pages/fields/types/_string.haml +0 -1
- data/pages/app/views/constructor_pages/fields/types/_text.haml +0 -1
- data/pages/app/views/constructor_pages/pages/_breadcrumbs.haml +0 -7
- data/pages/app/views/constructor_pages/pages/_form.haml +0 -98
- data/pages/app/views/constructor_pages/pages/_menu.haml +0 -8
- data/pages/app/views/constructor_pages/pages/_submenu.haml +0 -6
- data/pages/app/views/constructor_pages/pages/edit.haml +0 -6
- data/pages/app/views/constructor_pages/pages/index.haml +0 -42
- data/pages/app/views/constructor_pages/pages/new.haml +0 -6
- data/pages/app/views/constructor_pages/pages/show.haml +0 -5
- data/pages/app/views/constructor_pages/partials/_arrow_buttons.haml +0 -6
- data/pages/app/views/constructor_pages/templates/_form.haml +0 -53
- data/pages/app/views/constructor_pages/templates/edit.haml +0 -6
- data/pages/app/views/constructor_pages/templates/index.haml +0 -24
- data/pages/app/views/constructor_pages/templates/new.haml +0 -6
- data/pages/config/initializers/dragonfly.rb +0 -9
- data/pages/config/locales/en.yml +0 -65
- data/pages/config/locales/fr.yml +0 -65
- data/pages/config/locales/ru.yml +0 -100
- data/pages/config/routes.rb +0 -26
- data/pages/constructor-pages.gemspec +0 -31
- data/pages/db/migrate/10_create_html_types.rb +0 -15
- data/pages/db/migrate/11_create_image_types.rb +0 -16
- data/pages/db/migrate/12_add_default_template.rb +0 -13
- data/pages/db/migrate/1_create_pages.rb +0 -27
- data/pages/db/migrate/2_create_templates.rb +0 -18
- data/pages/db/migrate/3_create_fields.rb +0 -17
- data/pages/db/migrate/4_create_string_types.rb +0 -15
- data/pages/db/migrate/5_create_float_types.rb +0 -15
- data/pages/db/migrate/6_create_boolean_types.rb +0 -15
- data/pages/db/migrate/7_create_integer_types.rb +0 -15
- data/pages/db/migrate/8_create_text_types.rb +0 -15
- data/pages/db/migrate/9_create_date_types.rb +0 -15
- data/pages/lib/constructor-pages.rb +0 -6
- data/pages/lib/constructor_pages/engine.rb +0 -6
- data/pages/public/hello.txt +0 -1
- data/pages/spec/features/constructor_pages/fields_spec.rb +0 -217
- data/pages/spec/features/constructor_pages/pages_spec.rb +0 -313
- data/pages/spec/features/constructor_pages/templates_spec.rb +0 -267
- data/pages/spec/helpers/constructor_pages/.keep +0 -0
- data/pages/spec/models/constructor_pages/field_spec.rb +0 -135
- data/pages/spec/models/constructor_pages/page_spec.rb +0 -420
- data/pages/spec/models/constructor_pages/template_spec.rb +0 -34
- data/pages/spec/models/constructor_pages/types/boolean_type_spec.rb +0 -21
- data/pages/spec/models/constructor_pages/types/date_type_spec.rb +0 -21
- data/pages/spec/models/constructor_pages/types/float_type_spec.rb +0 -21
- data/pages/spec/models/constructor_pages/types/html_type_spec.rb +0 -63
- data/pages/spec/models/constructor_pages/types/integer_type_spec.rb +0 -24
- data/pages/spec/models/constructor_pages/types/string_type_spec.rb +0 -21
- data/pages/spec/models/constructor_pages/types/text_type_spec.rb +0 -63
- data/pages/spec/routing/constructor_pages/.keep +0 -0
- data/tasks/constructor-cms_tasks.rake +0 -15
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module ConstructorPages
|
|
4
|
-
class FieldsController < ApplicationController
|
|
5
|
-
def new
|
|
6
|
-
@field = Field.new.tap {|f| f.template = Template.find(params[:template_id])}
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def edit
|
|
10
|
-
@field = Field.find(params[:id]).tap {|f| f.template = Template.find(params[:template_id])}
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def create
|
|
14
|
-
@field = Field.new field_params
|
|
15
|
-
|
|
16
|
-
if @field.save
|
|
17
|
-
redirect_to edit_template_path(@field.template_id), notice: t(:field_success_added, name: @field.name)
|
|
18
|
-
else
|
|
19
|
-
render action: :new, template_id: @field.template_id
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def update
|
|
24
|
-
@field = Field.find params[:id]
|
|
25
|
-
|
|
26
|
-
unless @field.type_value == params[:field][:type_value]
|
|
27
|
-
@field.type_class.where(field_id: @field.id).each do |field|
|
|
28
|
-
"constructor_pages/types/#{params[:field][:type_value]}_type".classify.constantize.new(
|
|
29
|
-
field_id: @field.id, page_id: field.page_id).tap {|f|
|
|
30
|
-
f.value = field.value unless [@field.type_value, params[:field][:type_value]].include?('image') and
|
|
31
|
-
(@field.type_value == 'string' and field.value.strip == '')
|
|
32
|
-
f.save; field.destroy
|
|
33
|
-
}
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
if @field.update field_params
|
|
38
|
-
redirect_to edit_template_url(@field.template.id), notice: t(:field_success_updated, name: @field.name)
|
|
39
|
-
else
|
|
40
|
-
render action: :edit
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def destroy
|
|
45
|
-
@field = Field.find(params[:id])
|
|
46
|
-
name, template = @field.name, @field.template.id
|
|
47
|
-
@field.destroy
|
|
48
|
-
redirect_to edit_template_url(template), notice: t(:field_success_removed, name: name)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
%w{up down}.each {|m| define_method "move_#{m}" do move_to m.to_sym end}
|
|
52
|
-
|
|
53
|
-
private
|
|
54
|
-
|
|
55
|
-
def field_params
|
|
56
|
-
params.require(:field).permit(
|
|
57
|
-
:name,
|
|
58
|
-
:code_name,
|
|
59
|
-
:template_id,
|
|
60
|
-
:type_value
|
|
61
|
-
)
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def move_to(to)
|
|
65
|
-
@field = Field.find(params[:id])
|
|
66
|
-
to == :up ? @field.move_higher : @field.move_lower
|
|
67
|
-
redirect_to :back, notice: t(:field_success_moved, name: @field.name)
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module ConstructorPages
|
|
4
|
-
class PagesController < ApplicationController
|
|
5
|
-
layout 'constructor_core/application_core', except: [:show, :search]
|
|
6
|
-
|
|
7
|
-
movable :page
|
|
8
|
-
|
|
9
|
-
before_filter {@roots, @template_exists = Page.roots, Template.count > 0}
|
|
10
|
-
|
|
11
|
-
def index
|
|
12
|
-
flash.notice = 'Create at least one template' unless @template_exists
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def new
|
|
16
|
-
redirect_to pages_path and return unless @template_exists
|
|
17
|
-
@page, @template_id, @multipart = Page.new, Template.first.id, false
|
|
18
|
-
@template_id = @page.parent.template.child.id if params[:page] and (@page.parent = Page.find(params[:page]))
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def show
|
|
22
|
-
@page = Page.find_by_request_or_first("/#{params[:all]}")
|
|
23
|
-
error_404 and return if @page.nil? or !@page.active?
|
|
24
|
-
redirect_to @page.link if @page.redirect?
|
|
25
|
-
_code_name = @page.template.code_name.to_s
|
|
26
|
-
instance_variable_set('@'+_code_name, @page)
|
|
27
|
-
respond_to do |format|
|
|
28
|
-
format.html { render template: "html_templates/#{_code_name}" }
|
|
29
|
-
format.json {
|
|
30
|
-
_template = render_to_string partial: "json_templates/#{_code_name}.json.erb", layout: false, locals: {_code_name.to_sym => @page, page: @page}
|
|
31
|
-
_js = render_to_string partial: "js_partials/#{_code_name}.js"
|
|
32
|
-
render json: @page, self_and_ancestors: @page.self_and_ancestors.map(&:id), template: _template.gsub(/\n/, '\\\\n'), js: _js
|
|
33
|
-
}
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def search
|
|
38
|
-
@page = Page.find_by_request_or_first("/#{params[:all]}")
|
|
39
|
-
|
|
40
|
-
_params = request.query_parameters
|
|
41
|
-
_params.each_pair {|k,v| v || (_params.delete(k); next)
|
|
42
|
-
_params[k] = v.numeric? ? v.to_f : (v.to_bool if v.boolean?)}
|
|
43
|
-
|
|
44
|
-
@pages = Page.in(@page).by(_params).search(params[:what_search])
|
|
45
|
-
|
|
46
|
-
instance_variable_set('@'+@page.template.code_name.pluralize, @pages)
|
|
47
|
-
instance_variable_set('@'+@page.template.code_name.singularize, @page)
|
|
48
|
-
render :template => "html_templates/#{@page.template.code_name}_search"
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def edit
|
|
52
|
-
@page = Page.find(params[:id])
|
|
53
|
-
@page.template ||= Template.first
|
|
54
|
-
@template_id = @page.template.id
|
|
55
|
-
@multipart = @page.fields.map{|f| f.type_value == 'image'}.include?(true) ? true : false
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def create
|
|
59
|
-
@page = Page.new page_params
|
|
60
|
-
|
|
61
|
-
if @page.save
|
|
62
|
-
redirect_to pages.pages_url, notice: t(:page_success_added, name: @page.name)
|
|
63
|
-
else
|
|
64
|
-
render action: :new
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def update
|
|
69
|
-
@page = Page.find params[:id]
|
|
70
|
-
|
|
71
|
-
_template_changed = @page.template.id != params[:page][:template_id].to_i
|
|
72
|
-
|
|
73
|
-
@page.remove_fields_values if _template_changed
|
|
74
|
-
|
|
75
|
-
if @page.update page_params
|
|
76
|
-
@page.create_fields_values if _template_changed
|
|
77
|
-
@page.update_fields_values params[:fields]
|
|
78
|
-
|
|
79
|
-
redirect_to pages_url, notice: t(:page_success_updated, name: @page.name)
|
|
80
|
-
else
|
|
81
|
-
render action: :edit
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def destroy
|
|
86
|
-
@page = Page.find(params[:id])
|
|
87
|
-
_name = @page.name
|
|
88
|
-
@page.destroy
|
|
89
|
-
redirect_to pages_url, notice: t(:page_success_removed, name: _name)
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
private
|
|
93
|
-
|
|
94
|
-
def page_params
|
|
95
|
-
params.require(:page).permit(
|
|
96
|
-
:active,
|
|
97
|
-
:name,
|
|
98
|
-
:url,
|
|
99
|
-
:title,
|
|
100
|
-
:keywords,
|
|
101
|
-
:description,
|
|
102
|
-
:auto_url,
|
|
103
|
-
:parent_id,
|
|
104
|
-
:template_id,
|
|
105
|
-
:in_nav,
|
|
106
|
-
:in_map,
|
|
107
|
-
:in_menu,
|
|
108
|
-
:link
|
|
109
|
-
)
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def error_404
|
|
113
|
-
render file: "#{Rails.root}/public/404", layout: false, status: 404
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
end
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module ConstructorPages
|
|
4
|
-
class TemplatesController < ApplicationController
|
|
5
|
-
include TreeviewHelper
|
|
6
|
-
|
|
7
|
-
movable :template
|
|
8
|
-
|
|
9
|
-
before_filter {@roots = Template.roots}
|
|
10
|
-
|
|
11
|
-
def new
|
|
12
|
-
@template = Template.new
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def edit
|
|
16
|
-
@template = Template.find(params[:id])
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def create
|
|
20
|
-
@template = Template.new template_params
|
|
21
|
-
|
|
22
|
-
if @template.save
|
|
23
|
-
redirect_to templates_url, notice: t(:template_success_added, name: @template.name)
|
|
24
|
-
else
|
|
25
|
-
render action: :new
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def update
|
|
30
|
-
@template = Template.find params[:id]
|
|
31
|
-
|
|
32
|
-
if @template.update template_params
|
|
33
|
-
redirect_to templates_url, notice: t(:template_success_updated, name: @template.name)
|
|
34
|
-
else
|
|
35
|
-
render action: :edit
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def destroy
|
|
40
|
-
@template = Template.find(params[:id])
|
|
41
|
-
|
|
42
|
-
if @template.pages.count == 0
|
|
43
|
-
name = @template.name
|
|
44
|
-
@template.destroy
|
|
45
|
-
redirect_to templates_url, notice: t(:template_success_removed, name: name)
|
|
46
|
-
else
|
|
47
|
-
redirect_to :back, alert: t(:template_error_delete_pages)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
private
|
|
52
|
-
|
|
53
|
-
def template_params
|
|
54
|
-
params.require(:template).permit(
|
|
55
|
-
:name,
|
|
56
|
-
:code_name,
|
|
57
|
-
:parent_id,
|
|
58
|
-
:child_id
|
|
59
|
-
)
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module ConstructorPages
|
|
4
|
-
module FieldsHelper
|
|
5
|
-
def types_value
|
|
6
|
-
[
|
|
7
|
-
[t(:string), "string"],
|
|
8
|
-
[t(:integer), "integer"],
|
|
9
|
-
[t(:float), "float"],
|
|
10
|
-
[t(:boolean), "boolean"],
|
|
11
|
-
[t(:date), "date"],
|
|
12
|
-
[t(:text), "text"],
|
|
13
|
-
[t(:html), "html"],
|
|
14
|
-
[t(:image), "image"]
|
|
15
|
-
]
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
module ConstructorPages
|
|
2
|
-
module PagesHelper
|
|
3
|
-
include TreeviewHelper
|
|
4
|
-
|
|
5
|
-
def for_select(roots)
|
|
6
|
-
result = []
|
|
7
|
-
roots.each do |r|
|
|
8
|
-
r.self_and_descendants.each {|i| result.push(["#{'--'*i.level} #{i.name}", i.id, {'data-full_url' => i.full_url}])}
|
|
9
|
-
end
|
|
10
|
-
result
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def templates
|
|
14
|
-
Template.all.map{|t| ["#{'--'*t.level} #{t.name}", t.id]}
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def image_tag_with_at2x(name_at_1x, options={})
|
|
18
|
-
name_at_2x = name_at_1x.gsub(%r{\.\w+$}, '@2x\0')
|
|
19
|
-
image_tag(name_at_1x, options.merge("data-at2x" => asset_path(name_at_2x)))
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
module ConstructorPages
|
|
2
|
-
module TemplatesHelper
|
|
3
|
-
include TreeviewHelper
|
|
4
|
-
|
|
5
|
-
def for_select(roots)
|
|
6
|
-
result = []
|
|
7
|
-
roots.each do |r|
|
|
8
|
-
r.self_and_descendants.each {|i| result.push(["#{'--'*i.level} #{i.name}", i.id])}
|
|
9
|
-
end
|
|
10
|
-
result
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
module ConstructorPages
|
|
2
|
-
module TreeviewHelper
|
|
3
|
-
def render_tree(roots, &block)
|
|
4
|
-
output = '<ul>'
|
|
5
|
-
|
|
6
|
-
roots.each do |root|
|
|
7
|
-
level, last = root.level, nil
|
|
8
|
-
|
|
9
|
-
root.self_and_descendants.each do |item|
|
|
10
|
-
if item.level > level
|
|
11
|
-
output += '<ul>'
|
|
12
|
-
elsif item.level < level
|
|
13
|
-
output += '</li>'
|
|
14
|
-
output += '</ul></li>' * (level-item.level)
|
|
15
|
-
elsif !item.root?
|
|
16
|
-
output += '</li>'
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
output += '<li>'
|
|
20
|
-
|
|
21
|
-
output += capture(item, &block)
|
|
22
|
-
|
|
23
|
-
level, last = item.level, item
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
output += '</li>'
|
|
27
|
-
output += '</ul></li>' * last.level
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
output.html_safe
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module ConstructorPages
|
|
4
|
-
# Field model. Fields allows to add custom fields for template.
|
|
5
|
-
# Each field has type of value such as float, integer, string...
|
|
6
|
-
class Field < ActiveRecord::Base
|
|
7
|
-
# Adding code_name_uniqueness method
|
|
8
|
-
include CodeNameUniq
|
|
9
|
-
|
|
10
|
-
# Array of available field types
|
|
11
|
-
TYPES = %w{string integer float boolean text date html image}.tap {|_t|
|
|
12
|
-
_t.each {|t| class_eval %{has_many :#{t}_types, dependent: :destroy, class_name: 'Types::#{t.titleize}Type'}}}
|
|
13
|
-
|
|
14
|
-
validates_presence_of :name
|
|
15
|
-
validates_uniqueness_of :code_name, scope: :template_id
|
|
16
|
-
validate :code_name_uniqueness
|
|
17
|
-
|
|
18
|
-
after_create :create_page_fields
|
|
19
|
-
after_destroy :destroy_all_page_fields
|
|
20
|
-
|
|
21
|
-
has_many :pages, through: :template
|
|
22
|
-
belongs_to :template
|
|
23
|
-
|
|
24
|
-
acts_as_list scope: :template_id
|
|
25
|
-
default_scope -> { order :position }
|
|
26
|
-
|
|
27
|
-
# Return constant of model type_value
|
|
28
|
-
def type_class; "constructor_pages/types/#{type_value}_type".classify.constantize end
|
|
29
|
-
|
|
30
|
-
# Return object of type_value by page
|
|
31
|
-
def find_type_object(page); type_class.find_by(field_id: id, page_id: page.id) end
|
|
32
|
-
|
|
33
|
-
# Create object of type_value by page
|
|
34
|
-
def create_type_object(page); type_class.create(field_id: id, page_id: page.id) end
|
|
35
|
-
|
|
36
|
-
# Remove all type_fields values for specified page
|
|
37
|
-
def remove_type_object(page); find_type_object(page).destroy end
|
|
38
|
-
|
|
39
|
-
# Get value from type_field for specified page
|
|
40
|
-
def get_value_for(page); find_type_object(page).tap {|t| return t && t.value} end
|
|
41
|
-
|
|
42
|
-
# Set value type_field for specified page
|
|
43
|
-
def set_value_for(page, value); find_type_object(page).tap {|t| t || return; t.update value: value} end
|
|
44
|
-
|
|
45
|
-
private
|
|
46
|
-
|
|
47
|
-
# Check if there is code_name in template branch
|
|
48
|
-
def check_code_name(code_name)
|
|
49
|
-
[code_name.pluralize, code_name.singularize].each {|name|
|
|
50
|
-
%w{self_and_ancestors descendants}.each {|m|
|
|
51
|
-
return false if template.send(m).map(&:code_name).include?(name)}}
|
|
52
|
-
true
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Create and destroy page fields
|
|
56
|
-
%w{create destroy_all}.each {|m| class_eval %{
|
|
57
|
-
def #{m}_page_fields; template.pages.each {|page| type_class.#{m} page_id: page.id, field_id: id} end }}
|
|
58
|
-
end
|
|
59
|
-
end
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module ConstructorPages
|
|
4
|
-
# Page model. Pages are core for company websites, blogs etc.
|
|
5
|
-
class Page < ActiveRecord::Base
|
|
6
|
-
# Adding has_many for all field types
|
|
7
|
-
Field::TYPES.each do |t|
|
|
8
|
-
class_eval %{has_many :#{t}_types, dependent: :destroy, class_name: 'Types::#{t.titleize}Type'}
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
has_many :fields, through: :template
|
|
12
|
-
belongs_to :template
|
|
13
|
-
|
|
14
|
-
default_scope -> { order :lft }
|
|
15
|
-
|
|
16
|
-
validate :template_check
|
|
17
|
-
|
|
18
|
-
before_save :friendly_url, :template_assign, :full_url_update
|
|
19
|
-
after_update :descendants_update
|
|
20
|
-
after_create :create_fields_values
|
|
21
|
-
|
|
22
|
-
acts_as_nested_set
|
|
23
|
-
|
|
24
|
-
class << self
|
|
25
|
-
# Used for find page by request. It return first page if no request given or request is home page
|
|
26
|
-
# @param request for example <tt>'/conditioners/split-systems/zanussi'</tt>
|
|
27
|
-
def find_by_request_or_first(request = nil)
|
|
28
|
-
request == nil || '/' ? Page.first : Page.find_by(full_url: request)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Generate full_url from parent id and url
|
|
32
|
-
# @param parent_id integer
|
|
33
|
-
# @param url should looks like <tt>'hello-world-page'</tt> without leading slash
|
|
34
|
-
def full_url_generate(parent_id, url = '')
|
|
35
|
-
'/' + Page.find(parent_id).self_and_ancestors.map(&:url).append(url).join('/')
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# Check code_name for field and template.
|
|
39
|
-
# When missing method Page find field or page in branch with plural and singular code_name so
|
|
40
|
-
# field and template code_name should be uniqueness for page methods
|
|
41
|
-
def check_code_name(code_name)
|
|
42
|
-
[code_name, code_name.pluralize, code_name.singularize].each {|name|
|
|
43
|
-
return false if Page.instance_methods.include?(name.to_sym)}
|
|
44
|
-
true
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def search(what_search = nil)
|
|
48
|
-
(@where_search.is_a?(String) ? Page.find_by(full_url: @where_search) : @where_search)
|
|
49
|
-
.tap {|p| @result = @where_search ? p ? p.descendants : [] : Page.all }
|
|
50
|
-
what_search && Template.find_by(code_name: what_search.to_s.singularize.downcase)
|
|
51
|
-
.tap {|t| @result = t ? @result.where(template: t) : [] }
|
|
52
|
-
@params_search && @params_search.each_pair {|k,v| @result = @result.select {|p| p.send(k) == v}}
|
|
53
|
-
@where_search = @params_search = nil
|
|
54
|
-
@result
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def in(where_search = nil); tap {@where_search = where_search} end
|
|
58
|
-
def by(params_search = nil); tap {@params_search = params_search} end
|
|
59
|
-
|
|
60
|
-
def search_in(where_search = nil); self.in(where_search).search end
|
|
61
|
-
def search_by(params_search = nil); self.by(params_search).search end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def search(what_search = nil); Page.in(self).search(what_search) end
|
|
65
|
-
def by(params_search = nil); Page.by(params_search); self end
|
|
66
|
-
def search_by(params_search = nil); Page.by(params_search).in(self).search end
|
|
67
|
-
|
|
68
|
-
# Get field by code_name
|
|
69
|
-
def field(code_name)
|
|
70
|
-
Field.find_by code_name: code_name, template_id: template_id
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# Get value of field by code_name
|
|
74
|
-
def get_field_value(code_name)
|
|
75
|
-
field(code_name).tap {|f| return f.get_value_for(self) if f}
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
# Set value of field by code_name and value
|
|
79
|
-
def set_field_value(code_name, value)
|
|
80
|
-
field(code_name).tap {|f| f.set_value_for(self, value) if f}
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
# Update all fields values with given params.
|
|
84
|
-
# @param params should looks like <tt>{price: 500, content: 'Hello'}</tt>
|
|
85
|
-
# @param reset_booleans reset all boolean fields to false before assign params
|
|
86
|
-
def update_fields_values(params, reset_booleans = true)
|
|
87
|
-
params || return
|
|
88
|
-
|
|
89
|
-
fields.each {|f| f.find_type_object(self).tap {|t| t || break
|
|
90
|
-
t.value = 0 if f.type_value == 'boolean' && reset_booleans
|
|
91
|
-
params[f.code_name.to_sym].tap {|v| v && t.value = v}
|
|
92
|
-
t.save }}
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
# Create fields values
|
|
96
|
-
def create_fields_values; fields.each {|f| f.create_type_object self} end
|
|
97
|
-
|
|
98
|
-
# Remove all fields values
|
|
99
|
-
def remove_fields_values; fields.each {|f| f.remove_type_object self} end
|
|
100
|
-
|
|
101
|
-
# Search page by template code_name in same branch of pages and templates.
|
|
102
|
-
# It allows to call page.category.brand.series.model etc.
|
|
103
|
-
#
|
|
104
|
-
# Return one page if founded in ancestors,
|
|
105
|
-
# and return array of pages if founded in descendants
|
|
106
|
-
#
|
|
107
|
-
# It determines if code_name is singular or nor
|
|
108
|
-
# @param cname template code name
|
|
109
|
-
def find_page_in_branch(cname)
|
|
110
|
-
Template.find_by(code_name: cname.singularize).tap {|t| t || return
|
|
111
|
-
(descendants.where(template_id: t.id) if cname == cname.pluralize).tap {|r| r ||= []
|
|
112
|
-
return r.empty? ? ancestors.find_by(template_id: t.id) : r}}
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
alias_method :find_pages_in_branch, :find_page_in_branch
|
|
116
|
-
|
|
117
|
-
def published?; active end
|
|
118
|
-
|
|
119
|
-
alias_method :active?, :published?
|
|
120
|
-
|
|
121
|
-
# Returns page hash attributes with fields.
|
|
122
|
-
#
|
|
123
|
-
# Default attributes are name and title. Options param allows to add more.
|
|
124
|
-
# @param options default merge name and title page attributes
|
|
125
|
-
def as_json(options = {})
|
|
126
|
-
{name: self.name, title: self.title}.merge(options).tap do |options|
|
|
127
|
-
fields.each {|f| options.merge!({f.code_name.to_sym => f.get_value_for(self)})}
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
# Check if link specified
|
|
132
|
-
def redirect?; url != link && !link.empty? end
|
|
133
|
-
|
|
134
|
-
# When method missing it get/set field value or get page in branch
|
|
135
|
-
#
|
|
136
|
-
# Examples:
|
|
137
|
-
# page.content = 'Hello world'
|
|
138
|
-
# puts page.price
|
|
139
|
-
# page.brand.models.each do...
|
|
140
|
-
def method_missing(name, *args, &block)
|
|
141
|
-
super && return if new_record?
|
|
142
|
-
name = name.to_s
|
|
143
|
-
name[-1] == '=' ? set_field_value(name[0..-2], args[0]) : get_field_value(name) || find_pages_in_branch(name)
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
private
|
|
147
|
-
|
|
148
|
-
# if url has been changed by manually or url is empty
|
|
149
|
-
def friendly_url
|
|
150
|
-
self.url = ((auto_url || url.empty?) ? translit(name) : url).parameterize
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
# TODO: add more languages
|
|
154
|
-
# translit to english
|
|
155
|
-
def translit(str); Russian.translit(str) end
|
|
156
|
-
|
|
157
|
-
# Page is not valid if there is no template
|
|
158
|
-
def template_check; errors.add_on_empty(:template_id) if Template.count == 0 end
|
|
159
|
-
|
|
160
|
-
# If template_id is nil then get first template
|
|
161
|
-
def template_assign; self.template_id = Template.first.id unless template_id end
|
|
162
|
-
|
|
163
|
-
# Update full_url
|
|
164
|
-
def full_url_update
|
|
165
|
-
self.full_url = (parent_id ? Page.full_url_generate(parent_id, url) : '/' + url)
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
# Reload all descendants
|
|
169
|
-
def descendants_update; descendants.map(&:save) end
|
|
170
|
-
end
|
|
171
|
-
end
|