compartment 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +24 -0
- data/Rakefile +34 -0
- data/app/assets/javascripts/compartment/application.js +24 -0
- data/app/assets/javascripts/compartment/collections/content_block_types.js.coffee +5 -0
- data/app/assets/javascripts/compartment/collections/content_blocks.js.coffee +12 -0
- data/app/assets/javascripts/compartment/compartment.js.coffee +12 -0
- data/app/assets/javascripts/compartment/modals.js.coffee +49 -0
- data/app/assets/javascripts/compartment/models/content_area.js.coffee +12 -0
- data/app/assets/javascripts/compartment/models/content_block.js.coffee +1 -0
- data/app/assets/javascripts/compartment/models/content_block_type.js.coffee +1 -0
- data/app/assets/javascripts/compartment/models/page.js.coffee +36 -0
- data/app/assets/javascripts/compartment/routers/default.js.coffee +13 -0
- data/app/assets/javascripts/compartment/views/content_area.js.coffee +63 -0
- data/app/assets/javascripts/compartment/views/content_block.js.coffee +61 -0
- data/app/assets/javascripts/compartment/views/content_span.js.coffee +61 -0
- data/app/assets/javascripts/compartment/views/modal.js.coffee +42 -0
- data/app/assets/javascripts/compartment/views/modals/new_content_block.js.coffee +20 -0
- data/app/assets/javascripts/compartment/views/modals/new_page.js.coffee +3 -0
- data/app/assets/javascripts/compartment/views/modals/old_modal.js.coffee +72 -0
- data/app/assets/javascripts/compartment/views/page.js.coffee +14 -0
- data/app/assets/javascripts/compartment/views/page_toolbar.js.coffee +19 -0
- data/app/assets/stylesheets/compartment/admin-styles.sass +6 -0
- data/app/assets/stylesheets/compartment/forms.sass +118 -0
- data/app/assets/stylesheets/compartment/frontend-styles.sass +64 -0
- data/app/assets/stylesheets/compartment/modals.sass +21 -0
- data/app/assets/stylesheets/compartment/page_toolbar.sass +51 -0
- data/app/assets/templates/compartment/add_content_button.jst.eco +3 -0
- data/app/assets/templates/compartment/content_blocks/actions.jst.eco +6 -0
- data/app/assets/templates/compartment/content_blocks/edit.jst.ejs +8 -0
- data/app/assets/templates/compartment/content_blocks/new.jst.eco +6 -0
- data/app/assets/templates/compartment/content_blocks/show.jst.ejs +8 -0
- data/app/assets/templates/compartment/modals/new_content_block.jst.eco +12 -0
- data/app/assets/templates/compartment/modals/new_page.jst.eco +11 -0
- data/app/assets/templates/compartment/modals/sign_up_form.jst.eco +27 -0
- data/app/assets/templates/compartment/page_toolbar.jst.eco +6 -0
- data/app/controllers/compartment/admin/account_controller.rb +12 -0
- data/app/controllers/compartment/admin/application_controller.rb +27 -0
- data/app/controllers/compartment/admin/content_block_types_controller.rb +14 -0
- data/app/controllers/compartment/admin/content_blocks_controller.rb +68 -0
- data/app/controllers/compartment/admin/dashboard_controller.rb +12 -0
- data/app/controllers/compartment/admin/pages_controller.rb +98 -0
- data/app/controllers/compartment/admin/sessions_controller.rb +34 -0
- data/app/controllers/compartment/admin/settings_controller.rb +13 -0
- data/app/controllers/compartment/admin/sites_controller.rb +89 -0
- data/app/controllers/compartment/admin/users_controller.rb +89 -0
- data/app/controllers/compartment/application_controller.rb +16 -0
- data/app/controllers/compartment/pages_controller.rb +17 -0
- data/app/controllers/compartment/theme_assets_controller.rb +12 -0
- data/app/helpers/compartment/application_helper.rb +12 -0
- data/app/helpers/compartment/pages_helper.rb +93 -0
- data/app/models/compartment/content_block.rb +14 -0
- data/app/models/compartment/page.rb +14 -0
- data/app/models/compartment/site.rb +14 -0
- data/app/models/compartment/theme.rb +41 -0
- data/app/models/compartment/user.rb +8 -0
- data/app/themes/default/images/background_body.jpg +0 -0
- data/app/themes/default/images/background_header.jpg +0 -0
- data/app/themes/default/images/favicon.ico +0 -0
- data/app/themes/default/images/image.jpg +0 -0
- data/app/themes/default/info.rb +4 -0
- data/app/themes/default/stylesheets/styles.css +209 -0
- data/app/themes/default/templates/error_404.html +1 -0
- data/app/themes/default/templates/error_500.html +1 -0
- data/app/themes/default/templates/one_column.erb +63 -0
- data/app/themes/default/templates/two_column.erb +70 -0
- data/app/views/compartment/admin/account/show.html.erb +1 -0
- data/app/views/compartment/admin/content_blocks/_form.html.erb +22 -0
- data/app/views/compartment/admin/content_blocks/edit.html.erb +6 -0
- data/app/views/compartment/admin/content_blocks/index.html.erb +25 -0
- data/app/views/compartment/admin/content_blocks/new.html.erb +5 -0
- data/app/views/compartment/admin/content_blocks/show.html.erb +15 -0
- data/app/views/compartment/admin/dashboard/index.html.erb +1 -0
- data/app/views/compartment/admin/pages/_form.html.erb +29 -0
- data/app/views/compartment/admin/pages/edit.html.erb +6 -0
- data/app/views/compartment/admin/pages/index.html.erb +7 -0
- data/app/views/compartment/admin/pages/new.html.erb +4 -0
- data/app/views/compartment/admin/pages/show.html.erb +25 -0
- data/app/views/compartment/admin/pages/toolbar.html.erb +56 -0
- data/app/views/compartment/admin/sessions/new.html.erb +19 -0
- data/app/views/compartment/admin/settings/index.html.erb +3 -0
- data/app/views/compartment/admin/sites/_form.html.erb +21 -0
- data/app/views/compartment/admin/sites/edit.html.erb +6 -0
- data/app/views/compartment/admin/sites/index.html.erb +23 -0
- data/app/views/compartment/admin/sites/new.html.erb +5 -0
- data/app/views/compartment/admin/sites/show.html.erb +10 -0
- data/app/views/compartment/admin/users/_form.html.erb +29 -0
- data/app/views/compartment/admin/users/edit.html.erb +6 -0
- data/app/views/compartment/admin/users/index.html.erb +24 -0
- data/app/views/compartment/admin/users/new.html.erb +5 -0
- data/app/views/compartment/admin/users/show.html.erb +15 -0
- data/app/views/compartment/errors/page_not_found.html.erb +1 -0
- data/app/views/compartment/errors/unknown_site.html.erb +1 -0
- data/app/views/layouts/compartment/application.html.erb +41 -0
- data/app/views/layouts/compartment/authentication.html.erb +45 -0
- data/config/cucumber.yml +8 -0
- data/config/routes.rb +25 -0
- data/db/migrate/20121208061936_create_compartment_sites.rb +9 -0
- data/db/migrate/20121208063802_create_compartment_pages.rb +13 -0
- data/db/migrate/20121209214222_create_compartment_content_blocks.rb +12 -0
- data/db/migrate/20121209223603_create_compartment_themes.rb +11 -0
- data/db/migrate/20121214060141_create_compartment_users.rb +10 -0
- data/lib/compartment.rb +13 -0
- data/lib/compartment/config.rb +20 -0
- data/lib/compartment/content_block_dsl.rb +25 -0
- data/lib/compartment/engine.rb +21 -0
- data/lib/compartment/version.rb +3 -0
- data/lib/tasks/compartment_tasks.rake +21 -0
- data/spec/controllers/compartment/admin/content_blocks_controller_spec_autogenerated.rb +164 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +59 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +60 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/lib/tasks/cucumber.rake +65 -0
- data/spec/dummy/log/development.log +4127 -0
- data/spec/dummy/log/test.log +93426 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/tmp/cache/assets/C3E/240/sprockets%2F055c2b9605c134d2066c606674f01d05 +0 -0
- data/spec/dummy/tmp/cache/assets/C47/120/sprockets%2F185f0b2e6c231347125613b2407ff686 +0 -0
- data/spec/dummy/tmp/cache/assets/C50/DA0/sprockets%2F456eeb2d37782046ba6c030836643476 +0 -0
- data/spec/dummy/tmp/cache/assets/C52/1C0/sprockets%2Fa78612d84335327b0983c4dc225d1668 +0 -0
- data/spec/dummy/tmp/cache/assets/C76/0F0/sprockets%2F75046a33c909e2b406a3a5929a633a09 +0 -0
- data/spec/dummy/tmp/cache/assets/C77/980/sprockets%2F360cfd80942c2190cb67268b1630a484 +0 -0
- data/spec/dummy/tmp/cache/assets/C8E/6D0/sprockets%2F9e0fc4406af59e36f7d9670453801932 +0 -0
- data/spec/dummy/tmp/cache/assets/C8F/840/sprockets%2F5e5130c2ae14217f1530b406b32a832f +0 -0
- data/spec/dummy/tmp/cache/assets/C9D/370/sprockets%2F6191b8cb150830acc70b897012d4008e +0 -0
- data/spec/dummy/tmp/cache/assets/CA0/C60/sprockets%2Fa16082a8613c43441e0d26b0945aec95 +0 -0
- data/spec/dummy/tmp/cache/assets/CA1/3D0/sprockets%2Fb60224c86974950f832ac26115bbec00 +0 -0
- data/spec/dummy/tmp/cache/assets/CA1/A40/sprockets%2F446b1711d42cc93f65a4a7d22564b035 +0 -0
- data/spec/dummy/tmp/cache/assets/CA7/750/sprockets%2F412bb188276e8969c51469a0ab010a8a +0 -0
- data/spec/dummy/tmp/cache/assets/CA8/250/sprockets%2F5721e7a044aa7244f3f42139ed26385b +0 -0
- data/spec/dummy/tmp/cache/assets/CA9/750/sprockets%2F81a628a4623319f364f30e31e9e3eb22 +0 -0
- data/spec/dummy/tmp/cache/assets/CAC/7A0/sprockets%2Fd1db034053f1908095360ef27668c7da +0 -0
- data/spec/dummy/tmp/cache/assets/CAF/5C0/sprockets%2F72933125931d191df741f01fc5ff2f26 +0 -0
- data/spec/dummy/tmp/cache/assets/CB0/930/sprockets%2F8272ad6d0b079362b2491ce3396a2c97 +0 -0
- data/spec/dummy/tmp/cache/assets/CB1/230/sprockets%2Fbb1808e1d9891094168331ff2fa29c23 +0 -0
- data/spec/dummy/tmp/cache/assets/CB4/FB0/sprockets%2F1f909bc406bf958072ad795d5303f235 +0 -0
- data/spec/dummy/tmp/cache/assets/CB6/730/sprockets%2F19ef44fa001bbda37824909746238f68 +0 -0
- data/spec/dummy/tmp/cache/assets/CBC/170/sprockets%2F895158f320da274e839a4978bb3a25f4 +0 -0
- data/spec/dummy/tmp/cache/assets/CBD/160/sprockets%2Fe56dd38d8c51e8095620f5d67103909d +0 -0
- data/spec/dummy/tmp/cache/assets/CC2/AD0/sprockets%2F94439c33d1a5c557b89cb739e08e1991 +0 -0
- data/spec/dummy/tmp/cache/assets/CCB/850/sprockets%2F02e05b258d7c735f26e633b010c920cb +0 -0
- data/spec/dummy/tmp/cache/assets/CD0/500/sprockets%2Fd27696561a9ec3799b76d4af927338e5 +0 -0
- data/spec/dummy/tmp/cache/assets/CD0/F70/sprockets%2Fb770d8010fa12ecf83d2a171480763d4 +0 -0
- data/spec/dummy/tmp/cache/assets/CD6/980/sprockets%2F78671dda395c821a632ca0871043abf5 +0 -0
- data/spec/dummy/tmp/cache/assets/CD7/7C0/sprockets%2F04f40780f76ba40666c06bf4d1273ef1 +0 -0
- data/spec/dummy/tmp/cache/assets/CD7/8B0/sprockets%2F4a7030aa11b628c26653f58da193f84f +0 -0
- data/spec/dummy/tmp/cache/assets/CD7/E40/sprockets%2F244cc083a125c752f459d8ddfc510218 +0 -0
- data/spec/dummy/tmp/cache/assets/CD9/A90/sprockets%2Fdb4d98730929f78269f493773b5be8e8 +0 -0
- data/spec/dummy/tmp/cache/assets/CDE/0E0/sprockets%2F4b5a7685116047b5ece80c613a4eb866 +0 -0
- data/spec/dummy/tmp/cache/assets/CE2/F80/sprockets%2F3f4be29b1866cb0b0e2dc56536934189 +0 -0
- data/spec/dummy/tmp/cache/assets/CE3/B50/sprockets%2F10e4d9543759ae40f8249c45d34a31ff +0 -0
- data/spec/dummy/tmp/cache/assets/CE5/2A0/sprockets%2F38ab60b12edd0388b87513096a7b789e +0 -0
- data/spec/dummy/tmp/cache/assets/CE8/330/sprockets%2F6f9128544f46a17c60027c35fce4ef75 +0 -0
- data/spec/dummy/tmp/cache/assets/CEB/200/sprockets%2F3007de86523e820696bcaa986ef2a785 +0 -0
- data/spec/dummy/tmp/cache/assets/CEB/4E0/sprockets%2Fffb7c224a9178c6154dea70d94089627 +0 -0
- data/spec/dummy/tmp/cache/assets/CEF/A00/sprockets%2F42449d8a1940eba9130a32d02ab2cf20 +0 -0
- data/spec/dummy/tmp/cache/assets/CF0/C20/sprockets%2F83a42387a965774facbd717770f6f2a7 +0 -0
- data/spec/dummy/tmp/cache/assets/CF5/060/sprockets%2F2986d6ece9249d6f3f9ac694540a2372 +0 -0
- data/spec/dummy/tmp/cache/assets/CF9/F20/sprockets%2F986fdff75a775c678471053713d8c1ed +0 -0
- data/spec/dummy/tmp/cache/assets/CFC/FF0/sprockets%2F47850d338885758cbc4bd4e7b9328fe8 +0 -0
- data/spec/dummy/tmp/cache/assets/D05/D70/sprockets%2F7007cf768de19464db05ae106ca2604d +0 -0
- data/spec/dummy/tmp/cache/assets/D06/590/sprockets%2Fc045182e2f0f3816f76aeb421a167ee3 +0 -0
- data/spec/dummy/tmp/cache/assets/D09/D40/sprockets%2F1bcb641850b964f38417f5cc91e00c7a +0 -0
- data/spec/dummy/tmp/cache/assets/D0B/7D0/sprockets%2Ffa7e2864007ff1f93ab619b61be12705 +0 -0
- data/spec/dummy/tmp/cache/assets/D0C/2B0/sprockets%2Fc01d05da2c09811f6ebb6457a579f393 +0 -0
- data/spec/dummy/tmp/cache/assets/D0F/0A0/sprockets%2F7530089ddbee51165c91d42983ea5cc1 +0 -0
- data/spec/dummy/tmp/cache/assets/D10/190/sprockets%2F17a938bb93cdc2e9a4a71383f824811c +0 -0
- data/spec/dummy/tmp/cache/assets/D13/490/sprockets%2Ffaa1ae5ba596394a7e6f21293362884c +0 -0
- data/spec/dummy/tmp/cache/assets/D18/4F0/sprockets%2F0dd2285c0874040e463e76b49fc9ee6d +0 -0
- data/spec/dummy/tmp/cache/assets/D1B/080/sprockets%2F8289214205c22b86fd90e7dde88e70dc +0 -0
- data/spec/dummy/tmp/cache/assets/D20/960/sprockets%2F9d81c99fa4b33c3e2f6425593bf6e590 +0 -0
- data/spec/dummy/tmp/cache/assets/D2B/DE0/sprockets%2F80480edba05dbf2a035b05454d57e34c +0 -0
- data/spec/dummy/tmp/cache/assets/D2C/210/sprockets%2F8f316259703dacdd21f83ad05f0ca132 +0 -0
- data/spec/dummy/tmp/cache/assets/D2C/780/sprockets%2Ffe4d215714b72c23b8dd8a5f0020ad09 +0 -0
- data/spec/dummy/tmp/cache/assets/D2F/180/sprockets%2Fbf3b7ed377172b501728a446a107bbcc +0 -0
- data/spec/dummy/tmp/cache/assets/D37/EC0/sprockets%2Fea6cc6410ad20a1c67445f8e860fe444 +0 -0
- data/spec/dummy/tmp/cache/assets/D38/6D0/sprockets%2F7cc91ca26644e7b06438b0bf8e405d0d +0 -0
- data/spec/dummy/tmp/cache/assets/D3B/780/sprockets%2F1e0cf992502bd912aa9a191ec778cc44 +0 -0
- data/spec/dummy/tmp/cache/assets/D3B/930/sprockets%2F0e770ba1bd268256242eaea8c9718e5c +0 -0
- data/spec/dummy/tmp/cache/assets/D3D/D10/sprockets%2F953c3b472be2ede368471137bdc90ae4 +0 -0
- data/spec/dummy/tmp/cache/assets/D3E/500/sprockets%2Fe60a09899ac6c983ddea50151d2ea273 +0 -0
- data/spec/dummy/tmp/cache/assets/D3F/340/sprockets%2Fef74a174d01b6808e4bc5a2ef87721e4 +0 -0
- data/spec/dummy/tmp/cache/assets/D41/930/sprockets%2Fb3d4b6333baf5e867f2b361c5b2c7498 +0 -0
- data/spec/dummy/tmp/cache/assets/D45/A40/sprockets%2Fc60487581ef1accbcc895418c71f2e72 +0 -0
- data/spec/dummy/tmp/cache/assets/D46/090/sprockets%2F0ea2b9f32f6719be92596d7f6033b2ec +0 -0
- data/spec/dummy/tmp/cache/assets/D48/750/sprockets%2F76db9aaecd1148827ed661f924d6f251 +0 -0
- data/spec/dummy/tmp/cache/assets/D4B/990/sprockets%2Fc8702905706ece4f927eb4ae267bf7d4 +0 -0
- data/spec/dummy/tmp/cache/assets/D51/720/sprockets%2F1a0601ba3458aa96131495dc4aca0fbe +0 -0
- data/spec/dummy/tmp/cache/assets/D52/EF0/sprockets%2Ffd5f726a8a0df8287448fa948db1b817 +0 -0
- data/spec/dummy/tmp/cache/assets/D57/4A0/sprockets%2F2f425bc85c002e370adbd8c51c8220eb +0 -0
- data/spec/dummy/tmp/cache/assets/D58/940/sprockets%2F1c3b2ff81dc2a0482d34112f9fb12d2e +0 -0
- data/spec/dummy/tmp/cache/assets/D5B/7F0/sprockets%2F523ea79ecf40a31bd0b6ddb56e334123 +0 -0
- data/spec/dummy/tmp/cache/assets/D5F/210/sprockets%2F41a7b5fa423ac505c66add2b98942c0b +0 -0
- data/spec/dummy/tmp/cache/assets/D62/8F0/sprockets%2F5b6411bf7a3d055f2f07a8bf457a2bd3 +0 -0
- data/spec/dummy/tmp/cache/assets/D63/D20/sprockets%2F008f511a7971c5311f1b8d4fddaad18f +0 -0
- data/spec/dummy/tmp/cache/assets/D65/050/sprockets%2Faaee3ad426e876a0f2219b790191b2ed +0 -0
- data/spec/dummy/tmp/cache/assets/D65/3A0/sprockets%2Fc1ec78a1c30ff75157afa34014f3ef63 +0 -0
- data/spec/dummy/tmp/cache/assets/D69/6A0/sprockets%2F1bf617ff04da082c0eb39b9445d8d3a5 +0 -0
- data/spec/dummy/tmp/cache/assets/D6B/0D0/sprockets%2Fea8a529c947d286a13e5eefe16b12b12 +0 -0
- data/spec/dummy/tmp/cache/assets/D6D/1F0/sprockets%2F11595043cc2f4c29d2fb5cea595e1b9e +0 -0
- data/spec/dummy/tmp/cache/assets/D70/970/sprockets%2Fb21f42ff3dec1446ff32e8f260b18c78 +0 -0
- data/spec/dummy/tmp/cache/assets/D71/FB0/sprockets%2F68433b17ff4eaf61f5048ee06e8cb20e +0 -0
- data/spec/dummy/tmp/cache/assets/D73/060/sprockets%2Fd1df80c17350a4ca8daf86c7599f41f1 +0 -0
- data/spec/dummy/tmp/cache/assets/D74/050/sprockets%2F29efd25b4cdd2d7607b0d477705b8ec6 +0 -0
- data/spec/dummy/tmp/cache/assets/D78/DC0/sprockets%2F3f1950b87fc75fb6f1dbb672e3ed5327 +0 -0
- data/spec/dummy/tmp/cache/assets/D79/710/sprockets%2F0b98cf262e57ae187a6192f29ccad49d +0 -0
- data/spec/dummy/tmp/cache/assets/D7A/5F0/sprockets%2F69fbbb1724da70dc767193677df3c4de +0 -0
- data/spec/dummy/tmp/cache/assets/D7B/7B0/sprockets%2F9df3019edd7238ea05c0d86ae899f3b3 +0 -0
- data/spec/dummy/tmp/cache/assets/D7E/380/sprockets%2F256295ea2de1a85d8aefa6a797c69c90 +0 -0
- data/spec/dummy/tmp/cache/assets/D81/D40/sprockets%2Ff6ffb740a883607444fcc8e9e51c8dc4 +0 -0
- data/spec/dummy/tmp/cache/assets/D82/120/sprockets%2Fcfa458d7fd9975793198ae714e02ecaa +0 -0
- data/spec/dummy/tmp/cache/assets/D86/A60/sprockets%2Fc38e7ef3fd858357b7fc3c2fb8a91564 +0 -0
- data/spec/dummy/tmp/cache/assets/D89/DA0/sprockets%2F8d18248a443fea94a88079efa99bfaf7 +0 -0
- data/spec/dummy/tmp/cache/assets/D8C/770/sprockets%2F7b0fa3005aecf24c6e23af9c5ad02827 +0 -0
- data/spec/dummy/tmp/cache/assets/D93/3D0/sprockets%2Fa5bb4b51d7b5cf47a9d85ccd00904f12 +0 -0
- data/spec/dummy/tmp/cache/assets/D94/420/sprockets%2F2e54f2c67f40ae3b28fdb90c215d3d3c +0 -0
- data/spec/dummy/tmp/cache/assets/D97/890/sprockets%2Fea52bb8869ad0d04f5a91ecabd722239 +0 -0
- data/spec/dummy/tmp/cache/assets/D98/770/sprockets%2Fab39cb17cb0c7ddc46a7e083741d7c28 +0 -0
- data/spec/dummy/tmp/cache/assets/D9A/910/sprockets%2F52be75ddde7b2ffa06af4fd068008091 +0 -0
- data/spec/dummy/tmp/cache/assets/D9E/8D0/sprockets%2F6183b396dba27e5bb64eaa8dce09740e +0 -0
- data/spec/dummy/tmp/cache/assets/DA6/EC0/sprockets%2F2cd5612affe9038f43fb59fa525ae39e +0 -0
- data/spec/dummy/tmp/cache/assets/DA9/610/sprockets%2F070519c5b7c9e2a05ffb7a82e9c69cdf +0 -0
- data/spec/dummy/tmp/cache/assets/DAF/0A0/sprockets%2F81a6c69e615b9f6c0a7870fde9e4ae7a +0 -0
- data/spec/dummy/tmp/cache/assets/DB4/9A0/sprockets%2F152cabc332eafced3e25d12e33a4435e +0 -0
- data/spec/dummy/tmp/cache/assets/DC6/2D0/sprockets%2F7f232a3b35c509bdb0cdd0eee98e3c36 +0 -0
- data/spec/dummy/tmp/cache/assets/DC9/830/sprockets%2Fff60d20f4db56b13e6bad309b96c08fd +0 -0
- data/spec/dummy/tmp/cache/assets/DCF/A70/sprockets%2F5cfadbd4a6878da4c19eb5451225e3ef +0 -0
- data/spec/dummy/tmp/cache/assets/DD3/1E0/sprockets%2Fb2dbcbff454c034f8ecb7528b908c8a8 +0 -0
- data/spec/dummy/tmp/cache/assets/DD3/9E0/sprockets%2F99fee80ec4d119a6cc5a3d90d1bb7d92 +0 -0
- data/spec/dummy/tmp/cache/assets/DD5/F20/sprockets%2F9bcb865783d19929b0eace77ab1ac4ec +0 -0
- data/spec/dummy/tmp/cache/assets/DD9/D20/sprockets%2F774bf932abf9fed1f8d1de4a68b931e0 +0 -0
- data/spec/dummy/tmp/cache/assets/DDA/830/sprockets%2Ff565a73a906a56c2e19ce6dfbf5e61ff +0 -0
- data/spec/dummy/tmp/cache/assets/DDA/F10/sprockets%2Fd8b845f49355b153aedcb6d9a8fc7ca5 +0 -0
- data/spec/dummy/tmp/cache/assets/DDC/5D0/sprockets%2F364253d7cbaf3ad0350ad0cb6a5cbdc0 +0 -0
- data/spec/dummy/tmp/cache/assets/DE4/E20/sprockets%2F2fdc2c653d97cb4f40fed7f45d879da9 +0 -0
- data/spec/dummy/tmp/cache/assets/DF2/880/sprockets%2Fc906bbb19c4a06daf594ab3e286bc3bd +0 -0
- data/spec/dummy/tmp/cache/assets/DF4/0F0/sprockets%2F3421cdee43ff1e0d6cfa27eafa7e2516 +0 -0
- data/spec/dummy/tmp/cache/assets/DF6/410/sprockets%2Fbcdfb6d07d79490cbfb6801aa63cc5c2 +0 -0
- data/spec/dummy/tmp/cache/assets/DFA/2D0/sprockets%2F240cd9ec435b5fa1c59ff1b1a79dae8a +0 -0
- data/spec/dummy/tmp/cache/assets/E02/4E0/sprockets%2Fbfb8eaedf0b359e72db268fe2c4175c4 +0 -0
- data/spec/dummy/tmp/cache/assets/E07/F90/sprockets%2F6fbb6d5990372ef85acc84beceac4b73 +0 -0
- data/spec/dummy/tmp/cache/assets/E0D/470/sprockets%2Faef35e2e6837a1ffa4d5898acc5a8fe4 +0 -0
- data/spec/dummy/tmp/cache/assets/E0F/790/sprockets%2F2f4eb4bda5c5ca56d3340caa5aa82c0b +0 -0
- data/spec/dummy/tmp/cache/assets/E40/950/sprockets%2F7ff1e1ede4ad5d7ef5094b0efd8896cc +0 -0
- data/spec/dummy/tmp/cache/assets/E7B/720/sprockets%2Fbbeda91214d7ec5bd4c2fdb5b5eead02 +0 -0
- data/spec/dummy/tmp/cache/assets/E98/680/sprockets%2F42fd3fbf3bc7ecafb09f7cff81088ded +0 -0
- data/spec/dummy/tmp/cache/assets/EC6/860/sprockets%2F83df86ffb45cdaaea9ba6efbca34d7c9 +0 -0
- data/spec/dummy/tmp/cache/assets/EEC/1E0/sprockets%2Fbfa1aff0059cf17ccf5f27afb6ffbfeb +0 -0
- data/spec/dummy/tmp/cache/sass/301ce5a14d4f5bb39e22a56c42ad3d69df129f35/bootstrap.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_accordion.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_alerts.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_breadcrumbs.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_button-groups.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_buttons.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_carousel.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_close.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_code.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_component-animations.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_dropdowns.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_forms.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_grid.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_hero-unit.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_labels-badges.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_layouts.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_media.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_mixins.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_modals.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_navbar.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_navs.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_pager.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_pagination.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_popovers.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_progress-bars.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_reset.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_scaffolding.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_sprites.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_tables.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_thumbnails.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_tooltip.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_type.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_utilities.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_variables.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/_wells.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/adcfc93268f0014d6a7edb19347218e29709360e/bootstrap.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/e09d521ae3b813be62b26216d68685f8f049a496/admin-styles.sassc +0 -0
- data/spec/dummy/tmp/cache/sass/e09d521ae3b813be62b26216d68685f8f049a496/frontend-styles.sassc +0 -0
- data/spec/factories/compartment_admin_content_blocks.rb +8 -0
- data/spec/factories/content_block.rb +8 -0
- data/spec/factories/page.rb +16 -0
- data/spec/factories/site.rb +13 -0
- data/spec/factories/theme.rb +5 -0
- data/spec/factories/user.rb +6 -0
- data/spec/helpers/pages_helper_spec.rb +126 -0
- data/spec/lib/compartment/config_spec.rb +11 -0
- data/spec/lib/compartment_spec.rb +10 -0
- data/spec/models/compartment/content_block_spec.rb +12 -0
- data/spec/models/compartment/page_spec.rb +39 -0
- data/spec/models/compartment/site_spec.rb +8 -0
- data/spec/models/compartment/theme_spec.rb +53 -0
- data/spec/models/compartment/user_spec.rb +6 -0
- data/spec/spec_helper.rb +50 -0
- metadata +703 -0
@@ -0,0 +1,89 @@
|
|
1
|
+
require_dependency "compartment/admin/application_controller"
|
2
|
+
|
3
|
+
module Compartment
|
4
|
+
module Admin
|
5
|
+
class UsersController < ApplicationController
|
6
|
+
# GET /users
|
7
|
+
# GET /users.json
|
8
|
+
def index
|
9
|
+
@users = User.all
|
10
|
+
|
11
|
+
respond_to do |format|
|
12
|
+
format.html # index.html.erb
|
13
|
+
format.json { render json: @users }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# GET /users/1
|
18
|
+
# GET /users/1.json
|
19
|
+
def show
|
20
|
+
@user = User.find(params[:id])
|
21
|
+
|
22
|
+
respond_to do |format|
|
23
|
+
format.html # show.html.erb
|
24
|
+
format.json { render json: @user }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# GET /users/new
|
29
|
+
# GET /users/new.json
|
30
|
+
def new
|
31
|
+
@user = User.new
|
32
|
+
|
33
|
+
respond_to do |format|
|
34
|
+
format.html # new.html.erb
|
35
|
+
format.json { render json: @user }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# GET /users/1/edit
|
40
|
+
def edit
|
41
|
+
@user = User.find(params[:id])
|
42
|
+
end
|
43
|
+
|
44
|
+
# POST /users
|
45
|
+
# POST /users.json
|
46
|
+
def create
|
47
|
+
@user = User.new(params[:user])
|
48
|
+
|
49
|
+
respond_to do |format|
|
50
|
+
if @user.save
|
51
|
+
format.html { redirect_to @user, notice: 'User was successfully created.' }
|
52
|
+
format.json { render json: @user, status: :created, location: @user }
|
53
|
+
else
|
54
|
+
format.html { render action: "new" }
|
55
|
+
format.json { render json: @user.errors, status: :unprocessable_entity }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# PUT /users/1
|
61
|
+
# PUT /users/1.json
|
62
|
+
def update
|
63
|
+
@user = User.find(params[:id])
|
64
|
+
|
65
|
+
respond_to do |format|
|
66
|
+
if @user.update_attributes(params[:user])
|
67
|
+
format.html { redirect_to @user, notice: 'User was successfully updated.' }
|
68
|
+
format.json { head :no_content }
|
69
|
+
else
|
70
|
+
format.html { render action: "edit" }
|
71
|
+
format.json { render json: @user.errors, status: :unprocessable_entity }
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# DELETE /users/1
|
77
|
+
# DELETE /users/1.json
|
78
|
+
def destroy
|
79
|
+
@user = User.find(params[:id])
|
80
|
+
@user.destroy
|
81
|
+
|
82
|
+
respond_to do |format|
|
83
|
+
format.html { redirect_to users_url }
|
84
|
+
format.json { head :no_content }
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Compartment
|
2
|
+
class ApplicationController < ActionController::Base
|
3
|
+
|
4
|
+
attr_accessor :current_site
|
5
|
+
|
6
|
+
before_filter :find_site_by_domain
|
7
|
+
|
8
|
+
def find_site_by_domain
|
9
|
+
@current_site ||= Site.find_by_domain(env['SERVER_NAME'])
|
10
|
+
unless @current_site
|
11
|
+
render 'compartment/errors/unknown_site', status: 404, layout: false
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_dependency "compartment/application_controller"
|
2
|
+
|
3
|
+
module Compartment
|
4
|
+
class PagesController < ApplicationController
|
5
|
+
|
6
|
+
def show
|
7
|
+
@page = current_site.pages.find_by_url_path(request.path_info)
|
8
|
+
if @page
|
9
|
+
render :file => @page.template_path, layout: false
|
10
|
+
else
|
11
|
+
# render 'compartment/errors/page_not_found', :status => 404
|
12
|
+
render file: current_site.theme.path_to_template(:page_not_found), status: 404, layout: false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require_dependency "compartment/application_controller"
|
2
|
+
|
3
|
+
module Compartment
|
4
|
+
class ThemeAssetsController < ApplicationController
|
5
|
+
|
6
|
+
def send_asset
|
7
|
+
file = File.join(Compartment.config.themes_path, params[:theme_name], params[:file] + '.' + params[:ext])
|
8
|
+
send_file file
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
module Compartment
|
2
|
+
module PagesHelper
|
3
|
+
|
4
|
+
def theme_stylesheet_url(file)
|
5
|
+
@page.site.theme.url_to_file("stylesheets/#{file}")
|
6
|
+
end
|
7
|
+
|
8
|
+
# renders the stylesheet link tags appropriate for the current page
|
9
|
+
def styles
|
10
|
+
stylesheet_link_tag 'compartment/frontend-styles' if admin_logged_in?
|
11
|
+
# render the theme styles
|
12
|
+
end
|
13
|
+
|
14
|
+
# TODO: refactor this. Don't generate strings of json.
|
15
|
+
def scripts
|
16
|
+
scripts = []
|
17
|
+
if admin_logged_in?
|
18
|
+
# scripts << "<script>window.current_page_id = '#{@page.id}';</script>" unless @page.nil?
|
19
|
+
scripts << javascript_include_tag('compartment/application')
|
20
|
+
unless @page.nil?
|
21
|
+
html = '<script type="text/javascript">'
|
22
|
+
html += "Compartment.Data.current_page = #{@page.to_json(include: :content_blocks)};\n"
|
23
|
+
html += "Compartment.Data.content_block_types = [];\n"
|
24
|
+
Compartment.config.content_block_types.each_with_index do |block, i|
|
25
|
+
html += "Compartment.Data.content_block_types[#{i}] = #{block.to_json};\n"
|
26
|
+
end
|
27
|
+
html += "</script>"
|
28
|
+
scripts << html
|
29
|
+
end
|
30
|
+
end
|
31
|
+
raw scripts.join("\n")
|
32
|
+
end
|
33
|
+
|
34
|
+
# returns the title of the current page
|
35
|
+
def page_title
|
36
|
+
@page.title
|
37
|
+
end
|
38
|
+
|
39
|
+
# renders the content for the specified content area
|
40
|
+
def content_area(name, options = {}, &placeholder)
|
41
|
+
options = { wrapper_tag: :div }.merge(options)
|
42
|
+
options.merge!(placeholder: capture(&placeholder)) if block_given?
|
43
|
+
html = ''
|
44
|
+
content_blocks = @page.content_blocks.where(content_area: name).limit(options[:limit])
|
45
|
+
content_blocks.each do |block|
|
46
|
+
block_html = block.render.html_safe
|
47
|
+
if admin_logged_in?
|
48
|
+
# Don't need to render anything. The javascript will take care of this.
|
49
|
+
else
|
50
|
+
html += block_html
|
51
|
+
end
|
52
|
+
end
|
53
|
+
if html == '' and options[:placeholder]
|
54
|
+
if admin_logged_in?
|
55
|
+
html = content_tag options[:wrapper_tag], options[:placeholder], class: 'compartment_content_block_placeholder'
|
56
|
+
else
|
57
|
+
html = options[:placeholder]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
data_attributes = {name: name}
|
61
|
+
data_attributes[:limit] = options[:limit] if options[:limit]
|
62
|
+
html = content_tag options[:wrapper_tag], html.html_safe, :class => 'compartment_content_area', data: data_attributes if admin_logged_in?
|
63
|
+
html.html_safe
|
64
|
+
end
|
65
|
+
|
66
|
+
# old functionality
|
67
|
+
# def content_block(name, options = nil)
|
68
|
+
# options = { limit: 1 }.merge(options)
|
69
|
+
# content_area name, options
|
70
|
+
# end
|
71
|
+
|
72
|
+
def editable_text(name, options = {}, &placeholder)
|
73
|
+
options = { type: :text }.merge(options)
|
74
|
+
options.merge!(limit: 1, wrapper_tag: :span) # enforce only 1
|
75
|
+
content_area(name, options, &placeholder)
|
76
|
+
|
77
|
+
# block = @page.content_blocks.where(content_area: name).first
|
78
|
+
|
79
|
+
# html = block.render if block
|
80
|
+
# html ||= options[:placeholder] ||= ''
|
81
|
+
|
82
|
+
# html = content_tag :span, html.html_safe, :class => 'compartment_content_area', data: { name: name } if admin_logged_in?
|
83
|
+
# html.html_safe
|
84
|
+
end
|
85
|
+
|
86
|
+
# In a theme, using content_block is the same as a content area that only allows one content block.
|
87
|
+
def content_block(name, options = {}, &placeholder)
|
88
|
+
options.merge!(limit: 1) # enforce only 1
|
89
|
+
content_area(name, options, &placeholder)
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Compartment
|
2
|
+
class Page < ActiveRecord::Base
|
3
|
+
belongs_to :site
|
4
|
+
has_many :content_blocks
|
5
|
+
|
6
|
+
attr_accessible :template, :title, :url_path
|
7
|
+
|
8
|
+
validates_uniqueness_of :url_path
|
9
|
+
|
10
|
+
def template_path
|
11
|
+
site.theme.path_to_template(template)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Compartment
|
2
|
+
class Theme < ActiveRecord::Base
|
3
|
+
|
4
|
+
# used for registering a theme
|
5
|
+
def self.info
|
6
|
+
info = Struct.new(:name, :author).new
|
7
|
+
yield(info)
|
8
|
+
Compartment.config.registered_themes << info
|
9
|
+
end
|
10
|
+
|
11
|
+
belongs_to :site
|
12
|
+
attr_accessible :name
|
13
|
+
|
14
|
+
validates_presence_of :name
|
15
|
+
|
16
|
+
def self.default
|
17
|
+
Theme.new(:name => 'default')
|
18
|
+
end
|
19
|
+
|
20
|
+
def filepath
|
21
|
+
File.join(Compartment.config.themes_path, name)
|
22
|
+
end
|
23
|
+
|
24
|
+
def path_to_template(template)
|
25
|
+
case template
|
26
|
+
when :page_not_found, 404
|
27
|
+
template = 'error_404'
|
28
|
+
end
|
29
|
+
File.join(filepath, 'templates', template)
|
30
|
+
end
|
31
|
+
|
32
|
+
def url
|
33
|
+
"/assets/themes/#{name}/"
|
34
|
+
end
|
35
|
+
|
36
|
+
def url_to_file(name)
|
37
|
+
url + name
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,209 @@
|
|
1
|
+
/*
|
2
|
+
Author : Christopher Robinson
|
3
|
+
Email : christopher@edg3.co.uk
|
4
|
+
Website : http://www.edg3.co.uk/
|
5
|
+
*/
|
6
|
+
* {
|
7
|
+
border:0;
|
8
|
+
margin:0;
|
9
|
+
padding:0;
|
10
|
+
}
|
11
|
+
|
12
|
+
/* general */
|
13
|
+
a {
|
14
|
+
color:#b484da;
|
15
|
+
text-decoration:none;
|
16
|
+
}
|
17
|
+
a:hover {
|
18
|
+
color:#666;
|
19
|
+
text-decoration:underline;
|
20
|
+
}
|
21
|
+
blockquote {
|
22
|
+
background:#f1f1f1;
|
23
|
+
border-left:2px solid #7534aa;
|
24
|
+
color:#444;
|
25
|
+
display:block;
|
26
|
+
font-style:oblique;
|
27
|
+
line-height:20px;
|
28
|
+
margin:0 0 0 10px;
|
29
|
+
padding:0 0 0 10px;
|
30
|
+
}
|
31
|
+
.left {
|
32
|
+
float:left;
|
33
|
+
margin:0 10px 0 0;
|
34
|
+
}
|
35
|
+
.right {
|
36
|
+
float:right;
|
37
|
+
margin:0 0 0 10px;
|
38
|
+
}
|
39
|
+
|
40
|
+
/* body */
|
41
|
+
body {
|
42
|
+
background:#fff url('../images/background_body.jpg') repeat-x top;
|
43
|
+
color:#666;
|
44
|
+
font:0.7em Verdana, "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
|
45
|
+
}
|
46
|
+
|
47
|
+
/* header */
|
48
|
+
#header {
|
49
|
+
background:url('../images/background_header.jpg');
|
50
|
+
height:320px;
|
51
|
+
margin:0 auto;
|
52
|
+
position:relative;
|
53
|
+
width:760px;
|
54
|
+
}
|
55
|
+
#header:after {
|
56
|
+
clear:both;
|
57
|
+
content:'.';
|
58
|
+
display:block;
|
59
|
+
height:0;
|
60
|
+
visibility:hidden;
|
61
|
+
}
|
62
|
+
#header h1 {
|
63
|
+
color:#666;
|
64
|
+
font-size:40px;
|
65
|
+
font-weight:400;
|
66
|
+
left:0;
|
67
|
+
letter-spacing:-2px;
|
68
|
+
position:absolute;
|
69
|
+
top:40px;
|
70
|
+
}
|
71
|
+
#header p {
|
72
|
+
bottom:70px;
|
73
|
+
color:#fff;
|
74
|
+
font-size:2em;
|
75
|
+
position:absolute;
|
76
|
+
right:20px;
|
77
|
+
}
|
78
|
+
#header ul {
|
79
|
+
list-style:none;
|
80
|
+
position:absolute;
|
81
|
+
top:100px;
|
82
|
+
}
|
83
|
+
#header ul li {
|
84
|
+
list-style:none;
|
85
|
+
}
|
86
|
+
#header ul li a {
|
87
|
+
color:#fff;
|
88
|
+
display:block;
|
89
|
+
font-size:1.2em;
|
90
|
+
font-weight:700;
|
91
|
+
height:20px;
|
92
|
+
padding:10px;
|
93
|
+
width:190px;
|
94
|
+
}
|
95
|
+
#header ul li a:hover {
|
96
|
+
background:#b484da;
|
97
|
+
color:#eee;
|
98
|
+
text-decoration:none;
|
99
|
+
}
|
100
|
+
|
101
|
+
/* content */
|
102
|
+
#content {
|
103
|
+
height:auto;
|
104
|
+
margin:0 auto;
|
105
|
+
width:760px;
|
106
|
+
}
|
107
|
+
#content:after {
|
108
|
+
clear:both;
|
109
|
+
content:'.';
|
110
|
+
display:block;
|
111
|
+
height:0;
|
112
|
+
visibility:hidden;
|
113
|
+
}
|
114
|
+
|
115
|
+
/* sidebar */
|
116
|
+
#sidebar {
|
117
|
+
float:left;
|
118
|
+
width:210px;
|
119
|
+
}
|
120
|
+
#sidebar h1 {
|
121
|
+
border-bottom:2px solid #7534aa;
|
122
|
+
color:#444;
|
123
|
+
font-size:165%;
|
124
|
+
font-weight:400;
|
125
|
+
line-height:30px;
|
126
|
+
padding:0 10px;
|
127
|
+
}
|
128
|
+
#sidebar input {
|
129
|
+
background:#f1f1f1;
|
130
|
+
color:#555;
|
131
|
+
margin:10px;
|
132
|
+
padding:5px;
|
133
|
+
width:180px;
|
134
|
+
}
|
135
|
+
#sidebar p {
|
136
|
+
background:#f1f1f1;
|
137
|
+
color:#555;
|
138
|
+
display:block;
|
139
|
+
font-size:90%;
|
140
|
+
line-height:20px;
|
141
|
+
margin:10px 0;
|
142
|
+
padding:10px;
|
143
|
+
}
|
144
|
+
#sidebar p a.more {
|
145
|
+
display:block;
|
146
|
+
text-align:right;
|
147
|
+
}
|
148
|
+
#sidebar ul {
|
149
|
+
margin:10px;
|
150
|
+
}
|
151
|
+
#sidebar ul li {
|
152
|
+
border-bottom:1px solid #b484da;
|
153
|
+
list-style:none;
|
154
|
+
padding:5px 2px;
|
155
|
+
}
|
156
|
+
#sidebar ul li a {
|
157
|
+
color:#333;
|
158
|
+
display:block;
|
159
|
+
font-family:Geneva;
|
160
|
+
padding:5px;
|
161
|
+
text-decoration:none;
|
162
|
+
}
|
163
|
+
#sidebar ul li a:hover {
|
164
|
+
color:#000;
|
165
|
+
}
|
166
|
+
|
167
|
+
/* Main */
|
168
|
+
#main {
|
169
|
+
float:right;
|
170
|
+
width:520px;
|
171
|
+
}
|
172
|
+
.one_column #main {
|
173
|
+
float:none;
|
174
|
+
width:100%;
|
175
|
+
}
|
176
|
+
#main p {
|
177
|
+
color:#555;
|
178
|
+
line-height:20px;
|
179
|
+
padding:10px;
|
180
|
+
}
|
181
|
+
#main h1 {
|
182
|
+
border-bottom:2px solid #7534aa;
|
183
|
+
color:#444;
|
184
|
+
font-size:165%;
|
185
|
+
font-weight:400;
|
186
|
+
line-height:30px;
|
187
|
+
padding:0 10px;
|
188
|
+
}
|
189
|
+
|
190
|
+
/* footer */
|
191
|
+
#footer {
|
192
|
+
margin:10px auto;
|
193
|
+
width:760px;
|
194
|
+
}
|
195
|
+
#footer:after {
|
196
|
+
clear:both;
|
197
|
+
content:'.';
|
198
|
+
display:block;
|
199
|
+
height:0;
|
200
|
+
visibility:hidden;
|
201
|
+
}
|
202
|
+
#footer p {
|
203
|
+
border-top:2px solid #7534aa;
|
204
|
+
color:#555;
|
205
|
+
font-size:90%;
|
206
|
+
line-height:20px;
|
207
|
+
padding:10px;
|
208
|
+
text-align:center;
|
209
|
+
}
|