qwester 0.0.1 → 0.0.2
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.
- data/README.rdoc +76 -2
- data/app/controllers/qwester/application_controller.rb +2 -0
- data/app/controllers/qwester/questionnaires_controller.rb +25 -0
- data/app/helpers/qwester/application_helper.rb +1 -0
- data/app/helpers/qwester/questionnaires_helper.rb +26 -0
- data/app/models/qwester/questionnaire.rb +5 -1
- data/app/views/qwester/questionnaires/index.html.erb +39 -0
- data/app/views/qwester/questionnaires/show.html.erb +32 -0
- data/config/routes.rb +9 -0
- data/lib/qwester.rb +1 -0
- data/lib/qwester/engine.rb +8 -0
- data/lib/qwester/version.rb +1 -1
- data/lib/rails/actionpack/lib/action_controller/base.rb +60 -0
- data/test/dummy/app/assets/javascripts/questionnaires.js +2 -0
- data/test/dummy/app/assets/stylesheets/questionnaires.css.scss +3 -0
- data/test/dummy/config/routes.rb +5 -1
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/seeds.rb +32 -0
- data/test/dummy/db/seeds/questions.yml +21 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +13216 -25038
- data/test/dummy/log/test.log +14515 -20692
- data/test/dummy/test/functional/qwester/questionnaires_controller_test.rb +132 -0
- data/test/dummy/test/unit/helpers/questionnaires_helper_test.rb +4 -0
- data/test/dummy/tmp/cache/assets/{CE4/280/sprockets%2F99d4bf693c83b5093ab8702160c1d6e5 → C67/1B0/sprockets%2F7929f8043d9664655de93105fb94d073} +0 -0
- data/test/dummy/tmp/cache/assets/{D64/6D0/sprockets%2Fefc35e335323b974c3e1bbbb13693ea4 → C90/A60/sprockets%2F92d28df70396f33d8875c241334d07d9} +0 -0
- data/test/dummy/tmp/cache/assets/C9C/330/sprockets%2Fd555282f7ba49f75897eb3f456426429 +0 -0
- data/test/dummy/tmp/cache/assets/CA0/7C0/sprockets%2F34d642456080359ef03f0b0c45c06c1f +0 -0
- data/test/dummy/tmp/cache/assets/{DA3/9B0/sprockets%2Fa2bdb6a97d41e3cca6465c59cd5929b5 → CB8/330/sprockets%2F0341626442591c9733ce395efe9ac1f7} +0 -0
- data/test/dummy/tmp/cache/assets/{D4F/930/sprockets%2F593ef7a6dd9e164ce9156637a079eba2 → CC0/940/sprockets%2F665007667cd89ce695ed096e8fe02012} +0 -0
- data/test/dummy/tmp/cache/assets/{D76/CB0/sprockets%2Fbcaf3567253694bc09a79858c7bdad2a → CD0/720/sprockets%2Fb4c23e656289757c727ade07856f9d97} +0 -0
- data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/{D69/E90/sprockets%2F14aed5aa2792db4162f05688f04dfa5e → CDE/C00/sprockets%2F770b464e29706b3da59850aa25b66f3b} +0 -0
- data/test/dummy/tmp/cache/assets/{D25/BA0/sprockets%2F0fa25091225221bc828ca4abb28cb5c8 → CE4/E40/sprockets%2F1884153b330fd109378f9a68c72fd5ab} +0 -0
- data/test/dummy/tmp/cache/assets/CE7/AC0/sprockets%2F82a9eee3fc6177e85610ca13415843e8 +0 -0
- data/test/dummy/tmp/cache/assets/CED/640/sprockets%2F11932203dc8ff571f5fe9c3877c654e2 +0 -0
- data/test/dummy/tmp/cache/assets/{D33/D50/sprockets%2Ff8d0dac22223755ab4bae6c44180e829 → CF2/CE0/sprockets%2F363d26884ffc3cc5cb862637a5878a37} +0 -0
- data/test/dummy/tmp/cache/assets/{DA9/B40/sprockets%2Ff028f8a00eb67fbe213ef8fce8c97218 → D05/C70/sprockets%2F9d533f6017de6ba71d441726cbbe3512} +0 -0
- data/test/dummy/tmp/cache/assets/{D3E/330/sprockets%2F45f2fada4467c9ac38a41d9463b822c4 → D08/4B0/sprockets%2F475b85667b4f5b8a94c601b3a0bca524} +0 -0
- data/test/dummy/tmp/cache/assets/D09/D00/sprockets%2F09b76d906d5c56b21b480e25da8b4c33 +0 -0
- data/test/dummy/tmp/cache/assets/D15/E80/sprockets%2F95d406e247e22d640eda395eee85b434 +0 -0
- data/test/dummy/tmp/cache/assets/D1C/640/sprockets%2Fbe2cd8e243f65972d888bf06170308df +0 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D38/540/sprockets%2F86e1ad844bc9df4491a2a52b870421db +0 -0
- data/test/dummy/tmp/cache/assets/{CC9/6B0/sprockets%2F3df521832967357b1c7b16678fc8e8f7 → D40/6C0/sprockets%2F24e5ceb7a2f5cc396c6818ea3014378c} +0 -0
- data/test/dummy/tmp/cache/assets/D42/090/sprockets%2F28f94a066ac6fc41e0a4fba7f9592425 +0 -0
- data/test/dummy/tmp/cache/assets/D45/BA0/sprockets%2F87390210ac34ef8cb15f2a6bd8f9e629 +0 -0
- data/test/dummy/tmp/cache/assets/{CD6/AE0/sprockets%2F18183d077906f0468bdaa021e5944daa → D46/E50/sprockets%2F59bdc649cc2025e9368b836afa5e0e71} +0 -0
- data/test/dummy/tmp/cache/assets/D48/640/sprockets%2F9f4f18d910b678b1d0777e04cdaf6f24 +0 -0
- data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/{D22/7F0/sprockets%2Fb0746263298bc88dffc3faa791d44786 → D4E/E80/sprockets%2F259284864ce9624a4ca1dcdd6a6e6d97} +0 -0
- data/test/dummy/tmp/cache/assets/D59/D70/sprockets%2Fed9f0de1b65ae8d7ef89087c83728461 +0 -0
- data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/{D9E/BC0/sprockets%2F92b1852c4b3d97cf5a18fb9b171cdc3d → D73/030/sprockets%2Fec32f7966e5226fbcb535608f007cafe} +0 -0
- data/test/dummy/tmp/cache/assets/{C98/130/sprockets%2Fac989787df92df5f053582229580052f → D73/D50/sprockets%2F46ac3525c44b3c55ed3167ef4fbf65d7} +0 -0
- data/test/dummy/tmp/cache/assets/D74/7A0/sprockets%2Fad303ebb30768ef3c4e4389f57b9c0e5 +0 -0
- data/test/dummy/tmp/cache/assets/{D1C/6A0/sprockets%2F39f774b8adbce198362541931e4e80fc → D7A/D30/sprockets%2F4978e5b6a5a739fd3690cfb2c51ef2a6} +0 -0
- data/test/dummy/tmp/cache/assets/D90/E60/sprockets%2F9700622adefb7a797da2210b9bb5ec1b +0 -0
- data/test/dummy/tmp/cache/assets/D93/4C0/sprockets%2F857ecd2092cee11f740b3cf2e373ad2a +0 -0
- data/test/dummy/tmp/cache/assets/D94/790/sprockets%2Fd78be002b446eb324b68bf26bb1b3f8d +0 -0
- data/test/dummy/tmp/cache/assets/{CF4/190/sprockets%2F15945979ce0f558e72219220cdf8e5ee → DA2/3C0/sprockets%2F55eea898441a3e4e23fcad8441efd62b} +0 -0
- data/test/dummy/tmp/cache/assets/DA5/250/sprockets%2Fe5799db33cbaf3d4a2b6c411ff266c99 +0 -0
- data/test/dummy/tmp/cache/assets/{D36/C80/sprockets%2Ff5ef17012cd57c01767028aba0593fcf → DA9/F30/sprockets%2F9d6c36f2ebbb896a06c90db6ab537c79} +0 -0
- data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/DDE/420/sprockets%2Ffb8b186d5bf0307f86f65fc787d2adeb +0 -0
- data/test/dummy/tmp/cache/assets/DE6/210/sprockets%2F00369690fd2d499feccfacf96993fbea +0 -0
- data/test/dummy/tmp/cache/assets/{C9F/BF0/sprockets%2F74327e193051ca314d7f40d949aa0f01 → DE9/440/sprockets%2F0aa6a60aaa31e9cbdf03ce68f81d0d73} +0 -0
- data/test/dummy/tmp/cache/assets/DEA/360/sprockets%2F0b336bfd9ee211df3dbca3532c3c80dd +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/{D6E/160/sprockets%2F589e06b575fdb89ccc10373f40ba2bf3 → E23/2D0/sprockets%2Fafbbca9eb07b028a50e7aa5df1647de7} +0 -0
- data/test/dummy/tmp/cache/assets/{D18/9A0/sprockets%2F790d9164fe7b9cb772271a0e2ddf2646 → E2B/010/sprockets%2F0f8d51e2f51ac49cdddf72cfbb92ab55} +0 -0
- data/test/dummy/tmp/cache/assets/{D6C/5B0/sprockets%2F4cd5cd94a5b8ce62e7635a63df0103e5 → E30/130/sprockets%2Ff79a4e4b9b2af4c1c8e00ecbffdd1685} +0 -0
- data/test/dummy/tmp/cache/assets/E82/AA0/sprockets%2F5c8e0d124c1f8ea2bfdabf41bfbcb88c +0 -0
- data/test/dummy/tmp/cache/sass/{ec74dbbd041d002f29da87d31c42c67a52577d7d → 03f4db846cef78021447876a632d2437876c53ab}/_base.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{ec74dbbd041d002f29da87d31c42c67a52577d7d → 03f4db846cef78021447876a632d2437876c53ab}/_forms.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{ec74dbbd041d002f29da87d31c42c67a52577d7d → 03f4db846cef78021447876a632d2437876c53ab}/_header.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{ec74dbbd041d002f29da87d31c42c67a52577d7d → 03f4db846cef78021447876a632d2437876c53ab}/_mixins.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{ec74dbbd041d002f29da87d31c42c67a52577d7d → 03f4db846cef78021447876a632d2437876c53ab}/_typography.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_button.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_clearfix.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_font-family.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_hide-text.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_html5-input-types.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_position.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_prefixer.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2abdd63474180b8efbb2fe4a96c7d4e58de1b07d → 1b4c399e94e33c2d8c56719f624c62f84617eebf}/_timing-functions.scssc +0 -0
- data/test/dummy/tmp/cache/sass/2fd9c76d84cefb666046113b053d85103e19230b/questionnaires.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_all.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_buttons.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_gradients.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_icons.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_reset.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_rounded.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_sections.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_shadows.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_typography.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_utilities.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{1b985f49f4ef70efe7765896dd6d11dc84e592e3 → 37555fe4a50b430f42594fe00cce2bf41e004bfd}/_variables.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_animation.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_appearance.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_background-image.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_background-size.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_background.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_border-image.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_border-radius.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_box-shadow.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_box-sizing.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_columns.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_flex-box.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_font-face.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_hidpi-media-query.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_image-rendering.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_inline-block.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_linear-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_perspective.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_radial-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_transform.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_transition.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d58df6bafe26696bc29be9546a2c3f69fc2cbc33 → 522ea017ee0dcd266f48f467e07bd4d362d197f5}/_user-select.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_batch_actions.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_blank_slates.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_breadcrumbs.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_buttons.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_columns.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_comments.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_date_picker.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_dropdown_menu.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_flash_messages.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_grid.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_links.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_pagination.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_panels.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_popovers.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_scopes.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_status_tags.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_table_tools.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{42367c0b8e97cd09844c3165386e8db541b5d479 → 5902fb287c7b2e24af77f1ac6dff5975daadf3ae}/_tables.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d883993f4a35b9fb9fb68f2951234bfae10b809e → 67b9d8586d02a4b8f4bd8611c6c2e298896cbb35}/_footer.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d883993f4a35b9fb9fb68f2951234bfae10b809e → 67b9d8586d02a4b8f4bd8611c6c2e298896cbb35}/_main_structure.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{d883993f4a35b9fb9fb68f2951234bfae10b809e → 67b9d8586d02a4b8f4bd8611c6c2e298896cbb35}/_title_bar.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{c7c7191f5bd579910d0a21a37cd1dab835baea9d → 76f791eeabd45b8ba449aea886b17e6a262986a9}/_dashboard.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{c7c7191f5bd579910d0a21a37cd1dab835baea9d → 76f791eeabd45b8ba449aea886b17e6a262986a9}/_logged_out.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_compact.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_deprecated-webkit-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_flex-grid.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_grid-width.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_linear-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_modular-scale.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_radial-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_render-gradients.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_tint-shade.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{2355fa6dab0aa429d9df289512dc0da905fd8dbf → 867d4aaa9f3a2d6fbc8d0650187cc14d2242d1b8}/_transition-property-name.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{6d829b1892146f93bc53d024914f97a49c36b400 → 8a4317f5bff37a3c37ac0fdf7f9e6fca7b6ef3d5}/_bourbon-deprecated-upcoming.scssc +0 -0
- data/test/dummy/tmp/cache/sass/{6d829b1892146f93bc53d024914f97a49c36b400 → 8a4317f5bff37a3c37ac0fdf7f9e6fca7b6ef3d5}/_bourbon.scssc +0 -0
- data/test/unit/qwester/questionnaire_test.rb +4 -0
- metadata +405 -404
- data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/link/NewGitGui.png +0 -0
- data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/original/NewGitGui.png +0 -0
- data/test/dummy/public/system/qwester/questionnaires/button_images/000/000/001/thumbnail/NewGitGui.png +0 -0
- data/test/dummy/tmp/cache/assets/C4C/010/sprockets%2F54b8f935fa0154a496735945134b201c +0 -0
- data/test/dummy/tmp/cache/assets/C6B/340/sprockets%2Fac675153e3c112d081881cb5b0193343 +0 -0
- data/test/dummy/tmp/cache/assets/CB3/400/sprockets%2F0778280cf7cd9842623b4a47c3636eb0 +0 -0
- data/test/dummy/tmp/cache/assets/CB3/7B0/sprockets%2F8acda6f91309162736a905e927b791b0 +0 -0
- data/test/dummy/tmp/cache/assets/CB7/210/sprockets%2Fd75d7926600f009b7bc12f299575af61 +0 -0
- data/test/dummy/tmp/cache/assets/CBE/9C0/sprockets%2F21d85716322c5b339f859cc7d9517b6e +0 -0
- data/test/dummy/tmp/cache/assets/CC9/FB0/sprockets%2F255d9f63b60b2f99705d9ece86410996 +0 -0
- data/test/dummy/tmp/cache/assets/CDB/040/sprockets%2Fc732474e67003a4eb840eb44c5ca9385 +0 -0
- data/test/dummy/tmp/cache/assets/D16/CB0/sprockets%2Fb0e226708d5f9958bbaf5639fd402e50 +0 -0
- data/test/dummy/tmp/cache/assets/D37/F40/sprockets%2F34ae0821bc15772a27ca08fc3682fe7d +0 -0
- data/test/dummy/tmp/cache/assets/D3F/EB0/sprockets%2Fad2888184b513b29cc27bda05be8c396 +0 -0
- data/test/dummy/tmp/cache/assets/D4A/310/sprockets%2Fdd19e98ed3ea33cd27397508b0e34e74 +0 -0
- data/test/dummy/tmp/cache/assets/D52/2B0/sprockets%2Fcaba6996d3b0ce9425a2d4918e6e8797 +0 -0
- data/test/dummy/tmp/cache/assets/D61/190/sprockets%2Faece940f39e2ac68033f05b15fe10c16 +0 -0
- data/test/dummy/tmp/cache/assets/D61/6B0/sprockets%2F5f51d0141dcc429477e6169aabb1f2ad +0 -0
- data/test/dummy/tmp/cache/assets/D63/760/sprockets%2F03bf27ec3f65ed19bc131123a59b3d6f +0 -0
- data/test/dummy/tmp/cache/assets/D66/3A0/sprockets%2F02491a6027da7d0caa9c2282fd3f7e6f +0 -0
- data/test/dummy/tmp/cache/assets/D81/D40/sprockets%2Faa5b982ce995ea3c817a93f8c847a52e +0 -0
- data/test/dummy/tmp/cache/assets/DB3/6A0/sprockets%2F5fbfb11cd54686a98ffe386339a9ddc4 +0 -0
- data/test/dummy/tmp/cache/assets/DDA/830/sprockets%2Fde697cb19a97c9cdda00773d54e43ded +0 -0
- data/test/dummy/tmp/cache/assets/DFD/E80/sprockets%2Fb6ba4f337e14c4942a8e68bfaed03bff +0 -0
- data/test/dummy/tmp/cache/assets/E03/CE0/sprockets%2Fee7fdb52ea0ff7e5426102ee68beeb47 +0 -0
- data/test/dummy/tmp/cache/assets/E31/7C0/sprockets%2F306cef7b76fd0633afd6eecde15d7ab7 +0 -0
- data/test/dummy/tmp/cache/sass/ec74dbbd041d002f29da87d31c42c67a52577d7d/print.css.scssc +0 -0
data/README.rdoc
CHANGED
|
@@ -1,12 +1,80 @@
|
|
|
1
1
|
= Qwester
|
|
2
2
|
|
|
3
|
+
A rails engine used to add questionnaires to rails applications
|
|
3
4
|
|
|
5
|
+
== Installation
|
|
6
|
+
|
|
7
|
+
Add this to your Gemfile
|
|
8
|
+
|
|
9
|
+
gem 'qwester'
|
|
10
|
+
|
|
11
|
+
=== Migrations
|
|
12
|
+
Qwester includes a set of migrations to build the database tables to match
|
|
13
|
+
qwester's models. To use these migrations within the host application, run
|
|
14
|
+
this rake task:
|
|
15
|
+
|
|
16
|
+
rake qwester:install:migrations
|
|
17
|
+
|
|
18
|
+
This will copy the migrations to the host application's db/migrate folder.
|
|
19
|
+
They will then be run next time the db:migrate task is run:
|
|
20
|
+
|
|
21
|
+
rake db:migrate
|
|
22
|
+
|
|
23
|
+
If you only wish to run the qwester migrations use a scope option:
|
|
24
|
+
|
|
25
|
+
rake db:migrate SCOPE=qwester
|
|
26
|
+
|
|
27
|
+
== Questionnaire
|
|
28
|
+
|
|
29
|
+
To create a new questionnaire, first create a set of questions that you
|
|
30
|
+
wish to appear within the questionnaire. Then create a questionnaire and
|
|
31
|
+
associate the questions with that questionnaire. Questions can be used in
|
|
32
|
+
multiple questionnaires, and can be ordered within each questionnaire. That
|
|
33
|
+
is, the first question in one questionnaire, can be displayed as the second
|
|
34
|
+
question in another questionnaire.
|
|
35
|
+
|
|
36
|
+
=== Questions and Answers
|
|
37
|
+
|
|
38
|
+
Each question has a number of answers associated with it. The default set of
|
|
39
|
+
answers is given by:
|
|
40
|
+
|
|
41
|
+
Qwester::Answer.standard_values
|
|
42
|
+
|
|
43
|
+
However, these can be modified and added to as you require. That is, each
|
|
44
|
+
question has a unique set of answers that can be modified as required.
|
|
45
|
+
|
|
46
|
+
=== Answer store
|
|
47
|
+
|
|
48
|
+
Submitted answers are stored in an AnswerStore object. On creation, each
|
|
49
|
+
answer_store is assigned a session_id that can then be used within session,
|
|
50
|
+
to identify the current user's answer_store. In this way, questionnaire
|
|
51
|
+
submissions can be tracked across multiple submissions.
|
|
52
|
+
|
|
53
|
+
=== Rule set
|
|
54
|
+
|
|
55
|
+
Groups of answers can be matched to rule sets using:
|
|
56
|
+
|
|
57
|
+
RuleSet.matching(answers)
|
|
58
|
+
|
|
59
|
+
which will return an array of rule sets that match those answers.
|
|
60
|
+
|
|
61
|
+
Each rule set has an url associated with it, and this url should lead a user
|
|
62
|
+
to a resource either within or outside the app.
|
|
63
|
+
|
|
64
|
+
RuleSet uses array_logic[http://github.com/reggieb/array_logic] to manage
|
|
65
|
+
the logic used to compare each rule set with the array of answers.
|
|
66
|
+
|
|
67
|
+
== Dummy
|
|
68
|
+
|
|
69
|
+
A test app is present within this engine, and provides an example of how
|
|
70
|
+
Qwester can be used within a Rails app. See test/dummy.
|
|
4
71
|
|
|
5
72
|
== Integration with ActiveAdmin
|
|
6
73
|
|
|
7
74
|
Qwester contains a set of ActiveAdmin registration files, that allow Qwester
|
|
8
75
|
models to be managed from within the parent app's active_admin space. Of course
|
|
9
|
-
ActiveAdmin needs to be installed and working in the parent rails application
|
|
76
|
+
ActiveAdmin needs to be installed and working in the parent rails application,
|
|
77
|
+
for this to work.
|
|
10
78
|
|
|
11
79
|
To use the Qwester ActiveAdmin registration files, add this to the active_admin
|
|
12
80
|
initializer in your application.
|
|
@@ -15,6 +83,12 @@ initializer in your application.
|
|
|
15
83
|
|
|
16
84
|
See test/dummy/config/initializers/active_admin.rb for an example
|
|
17
85
|
|
|
86
|
+
If you wish to over-ride some of Qwester's active admin registrations you will
|
|
87
|
+
need to reorder the active_admin load_paths. In this case, use this form of
|
|
88
|
+
the load_paths declaration:
|
|
89
|
+
|
|
90
|
+
config.load_paths = [Qwester.active_admin_load_path] + config.load_paths
|
|
91
|
+
|
|
18
92
|
Links to the admin pages for Qwester models will appear in a 'Qwester' sub-menu.
|
|
19
93
|
If you wish to change the name of the menu parent group, add this to an
|
|
20
94
|
initializer:
|
|
@@ -26,4 +100,4 @@ initializer:
|
|
|
26
100
|
|
|
27
101
|
Qwester.active_admin_menu = 'none'
|
|
28
102
|
|
|
29
|
-
See test/dummy/config/initializers/qwester.rb for an example
|
|
103
|
+
See test/dummy/config/initializers/qwester.rb for an example
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Qwester
|
|
2
|
+
class QuestionnairesController < ApplicationController
|
|
3
|
+
|
|
4
|
+
def index
|
|
5
|
+
@questionnaires = Qwester::Questionnaire.all
|
|
6
|
+
@rule_sets = matching_rule_sets
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def show
|
|
10
|
+
@questionnaire = Qwester::Questionnaire.find(params[:id])
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def update
|
|
14
|
+
@questionnaire = Qwester::Questionnaire.find(params[:id])
|
|
15
|
+
update_qwester_answer_store
|
|
16
|
+
redirect_to questionnaires_path
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def reset
|
|
20
|
+
get_qwester_answer_store
|
|
21
|
+
@qwester_answer_store.reset
|
|
22
|
+
redirect_to questionnaires_path
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Qwester
|
|
2
|
+
module QuestionnairesHelper
|
|
3
|
+
def qwester_answers_selection_list(question, list_class = 'qwester_options')
|
|
4
|
+
button_name = "question_id[#{question.id}][answer_ids][]"
|
|
5
|
+
answers = question.answers
|
|
6
|
+
buttons = answers.collect do |answer|
|
|
7
|
+
if question.multi_answer?
|
|
8
|
+
button = check_box_tag(button_name, answer.id, answer_checked(answer))
|
|
9
|
+
else
|
|
10
|
+
button = radio_button_tag(button_name, answer.id, answer_checked(answer))
|
|
11
|
+
end
|
|
12
|
+
content_tag('li', "#{button}#{answer.value}".html_safe)
|
|
13
|
+
end
|
|
14
|
+
content_tag('ul', buttons.join.html_safe, :class => list_class)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def answer_checked(answer)
|
|
18
|
+
answer_store_answers.include? answer
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def answer_store_answers
|
|
22
|
+
answer_store = get_qwester_answer_store
|
|
23
|
+
answer_store ? answer_store.answers : []
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -29,7 +29,11 @@ module Qwester
|
|
|
29
29
|
}
|
|
30
30
|
)
|
|
31
31
|
|
|
32
|
-
has_and_belongs_to_many
|
|
32
|
+
has_and_belongs_to_many(
|
|
33
|
+
:answer_stores,
|
|
34
|
+
:join_table => :qwester_answer_stores_questionnaires,
|
|
35
|
+
:uniq => true
|
|
36
|
+
)
|
|
33
37
|
|
|
34
38
|
validates :title, :presence => true
|
|
35
39
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<h1>Questionnaires</h1>
|
|
2
|
+
<div>
|
|
3
|
+
<% @questionnaires.each do |questionnaire| %>
|
|
4
|
+
|
|
5
|
+
<%= link_to(
|
|
6
|
+
image_tag(questionnaire.button_image.url(:link)),
|
|
7
|
+
questionnaire_path(questionnaire),
|
|
8
|
+
:class => 'image_link'
|
|
9
|
+
)
|
|
10
|
+
%>
|
|
11
|
+
<br>
|
|
12
|
+
<%= link_to(
|
|
13
|
+
questionnaire.title,
|
|
14
|
+
questionnaire_path(questionnaire),
|
|
15
|
+
:class => 'text_link'
|
|
16
|
+
)
|
|
17
|
+
%>
|
|
18
|
+
|
|
19
|
+
<% end %>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<% if @rule_sets.present? %>
|
|
23
|
+
<h2>Matching rule sets</h2>
|
|
24
|
+
<ul>
|
|
25
|
+
<% @rule_sets.each do |rule_set| %>
|
|
26
|
+
<li>
|
|
27
|
+
<%= rule_set.title %>:
|
|
28
|
+
<%= link_to(rule_set.link_text, rule_set.url) %>
|
|
29
|
+
</li>
|
|
30
|
+
<% end %>
|
|
31
|
+
</ul>
|
|
32
|
+
<% end %>
|
|
33
|
+
|
|
34
|
+
<%=
|
|
35
|
+
content_tag(
|
|
36
|
+
'p',
|
|
37
|
+
link_to('Clear answers and start again', reset_questionnaires_path)
|
|
38
|
+
) if @rule_sets.present?
|
|
39
|
+
%>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<h1><%= @questionnaire.title %></h1>
|
|
2
|
+
|
|
3
|
+
<% if @questionnaire.description.present? %>
|
|
4
|
+
<%= content_tag('div', sanitize(@questionnaire.description)) %>
|
|
5
|
+
<% else %>
|
|
6
|
+
<h2>Questions</h2>
|
|
7
|
+
<% end %>
|
|
8
|
+
|
|
9
|
+
<%= form_for(@questionnaire, :url => questionnaire_path(@questionnaire)) do |form| %>
|
|
10
|
+
<ul>
|
|
11
|
+
<%= form.fields_for(@questionnaire.answers, Qwester::Answer) do |answer_form| %>
|
|
12
|
+
<% @questionnaire.questions.each do |question| %>
|
|
13
|
+
<li>
|
|
14
|
+
<%= content_tag(
|
|
15
|
+
'span', question.title,
|
|
16
|
+
:class => "label#{' tooltip' if question.description?}",
|
|
17
|
+
:title => question.description
|
|
18
|
+
)
|
|
19
|
+
%>
|
|
20
|
+
|
|
21
|
+
<%= qwester_answers_selection_list(question) %>
|
|
22
|
+
|
|
23
|
+
</li>
|
|
24
|
+
<% end %>
|
|
25
|
+
<% end %>
|
|
26
|
+
</ul>
|
|
27
|
+
|
|
28
|
+
<p>
|
|
29
|
+
<%= form.submit('Submit') %>
|
|
30
|
+
<%= link_to('Back to the menu', questionnaires_path) %>
|
|
31
|
+
</p>
|
|
32
|
+
<% end %>
|
data/config/routes.rb
CHANGED
data/lib/qwester.rb
CHANGED
data/lib/qwester/engine.rb
CHANGED
data/lib/qwester/version.rb
CHANGED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
module ActionController
|
|
2
|
+
class Base < Metal
|
|
3
|
+
|
|
4
|
+
protected
|
|
5
|
+
def update_qwester_answer_store
|
|
6
|
+
get_qwester_answer_store(true)
|
|
7
|
+
add_answers_to_qwester_answer_store
|
|
8
|
+
add_questionnaire_to_qwester_answer_store
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def get_qwester_answer_store(create_new = false)
|
|
12
|
+
if session[:qwester_answer_store]
|
|
13
|
+
current_qwester_answer_store
|
|
14
|
+
elsif create_new
|
|
15
|
+
new_qwester_answer_store
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
helper_method :get_qwester_answer_store
|
|
19
|
+
|
|
20
|
+
def current_qwester_answer_store
|
|
21
|
+
@qwester_answer_store = Qwester::AnswerStore.find_by_session_id(session[:qwester_answer_store])
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def new_qwester_answer_store
|
|
25
|
+
set_qwester_answer_store Qwester::AnswerStore.create
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def set_qwester_answer_store(answer_store)
|
|
29
|
+
@qwester_answer_store = answer_store
|
|
30
|
+
session[:qwester_answer_store] = @qwester_answer_store.session_id
|
|
31
|
+
@qwester_answer_store
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def matching_rule_sets
|
|
35
|
+
if get_qwester_answer_store
|
|
36
|
+
Qwester::RuleSet.matching(@qwester_answer_store.answers)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# private
|
|
41
|
+
def add_answers_to_qwester_answer_store
|
|
42
|
+
answers = params[:question_id].values.collect do |question_values|
|
|
43
|
+
question_values[:answer_ids].collect{|id| Qwester::Answer.find(id)}
|
|
44
|
+
end
|
|
45
|
+
answers.flatten!
|
|
46
|
+
remove_answers_to_questions_answered_with(answers) if answers.present?
|
|
47
|
+
@qwester_answer_store.answers = (@qwester_answer_store.answers | answers)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def remove_answers_to_questions_answered_with(answers)
|
|
51
|
+
question_ids = answers.collect(&:question_id).uniq
|
|
52
|
+
answers_to_delete = @qwester_answer_store.answers.collect {|a| a if question_ids.include? a.question_id.to_i}.compact
|
|
53
|
+
@qwester_answer_store.answers.delete(answers_to_delete)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def add_questionnaire_to_qwester_answer_store
|
|
57
|
+
@qwester_answer_store.questionnaires << @questionnaire
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
data/test/dummy/config/routes.rb
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
Rails.application.routes.draw do
|
|
2
|
+
|
|
3
|
+
root :to => 'qwester/questionnaires#index'
|
|
2
4
|
|
|
3
5
|
if defined?(ActiveAdmin)
|
|
4
6
|
ActiveAdmin.routes(self)
|
|
5
7
|
devise_for :admin_users, ActiveAdmin::Devise.config
|
|
6
8
|
end
|
|
7
9
|
|
|
8
|
-
mount Qwester::Engine => "/
|
|
10
|
+
mount Qwester::Engine => "/questionnires"
|
|
11
|
+
|
|
12
|
+
|
|
9
13
|
end
|
|
Binary file
|
data/test/dummy/db/seeds.rb
CHANGED
|
@@ -3,6 +3,7 @@ Seeder = Dibber::Seeder
|
|
|
3
3
|
|
|
4
4
|
Seeder.seeds_path = "#{Rails.root}/db/seeds"
|
|
5
5
|
|
|
6
|
+
##############################
|
|
6
7
|
Seeder.monitor AdminUser
|
|
7
8
|
admin_email = 'admin@warwickshire.gov.uk'
|
|
8
9
|
password = 'changeme'
|
|
@@ -12,4 +13,35 @@ AdminUser.create!(
|
|
|
12
13
|
:password_confirmation => password
|
|
13
14
|
) unless AdminUser.exists?(:email => admin_email)
|
|
14
15
|
|
|
16
|
+
##############################
|
|
17
|
+
Seeder.monitor Qwester::Questionnaire
|
|
18
|
+
Seeder.monitor Qwester::Question
|
|
19
|
+
Seeder.monitor Qwester::Answer
|
|
20
|
+
Seeder.monitor Qwester::RuleSet
|
|
21
|
+
Seeder.process_log.start('first questionnaire questions', 'Qwester::Questionnaire.count > 0 ? Qwester::Questionnaire.first.questions.length : 0')
|
|
22
|
+
|
|
23
|
+
if Qwester::Questionnaire.count > 1
|
|
24
|
+
puts "**** Bypassing questionnaire, question, answer and rule set population"
|
|
25
|
+
puts "**** as there are already #{Qwester::Questionnaire.count} questionnaires in the system"
|
|
26
|
+
else
|
|
27
|
+
Seeder.objects_from('questions.yml').each do |holder, data|
|
|
28
|
+
questionnaire = Qwester::Questionnaire.find_or_create_by_title(data['title'])
|
|
29
|
+
|
|
30
|
+
if data['questions']
|
|
31
|
+
data['questions'].values.each do |question_data|
|
|
32
|
+
question = Qwester::Question.find_or_create_by_title(question_data['question'])
|
|
33
|
+
question.create_standard_answers
|
|
34
|
+
answer = question.answers.find_or_create_by_value('Yes')
|
|
35
|
+
rule_set = Qwester::RuleSet.find_or_initialize_by_title(question_data['title'])
|
|
36
|
+
rule_set.url = question_data['url']
|
|
37
|
+
rule_set.answers = [answer]
|
|
38
|
+
rule_set.save
|
|
39
|
+
questionnaire.questions << question
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
##############################
|
|
15
47
|
puts Seeder.report
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
Q1:
|
|
2
|
+
title: Blue
|
|
3
|
+
questions:
|
|
4
|
+
a:
|
|
5
|
+
title: Other blue favourites
|
|
6
|
+
question: Is blue your favourite colour?
|
|
7
|
+
url: https://www.google.co.uk/search?q=favourite+blue
|
|
8
|
+
|
|
9
|
+
b:
|
|
10
|
+
title:
|
|
11
|
+
question: Is the sky blue?
|
|
12
|
+
url: https://www.google.co.uk/search?q=sky+blue
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
Q2:
|
|
16
|
+
title: Qwester
|
|
17
|
+
questions:
|
|
18
|
+
a:
|
|
19
|
+
title: As you like qwester
|
|
20
|
+
question: Do you like qwester?
|
|
21
|
+
url: https://github.com/reggieb/qwester
|