├── .meteor ├── .gitignore ├── release └── packages ├── client ├── stylesheets │ ├── sass │ │ ├── _titles.scss │ │ ├── _blocks.scss │ │ ├── _footer.scss │ │ ├── _errors.scss │ │ ├── _media.scss │ │ ├── _tables.scss │ │ ├── _breakpoints.scss │ │ ├── _buttons.scss │ │ ├── _colors.scss │ │ ├── _forms.scss │ │ ├── _sidebar.scss │ │ ├── _mixins.scss │ │ ├── _header.scss │ │ ├── main.min.scss │ │ ├── _vars-typeplate.scss │ │ └── _grid.scss │ ├── .DS_Store │ └── css │ │ ├── .DS_Store │ │ └── jquery.cleditor.css ├── views │ ├── categories │ │ ├── categories.js │ │ ├── category_posts.html │ │ ├── categories.html │ │ ├── add_category.js │ │ ├── add_category.html │ │ ├── list_categories.js │ │ └── list_categories.html │ ├── includes │ │ ├── loading.html │ │ ├── errors.html │ │ ├── errors.js │ │ └── wysiwyg.html │ ├── .DS_Store │ ├── pages │ │ ├── view_page.html │ │ ├── edit_page.html │ │ ├── templates │ │ │ ├── posts_list.html │ │ │ ├── posts_lists_excerpt.html │ │ │ ├── default.html │ │ │ └── default.js │ │ ├── view_page.js │ │ ├── page_list.js │ │ ├── edit_page.js │ │ ├── pages_list.html │ │ ├── new_page.html │ │ └── new_page.js │ ├── admin │ │ ├── login.html │ │ ├── .DS_Store │ │ ├── admin.js │ │ ├── admin_sidebar.html │ │ └── admin.html │ ├── posts │ │ ├── edit_post.html │ │ ├── view_post.js │ │ ├── posts_list.js │ │ ├── view_post.html │ │ ├── edit_post.js │ │ ├── posts_list.html │ │ ├── new_post.html │ │ └── new_post.js │ ├── users │ │ ├── roles_list.js │ │ ├── users_list.js │ │ ├── users.html │ │ ├── users.js │ │ ├── users_list.html │ │ └── roles_list.html │ ├── settings │ │ ├── general_settings.js │ │ ├── settings.html │ │ ├── header_settings.js │ │ ├── general_settings.html │ │ ├── settings.js │ │ ├── header_settings.html │ │ ├── menu_settings.js │ │ └── menu_settings.html │ ├── header │ │ ├── header.js │ │ └── header.html │ ├── application │ │ └── layout.html │ └── media │ │ ├── media_list.js │ │ └── media_list.html ├── main.html ├── .DS_Store ├── lib │ └── .DS_Store ├── helpers │ ├── .DS_Store │ ├── typekit.html │ └── errors.js └── main.js ├── .DS_Store ├── lib ├── .DS_Store ├── permissions.js └── router.js ├── public ├── file.gif ├── .DS_Store ├── image.gif ├── buttons.gif ├── toolbar.gif └── worksImages │ └── paulEliot1.jpg ├── packages ├── .DS_Store ├── spin ├── moment ├── iron-router ├── collectionFS ├── graphicsmagick ├── http-methods ├── micro-queue ├── power-queue ├── user-session ├── reactive-list ├── bootstrap-wysiwyg ├── cfs-public-folder ├── reactive-property └── .gitignore ├── .sass-cache ├── 02158e44c02044ad36accebd5ec2647e198987b9 │ ├── _box.scssc │ ├── _columns.scssc │ ├── _filter.scssc │ ├── _images.scssc │ ├── _opacity.scssc │ ├── _regions.scssc │ ├── _shared.scssc │ ├── _appearance.scssc │ ├── _box-shadow.scssc │ ├── _font-face.scssc │ ├── _transform.scssc │ ├── _transition.scssc │ ├── _hyphenation.scssc │ ├── _inline-block.scssc │ ├── _text-shadow.scssc │ ├── _background-clip.scssc │ ├── _border-radius.scssc │ ├── _background-origin.scssc │ ├── _box-sizing.scssc │ └── _background-size.scssc ├── 08401c0ad7ad501dba84d33296797226a7367fc0 │ ├── _css3.scssc │ ├── _support.scssc │ └── _reset.scssc ├── 1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d │ ├── _forms.scssc │ ├── _grid.scssc │ ├── _media.scssc │ ├── _buttons.scssc │ ├── _colors.scssc │ ├── _errors.scssc │ ├── _header.scssc │ ├── _mixins.scssc │ ├── _sidebar.scssc │ ├── _tables.scssc │ ├── main.min.scssc │ ├── _typeplate.scssc │ ├── _vars-typeplate.scssc │ ├── _titles.scssc │ ├── _blocks.scssc │ ├── _footer.scssc │ └── _breakpoints.scssc ├── 2a70e55dcec18c1ab99667cb3e1212042ac4ce65 │ └── _hacks.scssc ├── 30a89a8151306c671a55f466f0ec3dffdef2738c │ └── _hacks.scssc ├── 5fd84aed066c1123a49a4b2e70d9778046041310 │ ├── _css3.scssc │ ├── _support.scssc │ └── _reset.scssc ├── 62cd69437928356a2188ce533ef9db05abe43add │ ├── _box.scssc │ ├── _columns.scssc │ ├── _filter.scssc │ ├── _images.scssc │ ├── _opacity.scssc │ ├── _regions.scssc │ ├── _shared.scssc │ ├── _appearance.scssc │ ├── _box-shadow.scssc │ ├── _font-face.scssc │ ├── _transform.scssc │ ├── _transition.scssc │ ├── _hyphenation.scssc │ ├── _inline-block.scssc │ ├── _text-shadow.scssc │ ├── _background-clip.scssc │ ├── _border-radius.scssc │ ├── _background-origin.scssc │ ├── _box-sizing.scssc │ └── _background-size.scssc ├── 6c3c9353135d4d9aa040cf155bf2d0f87f1c8330 │ ├── _forms.scssc │ ├── _grid.scssc │ ├── _media.scssc │ ├── _buttons.scssc │ ├── _colors.scssc │ ├── _errors.scssc │ ├── _header.scssc │ ├── _mixins.scssc │ ├── _sidebar.scssc │ ├── _tables.scssc │ ├── main.min.scssc │ ├── _typeplate.scssc │ ├── _vars-typeplate.scssc │ ├── _titles.scssc │ ├── _blocks.scssc │ ├── _footer.scssc │ └── _breakpoints.scssc ├── 850734b355edad0c5a94f6e312f00ffd28a993d2 │ ├── _box.scssc │ ├── _columns.scssc │ ├── _filter.scssc │ ├── _images.scssc │ ├── _opacity.scssc │ ├── _regions.scssc │ ├── _shared.scssc │ ├── _appearance.scssc │ ├── _box-shadow.scssc │ ├── _font-face.scssc │ ├── _transform.scssc │ ├── _transition.scssc │ ├── _hyphenation.scssc │ ├── _inline-block.scssc │ ├── _text-shadow.scssc │ ├── _background-clip.scssc │ ├── _border-radius.scssc │ ├── _background-origin.scssc │ ├── _box-sizing.scssc │ └── _background-size.scssc ├── b1b135f0e0071c3ffec0d62bf58c8ccb95c9b288 │ └── _hacks.scssc ├── cd8f27b1db1e8fda0dad5bd5c8a8a4fe2a30946a │ └── _hacks.scssc ├── ceef6b4763ed1f0ad749aa13106fa5835ff2542c │ ├── _box.scssc │ ├── _columns.scssc │ ├── _filter.scssc │ ├── _images.scssc │ ├── _opacity.scssc │ ├── _regions.scssc │ ├── _shared.scssc │ ├── _appearance.scssc │ ├── _box-shadow.scssc │ ├── _font-face.scssc │ ├── _transform.scssc │ ├── _transition.scssc │ ├── _hyphenation.scssc │ ├── _inline-block.scssc │ ├── _text-shadow.scssc │ ├── _background-clip.scssc │ ├── _border-radius.scssc │ ├── _background-origin.scssc │ ├── _box-sizing.scssc │ └── _background-size.scssc ├── e706a5e2bcf859659cf2acda3ee301e5190ba734 │ ├── _css3.scssc │ ├── _support.scssc │ └── _reset.scssc ├── eae41b11bce2b59e4ed9fb104c38e2c9ac1ca4e0 │ ├── _css3.scssc │ ├── _support.scssc │ └── _reset.scssc ├── 418ad867c62e8d3435cd9ae00f15d595aaa291e8 │ └── _utilities.scssc ├── 8a442de7a3a53c2f8e610debb2ab1bb678341528 │ └── _utilities.scssc ├── a22119c6b7b4895e1e43f3e7d4c5c9c27743ab99 │ └── _utilities.scssc └── dca05306bc8135662de94df30baaebf8dd7f3e5e │ └── _utilities.scssc ├── smart.json ├── server ├── fixtures.js └── publications.js ├── config.rb ├── README.md ├── smart.lock ├── collections └── collections.js └── compass_app_log.txt /.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /.meteor/release: -------------------------------------------------------------------------------- 1 | 0.8.0 2 | -------------------------------------------------------------------------------- /client/stylesheets/sass/_titles.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/views/categories/categories.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/main.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /client/stylesheets/sass/_blocks.scss: -------------------------------------------------------------------------------- 1 | .block{ 2 | padding: 1rem; 3 | } -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.DS_Store -------------------------------------------------------------------------------- /client/stylesheets/sass/_footer.scss: -------------------------------------------------------------------------------- 1 | .footer{ 2 | .footer-content{ 3 | 4 | } 5 | } -------------------------------------------------------------------------------- /lib/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/lib/.DS_Store -------------------------------------------------------------------------------- /public/file.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/public/file.gif -------------------------------------------------------------------------------- /client/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/client/.DS_Store -------------------------------------------------------------------------------- /public/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/public/.DS_Store -------------------------------------------------------------------------------- /public/image.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/public/image.gif -------------------------------------------------------------------------------- /client/lib/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/client/lib/.DS_Store -------------------------------------------------------------------------------- /client/views/includes/loading.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/packages/.DS_Store -------------------------------------------------------------------------------- /public/buttons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/public/buttons.gif -------------------------------------------------------------------------------- /public/toolbar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/public/toolbar.gif -------------------------------------------------------------------------------- /client/views/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/client/views/.DS_Store -------------------------------------------------------------------------------- /client/views/pages/view_page.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/helpers/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/client/helpers/.DS_Store -------------------------------------------------------------------------------- /client/views/admin/login.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/stylesheets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/client/stylesheets/.DS_Store -------------------------------------------------------------------------------- /client/views/admin/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/client/views/admin/.DS_Store -------------------------------------------------------------------------------- /packages/spin: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/spin/SachaG/meteor-spin/3f655f0016228e4195acc784c45d3e3a247dc39f -------------------------------------------------------------------------------- /client/stylesheets/css/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/client/stylesheets/css/.DS_Store -------------------------------------------------------------------------------- /client/views/pages/edit_page.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/views/posts/edit_post.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/moment: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/moment/acreeger/meteor-moment/8c9bc5d3fc96705057737cb9743d555417f6e551 -------------------------------------------------------------------------------- /public/worksImages/paulEliot1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/public/worksImages/paulEliot1.jpg -------------------------------------------------------------------------------- /client/views/users/roles_list.js: -------------------------------------------------------------------------------- 1 | Template.rolesList.helpers({ 2 | roles: function(){ 3 | return Meteor.roles.find(); 4 | } 5 | }); -------------------------------------------------------------------------------- /lib/permissions.js: -------------------------------------------------------------------------------- 1 | isAdmin = function(userId, doc){ 2 | //return Roles.userIsInRole(this.userId, "Admin"); 3 | return true 4 | } -------------------------------------------------------------------------------- /packages/iron-router: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/iron-router/EventedMind/iron-router/05f34bc48c4cad9fdaa366c1ddcabe6980232ece -------------------------------------------------------------------------------- /packages/collectionFS: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/collectionFS/CollectionFS/Meteor-CollectionFS/29de048b54e7a3667bbe6e6f2e15c7ce982224bc -------------------------------------------------------------------------------- /packages/graphicsmagick: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/graphicsmagick/ewindso/meteor-graphicsmagick/795dcb78be6d2b493a547073f98c967e284248e0 -------------------------------------------------------------------------------- /packages/http-methods: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/http-methods/CollectionFS/Meteor-http-methods/5b0f7723f49436b8a0a930f284ed05f0b26021fe -------------------------------------------------------------------------------- /packages/micro-queue: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/micro-queue/CollectionFS/Meteor-micro-queue/d9ccd457508380837304924a3347e02616896a4b -------------------------------------------------------------------------------- /packages/power-queue: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/power-queue/CollectionFS/Meteor-power-queue/28e12e43df4a16183fc4165bd7ec8901717964c5 -------------------------------------------------------------------------------- /packages/user-session: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/user-session/BenjaminRH/meteor-user-session/9ce8cb3385f6bc08918dd30313f2251a42e6ff3b -------------------------------------------------------------------------------- /packages/reactive-list: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/reactive-list/CollectionFS/Meteor-reactive-list/85e378691d432e959a69203df0b1ff8b577dc53b -------------------------------------------------------------------------------- /client/views/categories/category_posts.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/bootstrap-wysiwyg: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/bootstrap-wysiwyg/mcrider/meteor-bootstrap-wysiwyg/b9b1ffadb42b8bbfade08aaea10e4fbe890d21dd -------------------------------------------------------------------------------- /packages/cfs-public-folder: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/cfs-public-folder/nooitaf/meteor-cfs-public-folder/581c716424b374efb6f611110002621f9cc9212b -------------------------------------------------------------------------------- /packages/reactive-property: -------------------------------------------------------------------------------- 1 | /Users/ramsaylanier/.meteorite/packages/reactive-property/CollectionFS/Meteor-reactive-property/f742b8656bb88fafff2a9c3a32ff1f97b3ebf2f7 -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_box.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_box.scssc -------------------------------------------------------------------------------- /.sass-cache/08401c0ad7ad501dba84d33296797226a7367fc0/_css3.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/08401c0ad7ad501dba84d33296797226a7367fc0/_css3.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_forms.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_forms.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_grid.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_grid.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_media.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_media.scssc -------------------------------------------------------------------------------- /.sass-cache/2a70e55dcec18c1ab99667cb3e1212042ac4ce65/_hacks.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/2a70e55dcec18c1ab99667cb3e1212042ac4ce65/_hacks.scssc -------------------------------------------------------------------------------- /.sass-cache/30a89a8151306c671a55f466f0ec3dffdef2738c/_hacks.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/30a89a8151306c671a55f466f0ec3dffdef2738c/_hacks.scssc -------------------------------------------------------------------------------- /.sass-cache/5fd84aed066c1123a49a4b2e70d9778046041310/_css3.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/5fd84aed066c1123a49a4b2e70d9778046041310/_css3.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_box.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_box.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_forms.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_forms.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_grid.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_grid.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_media.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_media.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_box.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_box.scssc -------------------------------------------------------------------------------- /.sass-cache/b1b135f0e0071c3ffec0d62bf58c8ccb95c9b288/_hacks.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/b1b135f0e0071c3ffec0d62bf58c8ccb95c9b288/_hacks.scssc -------------------------------------------------------------------------------- /.sass-cache/cd8f27b1db1e8fda0dad5bd5c8a8a4fe2a30946a/_hacks.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/cd8f27b1db1e8fda0dad5bd5c8a8a4fe2a30946a/_hacks.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_box.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_box.scssc -------------------------------------------------------------------------------- /.sass-cache/e706a5e2bcf859659cf2acda3ee301e5190ba734/_css3.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/e706a5e2bcf859659cf2acda3ee301e5190ba734/_css3.scssc -------------------------------------------------------------------------------- /.sass-cache/eae41b11bce2b59e4ed9fb104c38e2c9ac1ca4e0/_css3.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/eae41b11bce2b59e4ed9fb104c38e2c9ac1ca4e0/_css3.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_columns.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_columns.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_filter.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_filter.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_images.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_images.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_opacity.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_opacity.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_regions.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_regions.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_shared.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_shared.scssc -------------------------------------------------------------------------------- /.sass-cache/08401c0ad7ad501dba84d33296797226a7367fc0/_support.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/08401c0ad7ad501dba84d33296797226a7367fc0/_support.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_buttons.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_buttons.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_colors.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_colors.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_errors.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_errors.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_header.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_header.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_mixins.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_mixins.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_sidebar.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_sidebar.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_tables.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_tables.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/main.min.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/main.min.scssc -------------------------------------------------------------------------------- /.sass-cache/5fd84aed066c1123a49a4b2e70d9778046041310/_support.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/5fd84aed066c1123a49a4b2e70d9778046041310/_support.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_columns.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_columns.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_filter.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_filter.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_images.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_images.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_opacity.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_opacity.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_regions.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_regions.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_shared.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_shared.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_buttons.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_buttons.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_colors.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_colors.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_errors.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_errors.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_header.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_header.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_mixins.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_mixins.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_sidebar.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_sidebar.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_tables.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_tables.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/main.min.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/main.min.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_columns.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_columns.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_filter.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_filter.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_images.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_images.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_opacity.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_opacity.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_regions.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_regions.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_shared.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_shared.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_columns.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_columns.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_filter.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_filter.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_images.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_images.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_opacity.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_opacity.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_regions.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_regions.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_shared.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_shared.scssc -------------------------------------------------------------------------------- /.sass-cache/e706a5e2bcf859659cf2acda3ee301e5190ba734/_support.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/e706a5e2bcf859659cf2acda3ee301e5190ba734/_support.scssc -------------------------------------------------------------------------------- /.sass-cache/eae41b11bce2b59e4ed9fb104c38e2c9ac1ca4e0/_support.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/eae41b11bce2b59e4ed9fb104c38e2c9ac1ca4e0/_support.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_appearance.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_appearance.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_box-shadow.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_box-shadow.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_font-face.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_font-face.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_transform.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_transform.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_transition.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_transition.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_typeplate.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_typeplate.scssc -------------------------------------------------------------------------------- /.sass-cache/418ad867c62e8d3435cd9ae00f15d595aaa291e8/_utilities.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/418ad867c62e8d3435cd9ae00f15d595aaa291e8/_utilities.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_appearance.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_appearance.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_box-shadow.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_box-shadow.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_font-face.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_font-face.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_transform.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_transform.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_transition.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_transition.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_typeplate.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_typeplate.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_appearance.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_appearance.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_box-shadow.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_box-shadow.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_font-face.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_font-face.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_transform.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_transform.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_transition.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_transition.scssc -------------------------------------------------------------------------------- /.sass-cache/8a442de7a3a53c2f8e610debb2ab1bb678341528/_utilities.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/8a442de7a3a53c2f8e610debb2ab1bb678341528/_utilities.scssc -------------------------------------------------------------------------------- /.sass-cache/a22119c6b7b4895e1e43f3e7d4c5c9c27743ab99/_utilities.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/a22119c6b7b4895e1e43f3e7d4c5c9c27743ab99/_utilities.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_appearance.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_appearance.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_box-shadow.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_box-shadow.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_font-face.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_font-face.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_transform.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_transform.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_transition.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_transition.scssc -------------------------------------------------------------------------------- /.sass-cache/dca05306bc8135662de94df30baaebf8dd7f3e5e/_utilities.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/dca05306bc8135662de94df30baaebf8dd7f3e5e/_utilities.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_hyphenation.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_hyphenation.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_inline-block.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_inline-block.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_text-shadow.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_text-shadow.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_hyphenation.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_hyphenation.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_inline-block.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_inline-block.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_text-shadow.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_text-shadow.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_hyphenation.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_hyphenation.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_inline-block.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_inline-block.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_text-shadow.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_text-shadow.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_hyphenation.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_hyphenation.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_inline-block.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_inline-block.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_text-shadow.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_text-shadow.scssc -------------------------------------------------------------------------------- /client/helpers/typekit.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_background-clip.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_background-clip.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_border-radius.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_border-radius.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_vars-typeplate.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_vars-typeplate.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_background-clip.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_background-clip.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_border-radius.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_border-radius.scssc -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_vars-typeplate.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_vars-typeplate.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_background-clip.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_background-clip.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_border-radius.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_border-radius.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_background-clip.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_background-clip.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_border-radius.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_border-radius.scssc -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_background-origin.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_background-origin.scssc -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_background-origin.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_background-origin.scssc -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_background-origin.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_background-origin.scssc -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_background-origin.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ramsaylanier/MeteorCMS/HEAD/.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_background-origin.scssc -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_titles.scssc: -------------------------------------------------------------------------------- 1 | 3.2.14 (Media Mark) 2 | da39a3ee5e6b4b0d3255bfef95601890afd80709 3 | o:Sass::Tree::RootNode :@children[:@templateI":ET: 4 | @linei: @options{ -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_titles.scssc: -------------------------------------------------------------------------------- 1 | 3.2.7 (Media Mark) 2 | da39a3ee5e6b4b0d3255bfef95601890afd80709 3 | o:Sass::Tree::RootNode :@children[:@templateI":ET: 4 | @linei: @options{ -------------------------------------------------------------------------------- /client/views/pages/templates/posts_list.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/views/users/users_list.js: -------------------------------------------------------------------------------- 1 | Template.usersList.helpers({ 2 | users: function(){ 3 | return Meteor.users.find(); 4 | }, 5 | userEmail: function(user){ 6 | return _.pluck(user.emails, "address"); 7 | } 8 | }); -------------------------------------------------------------------------------- /client/views/users/users.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/views/pages/templates/posts_lists_excerpt.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/views/pages/templates/default.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/views/pages/templates/default.js: -------------------------------------------------------------------------------- 1 | Template.default_template.helpers({ 2 | showTitle: function(){ 3 | if (Pages.findOne({_id: this._id}).hideTitle === 'checked'){ 4 | return false; 5 | } else{ 6 | return true; 7 | } 8 | } 9 | }); -------------------------------------------------------------------------------- /client/views/settings/general_settings.js: -------------------------------------------------------------------------------- 1 | Template.generalSettings.helpers({ 2 | isSelected: function(title){ 3 | var landingPage = Settings.findOne().landingPage; 4 | if (title == landingPage){ 5 | return "selected='selected'"; 6 | } 7 | } 8 | }); -------------------------------------------------------------------------------- /client/views/header/header.js: -------------------------------------------------------------------------------- 1 | Template.header.helpers({ 2 | pages: function(){ 3 | return Pages.find(); 4 | }, 5 | settings: function(){ 6 | return Settings.findOne(); 7 | }, 8 | headerMenu: function(){ 9 | return Menus.findOne({location: "header"}); 10 | } 11 | }); -------------------------------------------------------------------------------- /client/stylesheets/sass/_errors.scss: -------------------------------------------------------------------------------- 1 | .errors{ 2 | 3 | color: $dark-grey; 4 | 5 | .alert{ 6 | padding: 5px; 7 | margin-bottom: 1rem; 8 | } 9 | 10 | .success{ 11 | background-color: $green; 12 | } 13 | 14 | .error{ 15 | background-color: $light-red; 16 | } 17 | } -------------------------------------------------------------------------------- /client/views/categories/categories.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smart.json: -------------------------------------------------------------------------------- 1 | { 2 | "packages": { 3 | "iron-router": {}, 4 | "spin": {}, 5 | "moment": {}, 6 | "user-session": {}, 7 | "bootstrap-wysiwyg": {}, 8 | "collectionFS": {}, 9 | "roles": {}, 10 | "graphicsmagick": {}, 11 | "cfs-public-folder": {} 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/helpers/errors.js: -------------------------------------------------------------------------------- 1 | //create local Meteor collection (client-only) to store errors 2 | Errors = new Meteor.Collection(null); 3 | 4 | throwError = function(message, type){ 5 | Errors.insert({message: message, type: type, seen: false}) 6 | } 7 | 8 | clearErrors = function(){ 9 | Errors.remove({seen:true}); 10 | } -------------------------------------------------------------------------------- /client/views/posts/view_post.js: -------------------------------------------------------------------------------- 1 | Template.viewPostExcerpt.helpers({ 2 | prettyDate: function(submitted){ 3 | return moment(new Date(submitted)).format('MMMM Do, YYYY'); 4 | } 5 | }); 6 | 7 | Template.viewPostSingle.helpers({ 8 | prettyDate: function(submitted){ 9 | return moment(new Date(submitted)).format('MMMM Do, YYYY'); 10 | } 11 | }); -------------------------------------------------------------------------------- /client/views/admin/admin.js: -------------------------------------------------------------------------------- 1 | Template.admin.helpers({ 2 | pageCount: function(){ 3 | return Pages.find().count(); 4 | }, 5 | postCount: function(){ 6 | return Posts.find().count(); 7 | }, 8 | categoryCount: function(){ 9 | return Categories.find().count(); 10 | }, 11 | settings: function(){ 12 | return Settings.findOne(); 13 | } 14 | }); -------------------------------------------------------------------------------- /client/views/application/layout.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/views/includes/errors.html: -------------------------------------------------------------------------------- 1 | 8 | 9 | -------------------------------------------------------------------------------- /.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # 3 | # 'meteor add' and 'meteor remove' will edit this file for you, 4 | # but you can also edit it by hand. 5 | 6 | standard-app-packages 7 | iron-router 8 | spin 9 | accounts-ui 10 | accounts-password 11 | moment 12 | user-session 13 | graphicsmagick 14 | http 15 | roles 16 | cfs-filesystem 17 | cfs-public-folder 18 | collectionFS 19 | -------------------------------------------------------------------------------- /client/views/includes/errors.js: -------------------------------------------------------------------------------- 1 | Template.errors.helpers({ 2 | errors: function(){ 3 | return Errors.find(); 4 | } 5 | }); 6 | 7 | Template.error.rendered = function(){ 8 | var error = this.data; 9 | Meteor.defer(function(){ 10 | Errors.update(error._id, {$set: {seen: true}}); 11 | }); 12 | } 13 | 14 | Template.error.events({ 15 | 'click .close': function(e){ 16 | $(e.target).parent('.alert').remove(); 17 | } 18 | }); -------------------------------------------------------------------------------- /client/stylesheets/sass/_media.scss: -------------------------------------------------------------------------------- 1 | .attachment-preview{ 2 | width: 120px; 3 | height: 120px; 4 | float: left; 5 | overflow: hidden; 6 | position: relative; 7 | 8 | .centered{ 9 | position: absolute; 10 | top: 0; 11 | left: 0; 12 | width: 100%; 13 | height: 100%; 14 | 15 | @include translate(50%, 50%); 16 | } 17 | 18 | img{ 19 | width: auto; 20 | max-height: 120px; 21 | 22 | @include translate(-50%, -50%); 23 | } 24 | } -------------------------------------------------------------------------------- /client/views/pages/view_page.js: -------------------------------------------------------------------------------- 1 | Template.viewPage.helpers({ 2 | page: function(){ 3 | return Pages.find({_id: this._id}); 4 | }, 5 | showTitle: function(){ 6 | if (Pages.findOne({_id: this._id}).hideTitle === 'checked'){ 7 | return false; 8 | } else{ 9 | return true; 10 | } 11 | }, 12 | pageTemplate: function(){ 13 | var templateName = Pages.findOne({_id: this._id}).pageTemplate.replace(/ /g, '_'); 14 | return Template[templateName]; 15 | } 16 | }); -------------------------------------------------------------------------------- /.sass-cache/08401c0ad7ad501dba84d33296797226a7367fc0/_reset.scssc: -------------------------------------------------------------------------------- 1 | 3.2.8 (Media Mark) 2 | df78759f0fe6b88a633d20d26581ca4cdb829111 3 | o:Sass::Tree::RootNode 4 | : 5 | @linei: @options{:@template"8@import "reset/utilities"; 6 | 7 | @include global-reset; 8 | :@has_childrenT:@children[o:Sass::Tree::ImportNode :@imported_file0;@;0;i:@imported_filename"reset/utilities; 9 | [o:Sass::Tree::MixinNode : 10 | @name"global-reset;@: @splat0: 11 | @args[;i; 12 | [:@keywords{ -------------------------------------------------------------------------------- /.sass-cache/eae41b11bce2b59e4ed9fb104c38e2c9ac1ca4e0/_reset.scssc: -------------------------------------------------------------------------------- 1 | 3.2.12 (Media Mark) 2 | df78759f0fe6b88a633d20d26581ca4cdb829111 3 | o:Sass::Tree::RootNode 4 | : 5 | @linei:@template"8@import "reset/utilities"; 6 | 7 | @include global-reset; 8 | :@has_childrenT: @options{:@children[o:Sass::Tree::ImportNode ;i;0:@imported_file0; @; 9 | [:@imported_filename"reset/utilitieso:Sass::Tree::MixinNode :@keywords{: 10 | @name"global-reset;i; @: @splat0; 11 | [: 12 | @args[ -------------------------------------------------------------------------------- /.sass-cache/5fd84aed066c1123a49a4b2e70d9778046041310/_reset.scssc: -------------------------------------------------------------------------------- 1 | 3.2.7 (Media Mark) 2 | df78759f0fe6b88a633d20d26581ca4cdb829111 3 | o:Sass::Tree::RootNode 4 | :@children[o:Sass::Tree::ImportNode :@imported_filenameI"reset/utilities:ET;[:@template0: 5 | @linei: @options{:@imported_file0o:Sass::Tree::MixinNode : 6 | @nameI"global-reset; T: 7 | @args[:@keywords{: @splat0;[; i; @ 8 | ; 9 | I"8@import "reset/utilities"; 10 | 11 | @include global-reset; 12 | ; T; i:@has_childrenT; @ 13 | -------------------------------------------------------------------------------- /.sass-cache/e706a5e2bcf859659cf2acda3ee301e5190ba734/_reset.scssc: -------------------------------------------------------------------------------- 1 | 3.2.14 (Media Mark) 2 | df78759f0fe6b88a633d20d26581ca4cdb829111 3 | o:Sass::Tree::RootNode 4 | :@children[o:Sass::Tree::ImportNode :@imported_filenameI"reset/utilities:ET;[:@template0: 5 | @linei: @options{:@imported_file0o:Sass::Tree::MixinNode : 6 | @nameI"global-reset; T: 7 | @args[:@keywords{: @splat0;[; i; @ 8 | ; 9 | I"8@import "reset/utilities"; 10 | 11 | @include global-reset; 12 | ; T; i:@has_childrenT; @ 13 | -------------------------------------------------------------------------------- /client/stylesheets/sass/_tables.scss: -------------------------------------------------------------------------------- 1 | 2 | .table{ 3 | width: 100%; 4 | 5 | .table-headings{ 6 | font-size: 1.2rem; 7 | } 8 | 9 | .table-row{ 10 | &:nth-of-type(even){ 11 | background-color: white; 12 | } 13 | 14 | &:hover{ 15 | .row-actions{ 16 | opacity: 1.0; 17 | } 18 | } 19 | } 20 | } 21 | 22 | 23 | .row-actions{ 24 | opacity: 0.0; 25 | 26 | li{ 27 | display: inline-block; 28 | padding: 0rem .5rem; 29 | font-size: .8rem; 30 | text-align: center; 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /client/views/pages/page_list.js: -------------------------------------------------------------------------------- 1 | Template.pagesList.helpers({ 2 | pages: function(){ 3 | return Pages.find(); 4 | }, 5 | prettyDate: function(submitted){ 6 | return moment(new Date(submitted)).format('MMMM Do, YYYY'); 7 | } 8 | }); 9 | 10 | Template.pagesList.events({ 11 | 'click .delete-page' : function(e) { 12 | e.preventDefault(); 13 | 14 | if (confirm("Delete This Page?")){ 15 | var currentPageId = this._id; 16 | Pages.remove(currentPageId); 17 | Router.go('/admin/pages'); 18 | } 19 | } 20 | }); -------------------------------------------------------------------------------- /client/views/posts/posts_list.js: -------------------------------------------------------------------------------- 1 | Template.postsList.helpers({ 2 | posts: function(){ 3 | return Posts.find(); 4 | }, 5 | prettyDate: function(submitted){ 6 | return moment(new Date(submitted)).format('MMMM Do, YYYY'); 7 | } 8 | }); 9 | 10 | Template.postsList.events({ 11 | 'click .delete-post' : function(e) { 12 | e.preventDefault(); 13 | 14 | if (confirm("Delete This Post?")){ 15 | var currentPostId = this._id; 16 | Posts.remove(currentPostId); 17 | Router.go('/admin/posts'); 18 | } 19 | } 20 | }); -------------------------------------------------------------------------------- /client/views/categories/add_category.js: -------------------------------------------------------------------------------- 1 | Template.addCategory.events({ 2 | 'submit form':function(e){ 3 | e.preventDefault(); 4 | 5 | var category ={ 6 | name: $(e.target).find('[name=category-name]').val(), 7 | slug: $(e.target).find('[name=category-slug]').val() 8 | } 9 | 10 | Meteor.call('category', category, function(error, id) { 11 | if (error){ 12 | //call custom throwError function 13 | throwError(error.reason, 'error'); 14 | } else { 15 | Router.go('/admin/categories', page); 16 | } 17 | }); 18 | } 19 | 20 | }) -------------------------------------------------------------------------------- /client/views/categories/add_category.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/stylesheets/sass/_breakpoints.scss: -------------------------------------------------------------------------------- 1 | // Breakpoints 2 | // ------------------------- Source: http://blog.scur.pl/2012/06/variable-media-queries-less-css/ 3 | $highdensity: "only screen and (-webkit-min-device-pixel-ratio: 1.5)", 4 | "only screen and (min--moz-device-pixel-ratio: 1.5)", 5 | "only screen and (-o-min-device-pixel-ratio: 3/2)", 6 | "only screen and (min-device-pixel-ratio: 1.5)"; 7 | $mobile: "only screen and (max-width: 529px)"; 8 | $tablet: "only screen and (min-width: 530px) and (max-width: 699px)"; 9 | $desktop: "only screen and (min-width: 700px) and (max-width: 1200px)"; 10 | $desktop-xl: "only screen and (min-width: 1201px)"; -------------------------------------------------------------------------------- /server/fixtures.js: -------------------------------------------------------------------------------- 1 | if ( Menus.find().count() === 0 ) { 2 | Menus.insert({ 3 | title: 'Primary Navigation' 4 | }); 5 | } 6 | 7 | if (Settings.find().count() === 0 ){ 8 | Settings.insert({ 9 | headerLocation: 'top', 10 | siteTitle: 'Meteor CMS | Your Blank Canvas', 11 | landingPage: 'Home' 12 | }) 13 | } 14 | 15 | if (Pages.find().count() === 0 ){ 16 | Pages.insert({ 17 | title: 'Home', 18 | slug: 'home', 19 | pageTemplate: 'default template', 20 | content: 'Welcome to MeteorCMS!' 21 | }) 22 | } 23 | 24 | if (Meteor.users.find().count() === 1){ 25 | var user = Meteor.users.findOne(); 26 | console.log('Admin role added to userId: ' + user.username); 27 | Roles.addUsersToRoles(user, "Admin"); 28 | } -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_blocks.scssc: -------------------------------------------------------------------------------- 1 | 3.2.7 (Media Mark) 2 | 6459b4e53727063eeffd5898ca7d5cd4484653ae 3 | o:Sass::Tree::RootNode 4 | :@children[o:Sass::Tree::RuleNode : 5 | @rule[I" .block:ET: 6 | @tabsi:@parsed_ruleso:"Sass::Selector::CommaSequence: @members[o:Sass::Selector::Sequence; [o:#Sass::Selector::SimpleSequence 7 | ; [o:Sass::Selector::Class: 8 | @name[I" 9 | block; T: 10 | @linei:@filenameI"; F: @subject0: @sourceso:Set: 11 | @hash{;i;@;i;@;[o:Sass::Tree::PropNode ;[I" padding; T: @valueo:Sass::Script::String;I" 1rem; T: 12 | @type:identifier: @options{; 13 | i:@prop_syntax:new;[;i;@;i:@has_childrenT;@:@templateI".block{ 14 | padding: 1rem; 15 | }; T;i; T;@ -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_blocks.scssc: -------------------------------------------------------------------------------- 1 | 3.2.14 (Media Mark) 2 | 6459b4e53727063eeffd5898ca7d5cd4484653ae 3 | o:Sass::Tree::RootNode 4 | :@children[o:Sass::Tree::RuleNode : 5 | @rule[I" .block:ET: 6 | @tabsi:@parsed_ruleso:"Sass::Selector::CommaSequence: @members[o:Sass::Selector::Sequence; [o:#Sass::Selector::SimpleSequence 7 | ; [o:Sass::Selector::Class: 8 | @name[I" 9 | block; T: 10 | @linei:@filenameI"; F: @subject0: @sourceso:Set: 11 | @hash{;i;@;i;@;[o:Sass::Tree::PropNode ;[I" padding; T: @valueo:Sass::Script::String;I" 1rem; T: 12 | @type:identifier: @options{; 13 | i:@prop_syntax:new;[;i;@;i:@has_childrenT;@:@templateI".block{ 14 | padding: 1rem; 15 | }; T;i; T;@ -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_footer.scssc: -------------------------------------------------------------------------------- 1 | 3.2.7 (Media Mark) 2 | 54cf07285230aaf741e5cdaa62eefdd6ddd0b3a8 3 | o:Sass::Tree::RootNode 4 | :@children[o:Sass::Tree::RuleNode : 5 | @rule[I" .footer:ET: 6 | @tabsi:@parsed_ruleso:"Sass::Selector::CommaSequence: @members[o:Sass::Selector::Sequence; [o:#Sass::Selector::SimpleSequence 7 | ; [o:Sass::Selector::Class: 8 | @name[I" footer; T: 9 | @linei:@filenameI"; F: @subject0: @sourceso:Set: 10 | @hash{;i;@;i;@;[o; ;[I".footer-content; T; 11 | i; o; ; [o;; [o; 12 | ; [o;;[I"footer-content; T;i;I"; F;0;o;;{;i;@#;i;@#;[;i:@has_childrenT: @options{;i;T;@':@templateI"%.footer{ 13 | .footer-content{ 14 | 15 | } 16 | }; T;i;T;@' -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_footer.scssc: -------------------------------------------------------------------------------- 1 | 3.2.14 (Media Mark) 2 | 54cf07285230aaf741e5cdaa62eefdd6ddd0b3a8 3 | o:Sass::Tree::RootNode 4 | :@children[o:Sass::Tree::RuleNode : 5 | @rule[I" .footer:ET: 6 | @tabsi:@parsed_ruleso:"Sass::Selector::CommaSequence: @members[o:Sass::Selector::Sequence; [o:#Sass::Selector::SimpleSequence 7 | ; [o:Sass::Selector::Class: 8 | @name[I" footer; T: 9 | @linei:@filenameI"; F: @subject0: @sourceso:Set: 10 | @hash{;i;@;i;@;[o; ;[I".footer-content; T; 11 | i; o; ; [o;; [o; 12 | ; [o;;[I"footer-content; T;i;I"; F;0;o;;{;i;@#;i;@#;[;i:@has_childrenT: @options{;i;T;@':@templateI"%.footer{ 13 | .footer-content{ 14 | 15 | } 16 | }; T;i;T;@' -------------------------------------------------------------------------------- /client/stylesheets/sass/_buttons.scss: -------------------------------------------------------------------------------- 1 | // ******** BUTTONS ********** 2 | 3 | .btn{ 4 | padding: .5rem; 5 | } 6 | 7 | .small-btn{ 8 | padding: .25rem; 9 | font-size: .8rem; 10 | } 11 | 12 | .large-btn{ 13 | padding: .75rem; 14 | font-size: 1.3rem; 15 | } 16 | 17 | .blue-btn{ 18 | background-color: $blue; 19 | color: white; 20 | 21 | &:hover{ 22 | background-color: $dark-blue; 23 | color: white; 24 | } 25 | } 26 | 27 | .red-btn{ 28 | background-color: $red; 29 | color: white; 30 | 31 | &:hover{ 32 | background-color: $dark-red; 33 | color: white; 34 | } 35 | } 36 | 37 | .white-btn{ 38 | background-color: white; 39 | color: $red; 40 | } 41 | 42 | button{ 43 | border: none; 44 | cursor: pointer; 45 | font-size: 1rem; 46 | @include transition(300ms); 47 | } -------------------------------------------------------------------------------- /packages/.gitignore: -------------------------------------------------------------------------------- 1 | collectionFS 2 | cfs-base-package 3 | cfs-transfer 4 | cfs-file 5 | cfs-ejson-file 6 | cfs-collection 7 | cfs-access-point 8 | cfs-worker 9 | cfs-upload-http 10 | power-queue 11 | reactive-list 12 | cfs-filesaver 13 | cfs-storage-adapter 14 | cfs-upload-ddp 15 | http-methods 16 | http-publish 17 | cfs-gridfs 18 | cfs-tempstore 19 | cfs-filesystem 20 | cfs-handlebars 21 | cfs-graphicsmagick 22 | iron-router 23 | spin 24 | moment 25 | user-session 26 | bootstrap-wysiwyg 27 | reactive-property 28 | micro-queue 29 | authorization 30 | graphicsmagick 31 | /iron-router 32 | /spin 33 | /moment 34 | /user-session 35 | /bootstrap-wysiwyg 36 | /authorization 37 | /graphicsmagick 38 | /collectionFS 39 | /cfs-public-folder 40 | /roles 41 | roles 42 | blaze-layout 43 | cfs-public-folder 44 | -------------------------------------------------------------------------------- /client/stylesheets/sass/_colors.scss: -------------------------------------------------------------------------------- 1 | $red: #ee373a; 2 | $light-red: #F46264; 3 | $dark-red: #65120e; 4 | $light-grey: #F2F2F2; 5 | $grey: #999a9a; 6 | $dark-grey: #232221; 7 | $midnight: #171616; 8 | $blue: #47c6d9; 9 | $dark-blue: #2f9baa; 10 | $green: rgb(172, 237, 143); 11 | 12 | $pink1: #f7c7c5; 13 | $pink2: #f59c9a; 14 | $pink3: #f59c9a; 15 | 16 | .pink1{ 17 | color: $pink1; 18 | } 19 | 20 | .pink2{ 21 | color: $pink2; 22 | } 23 | 24 | .pink3{ 25 | color: $pink3; 26 | } 27 | 28 | .red{ 29 | color: $red; 30 | } 31 | 32 | .dark-red{ 33 | color: $dark-red; 34 | } 35 | 36 | .blue{ 37 | color: $blue; 38 | } 39 | 40 | .white-bg{ 41 | background-color: white; 42 | } 43 | 44 | .light-grey-bg{ 45 | background-color: $light-grey; 46 | } 47 | 48 | .dark-grey-bg{ 49 | background-color: rgba($dark-grey, .1); 50 | } -------------------------------------------------------------------------------- /client/stylesheets/sass/_forms.scss: -------------------------------------------------------------------------------- 1 | .form-control{ 2 | 3 | margin: .5rem 0rem; 4 | 5 | .label{ 6 | font-weight: 600; 7 | font-size: .9rem; 8 | margin-right: .5rem; 9 | } 10 | 11 | input[type="text"]{ 12 | height: 1.5rem; 13 | 14 | &:focus{ 15 | outline: none; 16 | } 17 | } 18 | 19 | input[type="file"]{ 20 | height: 2rem; 21 | } 22 | 23 | select{ 24 | height: 1.5rem; 25 | border: 1px solid white; 26 | font-family: $copy-font; 27 | font-size: .8rem; 28 | } 29 | } 30 | 31 | input[type="submit"]{ 32 | margin: 0; 33 | border: none; 34 | color: white; 35 | cursor: pointer; 36 | @include transition(300ms); 37 | 38 | &:hover{ 39 | background-color: $dark-grey; 40 | } 41 | } 42 | 43 | .modal{ 44 | position: fixed; 45 | height: 100%; 46 | width: 100%; 47 | top: 0px; 48 | left: 0px; 49 | background-color: rgba($dark-grey, .7); 50 | } -------------------------------------------------------------------------------- /client/views/header/header.html: -------------------------------------------------------------------------------- 1 | 26 | 27 | -------------------------------------------------------------------------------- /client/views/users/users.js: -------------------------------------------------------------------------------- 1 | Template.users.events({ 2 | 'click .edit-user':function (e){ 3 | e.preventDefault(); 4 | $('.edit-user').parents('.table-row').find('.edit-user-content').slideToggle(); 5 | }, 6 | 'click .add-role-btn': function(e){ 7 | e.preventDefault(); 8 | var roleName = $('.role-name-field').val(); 9 | return Roles.createRole(roleName); 10 | }, 11 | 'click .delete-role': function(e){ 12 | e.preventDefault(); 13 | var roleName = $(e.target).attr('data-role-type'); 14 | return Roles.deleteRole(roleName); 15 | }, 16 | 'click .assign-role-btn': function(e){ 17 | var user = Meteor.users.findOne({_id: this._id}); 18 | var role = $(e.target).next([name="assign-role-select"]).val(); 19 | return Roles.addUsersToRoles(user, role); 20 | } 21 | }) 22 | 23 | Template.users.helpers({ 24 | roles: function(){ 25 | return Meteor.roles.find(); 26 | } 27 | }) -------------------------------------------------------------------------------- /client/stylesheets/sass/_sidebar.scss: -------------------------------------------------------------------------------- 1 | .sidebar{ 2 | position: fixed; 3 | width: 160px; 4 | height: 100%; 5 | left: 0px; 6 | background-color: $dark-grey; 7 | z-index: 100; 8 | 9 | .nav{ 10 | .nav-links{ 11 | li{ 12 | position: relative; 13 | text-align: center; 14 | padding: .5rem; 15 | 16 | @include transition(300ms); 17 | 18 | &:hover{ 19 | background-color: $midnight; 20 | 21 | a{ 22 | color: $dark-blue; 23 | } 24 | 25 | .submenu{ 26 | display: block; 27 | } 28 | } 29 | 30 | a{ 31 | color: $grey; 32 | } 33 | } 34 | 35 | .submenu{ 36 | display: none; 37 | position: absolute; 38 | top: 0px; 39 | left: 160px; 40 | width: 160px; 41 | background-color: $dark-grey; 42 | 43 | &:hover{ 44 | display: block; 45 | } 46 | 47 | li{ 48 | a{ 49 | color: $grey; 50 | } 51 | } 52 | } 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /server/publications.js: -------------------------------------------------------------------------------- 1 | Meteor.publish('usernames', function(){ 2 | return Meteor.users.find({}, {fields: {username: 1}}); 3 | }); 4 | 5 | Meteor.publish('pages',function(){ 6 | return Pages.find(); 7 | }); 8 | 9 | Meteor.publish('posts',function(){ 10 | return Posts.find(); 11 | }); 12 | 13 | Meteor.publish('media', function() { 14 | return Media.find(); 15 | }); 16 | 17 | Meteor.publish('categories', function(){ 18 | return Categories.find(); 19 | }); 20 | 21 | Meteor.publish('settings', function(){ 22 | return Settings.find(); 23 | }); 24 | 25 | Meteor.publish('menus', function(){ 26 | return Menus.find(); 27 | }); 28 | 29 | Meteor.publish(null, function (){ 30 | return Meteor.roles.find({}) 31 | }); 32 | 33 | 34 | //publish all the users to the client if the current user has the Admin role. 35 | Meteor.publish(null, function(){ 36 | if (Roles.userIsInRole(this.userId, "Admin")){ 37 | return Meteor.users.find(); 38 | } 39 | }); -------------------------------------------------------------------------------- /client/views/settings/settings.html: -------------------------------------------------------------------------------- 1 | 22 | 23 | -------------------------------------------------------------------------------- /client/views/posts/view_post.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | -------------------------------------------------------------------------------- /config.rb: -------------------------------------------------------------------------------- 1 | # Require any additional compass plugins here. 2 | 3 | # Set this to the root of your project when deployed: 4 | http_path = "/" 5 | css_dir = "client/stylesheets" 6 | sass_dir = "client/stylesheets/sass" 7 | images_dir = "/public" 8 | 9 | 10 | # You can select your preferred output style here (can be overridden via the command line): 11 | # output_style = :expanded or :nested or :compact or :compressed 12 | 13 | # To enable relative paths to assets via compass helper functions. Uncomment: 14 | # relative_assets = true 15 | 16 | # To disable debugging comments that display the original location of your selectors. Uncomment: 17 | # line_comments = false 18 | 19 | 20 | # If you prefer the indented syntax, you might want to regenerate this 21 | # project again passing --syntax sass, or you can uncomment this: 22 | # preferred_syntax = :sass 23 | # and then run: 24 | # sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass 25 | preferred_syntax = :scss 26 | -------------------------------------------------------------------------------- /client/views/admin/admin_sidebar.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/main.js: -------------------------------------------------------------------------------- 1 | Meteor.subscribe('pages'); 2 | Meteor.subscribe('posts'); 3 | Meteor.subscribe('media'); 4 | Meteor.subscribe('categories'); 5 | Meteor.subscribe('menus'); 6 | Meteor.subscribe('usernames', function () { 7 | //if there is a user and the username is "Admin", then disallow additional user creation 8 | var user = Meteor.users.find().fetch(); 9 | if (user[0].username == 'admin'){ 10 | Accounts.config({ 11 | forbidClientAccountCreation: 'true' 12 | }); 13 | } 14 | }); 15 | 16 | Accounts.ui.config({ 17 | passwordSignupFields: 'USERNAME_AND_EMAIL' 18 | }); 19 | 20 | UI.registerHelper('setTitle', function(title){ 21 | if (title){ 22 | document.title = title; 23 | } else { 24 | document.title = "Meteor CMS | Your Blank Canvas" 25 | } 26 | }); 27 | 28 | UI.registerHelper('pages', function(){ 29 | return Pages.find(); 30 | }); 31 | 32 | UI.registerHelper('posts', function(){ 33 | return Posts.find(); 34 | }); 35 | 36 | UI.registerHelper('categories', function(){ 37 | return Categories.find(); 38 | }); 39 | 40 | Deps.autorun(function(){ 41 | Meteor.subscribe('settings'); 42 | }) -------------------------------------------------------------------------------- /client/views/settings/header_settings.js: -------------------------------------------------------------------------------- 1 | 2 | Template.headerSettings.rendered = function(){ 3 | var headerLocation = Settings.findOne().headerLocation; 4 | $('.header-location').find('option[value='+headerLocation+']').prop('selected',true); 5 | } 6 | 7 | Template.headerSettings.events({ 8 | 'click #header-image-btn':function(e){ 9 | e.preventDefault(); 10 | /*var frag = Meteor.render(Template.setFeaturedImage); 11 | var frag = UI.render(Template.setFeaturedImage); 12 | $('body').append(frag);*/ 13 | 14 | UI.insert(UI.render(Template.setFeaturedImage), document.body); 15 | }, 16 | 'click #remove-image-btn':function(e){ 17 | e.preventDefault(); 18 | var currentSettingsId = this._id; 19 | Settings.update(currentSettingsId, {$set: {headerImage: ""}}); 20 | }, 21 | 'change .resize-header-image': function(e){ 22 | var val = $(e.target).val(); 23 | console.log(val); 24 | if (val == 'yes'){ 25 | $('.header-resize-form').slideDown(); 26 | } else { 27 | $('.header-resize-form').slideUp(); 28 | $('.header-image-height').val(''); 29 | $('.header-image-width').val(''); 30 | } 31 | } 32 | }); -------------------------------------------------------------------------------- /client/views/settings/general_settings.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/views/admin/admin.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/views/pages/edit_page.js: -------------------------------------------------------------------------------- 1 | Template.editPage.events({ 2 | 'submit form': function(e){ 3 | e.preventDefault(); 4 | 5 | var currentPageId = this._id; 6 | 7 | var pageAttributes = { 8 | title: $(e.target).find('[name=title]').val(), 9 | slug: $(e.target).find('[name=slug]').val(), 10 | hideTitle: checkOptions($('#show-title')), 11 | pageTemplate: $(e.target).find('[name=template-type]').val().replace(/_/g, ' '), 12 | content: $(e.target).find('[name=editor]').val() 13 | } 14 | 15 | Meteor.call('updatePage', currentPageId, pageAttributes, function(error, id) { 16 | if(error){ 17 | throwError(error.reason, 'error'); 18 | } else { 19 | throwError('Published!', 'success'); 20 | } 21 | }); 22 | }, 23 | 24 | 'click #delete-page-btn' : function(e) { 25 | e.preventDefault(); 26 | 27 | if (confirm("Delete This Page?")){ 28 | var currentPageId = this._id; 29 | Pages.remove(currentPageId); 30 | Router.go('/admin/pages'); 31 | } 32 | } 33 | }); 34 | 35 | //reset Session variable to the current page title when editing pages 36 | Template.editPage.rendered = function(){ 37 | //only run this code on the first rendering, not on a re-render 38 | var val = $('#slug').val(); 39 | Session.set('slug', val.toLowerCase()); 40 | } 41 | 42 | function checkOptions(option){ 43 | if (option.is(':checked')){ 44 | return 'checked' 45 | } else { 46 | return '' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /client/views/users/users_list.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/views/posts/edit_post.js: -------------------------------------------------------------------------------- 1 | Template.editPost.events({ 2 | 'submit form': function(e){ 3 | e.preventDefault(); 4 | 5 | var currentPostId = this._id; 6 | var categories = []; 7 | $('.category-choices input[type="checkbox"]:checked').each(function(){ 8 | categories.push($(this).val()); 9 | }); 10 | 11 | var postAttributes = { 12 | title: $(e.target).find('[name=title]').val(), 13 | slug: encodeURI($(e.target).find('[name=slug]').val().replace(/\s+/g, '-')).toLowerCase(), 14 | content: $(e.target).find('[name=editor]').val(), 15 | excerpt: $(e.target).find('[name=excerpt]').val(), 16 | featuredImage: $(e.target).find('[name=featured-image]').val(), 17 | categories: categories 18 | } 19 | 20 | Meteor.call('updatePost', currentPostId, postAttributes, function(error, id) { 21 | if(error){ 22 | throwError(error.reason, 'error'); 23 | } else { 24 | throwError('Published!', 'success'); 25 | } 26 | }); 27 | }, 28 | 29 | 'click #delete-post-btn' : function(e) { 30 | e.preventDefault(); 31 | 32 | if (confirm("Delete This Post?")){ 33 | var currentPostId = this._id; 34 | Posts.remove(currentPostId); 35 | Router.go('/admin/posts'); 36 | } 37 | } 38 | }); 39 | 40 | //reset Session variable to the current post title when editing posts 41 | Template.editPost.rendered = function(){ 42 | //only run this code on the first rendering, not on a re-render 43 | var val = $('#slug').val(); 44 | Session.set('slug', val.toLowerCase()); 45 | } 46 | -------------------------------------------------------------------------------- /client/views/categories/list_categories.js: -------------------------------------------------------------------------------- 1 | Template.listCategories.helpers({ 2 | categories: function(){ 3 | return Categories.find(); 4 | }, 5 | postCount: function(name){ 6 | var posts = Posts.find({categories: name}); 7 | return posts.count(); 8 | } 9 | }); 10 | 11 | Template.listCategories.events({ 12 | 'click .delete-category': function(e){ 13 | e.preventDefault(); 14 | var category = this.name; 15 | Categories.remove(this._id); 16 | 17 | //remove category from all Posts that have it assigned 18 | var posts = Posts.find({categories: this.name}).fetch(); 19 | for (var i=0;i 2 |
3 |

Pages

4 | Add a new page 5 |
6 | 7 |
8 |
9 |
10 | Title 11 |
12 |
13 | Slug 14 |
15 |
16 | Created On 17 |
18 |
19 | Template 20 |
21 |
22 | {{#each pages}} 23 |
24 |
25 | {{title}} 26 | 30 |
31 |
32 | /{{slug}} 33 |
34 |
35 | {{prettyDate submitted}} 36 |
37 |
38 | {{pageTemplate}} 39 |
40 |
41 | {{/each}} 42 |
43 | 44 | -------------------------------------------------------------------------------- /client/views/users/roles_list.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_box-sizing.scssc: -------------------------------------------------------------------------------- 1 | 3.2.12 (Media Mark) 2 | a0824b32d17aa24527db91159b06dd18513c1088 3 | o:Sass::Tree::RootNode 4 | : 5 | @linei:@template"@import "shared"; 6 | 7 | // Change the box model for Mozilla, Webkit, IE8 and the future 8 | // 9 | // @param $bs 10 | // [ content-box | border-box ] 11 | 12 | @mixin box-sizing($bs) { 13 | $bs: unquote($bs); 14 | @include experimental(box-sizing, $bs, 15 | -moz, -webkit, not -o, not -ms, not -khtml, official 16 | ); 17 | } 18 | :@has_childrenT: @options{:@children[o:Sass::Tree::ImportNode ;i;0:@imported_file0; @; 19 | [:@imported_filename" sharedo:Sass::Tree::CommentNode 20 | : @value["z/* Change the box model for Mozilla, Webkit, IE8 and the future 21 | * 22 | * @param $bs 23 | * [ content-box | border-box ] */;i; @; 24 | [: 25 | @type: silento:Sass::Tree::MixinDefNode : 26 | @name"box-sizing;i ;T; @: @splat0; 27 | [o:Sass::Tree::VariableNode : @guarded0;"bs;i: 28 | @expro:Sass::Script::Funcall :@keywords{;" unquote;i; @;0: 29 | @args[o:Sass::Script::Variable ;"bs;i:@underscored_name"bs; @; @; 30 | [o:Sass::Tree::MixinNode ;{;"experimental;i; @;0; 31 | [;[ o:Sass::Script::String ;"box-sizing;i; @;:identifiero; ;"bs;i;"bs; @o; ;" -moz;i; @;;o; ;" -webkit;i; @;;o:!Sass::Script::UnaryOperation ;i: @operando; ;"-o;i; @;;; @:@operator:noto; ;i;!o; ;"-ms;i; @;;; @;";#o; ;i;!o; ;" -khtml;i; @;;; @;";#o; ;" official;i; @;;;[[o;;"bs;"bs; @0 -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_box-sizing.scssc: -------------------------------------------------------------------------------- 1 | 3.2.8 (Media Mark) 2 | a0824b32d17aa24527db91159b06dd18513c1088 3 | o:Sass::Tree::RootNode 4 | : 5 | @linei: @options{:@template"@import "shared"; 6 | 7 | // Change the box model for Mozilla, Webkit, IE8 and the future 8 | // 9 | // @param $bs 10 | // [ content-box | border-box ] 11 | 12 | @mixin box-sizing($bs) { 13 | $bs: unquote($bs); 14 | @include experimental(box-sizing, $bs, 15 | -moz, -webkit, not -o, not -ms, not -khtml, official 16 | ); 17 | } 18 | :@has_childrenT:@children[o:Sass::Tree::ImportNode :@imported_file0;@;0;i:@imported_filename" shared; 19 | [o:Sass::Tree::CommentNode 20 | ;@: @value["z/* Change the box model for Mozilla, Webkit, IE8 and the future 21 | * 22 | * @param $bs 23 | * [ content-box | border-box ] */: 24 | @type: silent;i; 25 | [o:Sass::Tree::MixinDefNode : 26 | @name"box-sizing;@; T: @splat0: 27 | @args[[o:Sass::Script::Variable;"bs;@:@underscored_name"bs0;i ; 28 | [o:Sass::Tree::VariableNode : 29 | @expro:Sass::Script::Funcall ;[o; ;"bs;i;@;"bs;" unquote;i;@;0:@keywords{;"bs;@;i; 30 | [: @guarded0o:Sass::Tree::MixinNode ;"experimental;@;0;[ o:Sass::Script::String ;i;@;:identifier;"box-sizingo; ;"bs;i;@;"bso; ;i;@;;;" -mozo; ;i;@;;;" -webkito:!Sass::Script::UnaryOperation ;i:@operator:not;@: @operando; ;i;@;;;"-oo; ;i;!;";@;#o; ;i;@;;;"-mso; ;i;!;";@;#o; ;i;@;;;" -khtmlo; ;i;@;;;" official;i; 31 | [;{ -------------------------------------------------------------------------------- /client/views/settings/settings.js: -------------------------------------------------------------------------------- 1 | Template.settings.events({ 2 | 'submit form': function(e){ 3 | e.preventDefault(); 4 | 5 | var currentSettingsId = ""; 6 | 7 | if (Settings.findOne()){ 8 | currentSettingsId = Settings.findOne()._id; 9 | } 10 | 11 | var settings = { 12 | siteTitle: $(e.target).find('[name=site-title]').val(), 13 | landingPage: $(e.target).find('[name=landing-page]').val(), 14 | headerLocation: $(e.target).find('[name=header-location]').val(), 15 | headerImage: $(e.target).find('[name=featured-image]').val(), 16 | headerHeight: $(e.target).find('[name=header-image-height]').val(), 17 | headerWidth: $(e.target).find('[name=header-image-width]').val() 18 | } 19 | 20 | Meteor.call('updateSettings', currentSettingsId, settings, function(error, id){ 21 | if(error){ 22 | throwError(error.reason, 'error'); 23 | } else { 24 | throwError('Saved!', 'success'); 25 | } 26 | }); 27 | } 28 | }); 29 | 30 | Template.settings.settings = function(){ 31 | return Settings.findOne(); 32 | } 33 | 34 | Template.settings.pages = function(){ 35 | return Pages.find(); 36 | } 37 | 38 | Template.settings.menus = { 39 | title: "Menus", 40 | } 41 | 42 | Template.settings.header = { 43 | title: "Header" 44 | } 45 | 46 | Template.settings.general = { 47 | title: "General", 48 | active: "toggle-active" 49 | } 50 | 51 | Template.settings.events({ 52 | 'click .settings-header':function(e){ 53 | e.preventDefault(); 54 | $(e.target).next('.settings-content').slideToggle(); 55 | $(e.target).children('.toggle').toggleClass('toggle-active'); 56 | } 57 | }); -------------------------------------------------------------------------------- /client/stylesheets/css/jquery.cleditor.css: -------------------------------------------------------------------------------- 1 | .cleditorMain {border:1px solid #999; padding:0 1px 1px; background-color:white} 2 | .cleditorMain iframe {border:none; margin:0; padding:0} 3 | .cleditorMain textarea {border:none; margin:0; padding:0; overflow-y:scroll; font:10pt Arial,Verdana; resize:none; outline:none /* webkit grip focus */} 4 | .cleditorToolbar {background: url('/toolbar.gif') repeat} 5 | .cleditorGroup {float:left; height:26px} 6 | .cleditorButton {float:left; width:24px; height:24px; margin:1px 0 1px 0; background: url('/buttons.gif')} 7 | .cleditorDisabled {opacity:0.3; filter:alpha(opacity=30)} 8 | .cleditorDivider {float:left; width:1px; height:23px; margin:1px 0 1px 0; background:#CCC} 9 | .cleditorPopup {border:solid 1px #999; background-color:white; color:#333333; position:absolute; font:10pt Arial,Verdana; cursor:default; z-index:10000} 10 | .cleditorList div {padding:2px 4px 2px 4px} 11 | .cleditorList p, 12 | .cleditorList h1, 13 | .cleditorList h2, 14 | .cleditorList h3, 15 | .cleditorList h4, 16 | .cleditorList h5, 17 | .cleditorList h6, 18 | .cleditorList font {padding:0; margin:0; background-color:Transparent} 19 | .cleditorColor {width:150px; padding:1px 0 0 1px} 20 | .cleditorColor div {float:left; width:14px; height:14px; margin:0 1px 1px 0} 21 | .cleditorPrompt {background-color:#F6F7F9; padding:4px; font-size:8.5pt} 22 | .cleditorPrompt input, 23 | .cleditorPrompt textarea {font:8.5pt Arial,Verdana;} 24 | .cleditorPrompt input {margin-top: 7px; margin-bottom: 4px;} 25 | .cleditorMsg {background-color:#FDFCEE; width:150px; padding:4px; font-size:8.5pt} 26 | -------------------------------------------------------------------------------- /client/views/posts/posts_list.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_box-sizing.scssc: -------------------------------------------------------------------------------- 1 | 3.2.14 (Media Mark) 2 | a0824b32d17aa24527db91159b06dd18513c1088 3 | o:Sass::Tree::RootNode 4 | :@children[o:Sass::Tree::ImportNode :@imported_filenameI" shared:ET;[:@template0: 5 | @linei: @options{:@imported_file0o:Sass::Tree::CommentNode 6 | : @value[I"z/* Change the box model for Mozilla, Webkit, IE8 and the future 7 | * 8 | * @param $bs 9 | * [ content-box | border-box ] */; T: 10 | @type: silent;[; i; @ 11 | o:Sass::Tree::MixinDefNode : 12 | @nameI"box-sizing; T: 13 | @args[[o:Sass::Script::Variable;I"bs; T:@underscored_nameI"bs; T; @ 14 | 0: @splat0;[o:Sass::Tree::VariableNode ;I"bs; T: 15 | @expro:Sass::Script::Funcall ;I" unquote; T;[o; ;I"bs; T;I"bs; T; i; @ 16 | :@keywords{;0; i; @ 17 | : @guarded0;[; i; @ 18 | o:Sass::Tree::MixinNode ;I"experimental; T;[ o:Sass::Script::String ;I"box-sizing; T;:identifier; i; @ 19 | o; ;I"bs; T;I"bs; T; i; @ 20 | o; ;I" -moz; T;;; i; @ 21 | o; ;I" -webkit; T;;; i; @ 22 | o:!Sass::Script::UnaryOperation : @operando; ;I"-o; T;;; i; @ 23 | :@operator:not; i; @ 24 | o; ;!o; ;I"-ms; T;;; i; @ 25 | ;";#; i; @ 26 | o; ;!o; ;I" -khtml; T;;; i; @ 27 | ;";#; i; @ 28 | o; ;I" official; T;;; i; @ 29 | ;{;0;[; i; @ 30 | ; i :@has_childrenT; @ 31 | ; 32 | I"@import "shared"; 33 | 34 | // Change the box model for Mozilla, Webkit, IE8 and the future 35 | // 36 | // @param $bs 37 | // [ content-box | border-box ] 38 | 39 | @mixin box-sizing($bs) { 40 | $bs: unquote($bs); 41 | @include experimental(box-sizing, $bs, 42 | -moz, -webkit, not -o, not -ms, not -khtml, official 43 | ); 44 | } 45 | ; T; i;$T; @ 46 | -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_box-sizing.scssc: -------------------------------------------------------------------------------- 1 | 3.2.7 (Media Mark) 2 | a0824b32d17aa24527db91159b06dd18513c1088 3 | o:Sass::Tree::RootNode 4 | :@children[o:Sass::Tree::ImportNode :@imported_filenameI" shared:ET;[:@template0: 5 | @linei: @options{:@imported_file0o:Sass::Tree::CommentNode 6 | : @value[I"z/* Change the box model for Mozilla, Webkit, IE8 and the future 7 | * 8 | * @param $bs 9 | * [ content-box | border-box ] */; T: 10 | @type: silent;[; i; @ 11 | o:Sass::Tree::MixinDefNode : 12 | @nameI"box-sizing; T: 13 | @args[[o:Sass::Script::Variable;I"bs; T:@underscored_nameI"bs; T; @ 14 | 0: @splat0;[o:Sass::Tree::VariableNode ;I"bs; T: 15 | @expro:Sass::Script::Funcall ;I" unquote; T;[o; ;I"bs; T;I"bs; T; i; @ 16 | :@keywords{;0; i; @ 17 | : @guarded0;[; i; @ 18 | o:Sass::Tree::MixinNode ;I"experimental; T;[ o:Sass::Script::String ;I"box-sizing; T;:identifier; i; @ 19 | o; ;I"bs; T;I"bs; T; i; @ 20 | o; ;I" -moz; T;;; i; @ 21 | o; ;I" -webkit; T;;; i; @ 22 | o:!Sass::Script::UnaryOperation : @operando; ;I"-o; T;;; i; @ 23 | :@operator:not; i; @ 24 | o; ;!o; ;I"-ms; T;;; i; @ 25 | ;";#; i; @ 26 | o; ;!o; ;I" -khtml; T;;; i; @ 27 | ;";#; i; @ 28 | o; ;I" official; T;;; i; @ 29 | ;{;0;[; i; @ 30 | ; i :@has_childrenT; @ 31 | ; 32 | I"@import "shared"; 33 | 34 | // Change the box model for Mozilla, Webkit, IE8 and the future 35 | // 36 | // @param $bs 37 | // [ content-box | border-box ] 38 | 39 | @mixin box-sizing($bs) { 40 | $bs: unquote($bs); 41 | @include experimental(box-sizing, $bs, 42 | -moz, -webkit, not -o, not -ms, not -khtml, official 43 | ); 44 | } 45 | ; T; i;$T; @ 46 | -------------------------------------------------------------------------------- /client/views/pages/new_page.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | 55 | -------------------------------------------------------------------------------- /client/views/categories/list_categories.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.sass-cache/1be79228d8a8bc5dc95ae1de3ec82ddc11fb1d4d/_breakpoints.scssc: -------------------------------------------------------------------------------- 1 | 3.2.14 (Media Mark) 2 | 791c76d7538a78066f0ec94112b8eb2eb5dda2fe 3 | o:Sass::Tree::RootNode 4 | :@children[ o:Sass::Tree::CommentNode 5 | : @value[I"x/* Breakpoints 6 | * ------------------------- Source: http://blog.scur.pl/2012/06/variable-media-queries-less-css/ */:ET: 7 | @type: silent;[: 8 | @linei: @options{o:Sass::Tree::VariableNode : 9 | @nameI"highdensity; T: 10 | @expro:Sass::Script::List ;[ o:Sass::Script::String ;I":only screen and (-webkit-min-device-pixel-ratio: 1.5); T; 11 | : string; i; @ o; ;I"7only screen and (min--moz-device-pixel-ratio: 1.5); T; 12 | ;; i ; @ o; ;I"5only screen and (-o-min-device-pixel-ratio: 3/2); T; 13 | ;; i 14 | ; @ o; ;I"2only screen and (min-device-pixel-ratio: 1.5); T; 15 | ;; i ; @ :@separator: 16 | comma; i; @ : @guarded0;[; i ; @ o; ;I" mobile; T;o; ;I"'only screen and (max-width: 529px); T; 17 | ;; i ; @ ;0;[; i ; @ o; ;I" tablet; T;o; ;I">only screen and (min-width: 530px) and (max-width: 699px); T; 18 | ;; i ; @ ;0;[; i ; @ o; ;I" desktop; T;o; ;I"?only screen and (min-width: 700px) and (max-width: 1200px); T; 19 | ;; i; @ ;0;[; i; @ o; ;I"desktop-xl; T;o; ;I"(only screen and (min-width: 1201px); T; 20 | ;; i; @ ;0;[; i; @ :@templateI"|// Breakpoints 21 | // ------------------------- Source: http://blog.scur.pl/2012/06/variable-media-queries-less-css/ 22 | $highdensity: "only screen and (-webkit-min-device-pixel-ratio: 1.5)", 23 | "only screen and (min--moz-device-pixel-ratio: 1.5)", 24 | "only screen and (-o-min-device-pixel-ratio: 3/2)", 25 | "only screen and (min-device-pixel-ratio: 1.5)"; 26 | $mobile: "only screen and (max-width: 529px)"; 27 | $tablet: "only screen and (min-width: 530px) and (max-width: 699px)"; 28 | $desktop: "only screen and (min-width: 700px) and (max-width: 1200px)"; 29 | $desktop-xl: "only screen and (min-width: 1201px)";; T; i:@has_childrenT; @ -------------------------------------------------------------------------------- /.sass-cache/6c3c9353135d4d9aa040cf155bf2d0f87f1c8330/_breakpoints.scssc: -------------------------------------------------------------------------------- 1 | 3.2.7 (Media Mark) 2 | 791c76d7538a78066f0ec94112b8eb2eb5dda2fe 3 | o:Sass::Tree::RootNode 4 | :@children[ o:Sass::Tree::CommentNode 5 | : @value[I"x/* Breakpoints 6 | * ------------------------- Source: http://blog.scur.pl/2012/06/variable-media-queries-less-css/ */:ET: 7 | @type: silent;[: 8 | @linei: @options{o:Sass::Tree::VariableNode : 9 | @nameI"highdensity; T: 10 | @expro:Sass::Script::List ;[ o:Sass::Script::String ;I":only screen and (-webkit-min-device-pixel-ratio: 1.5); T; 11 | : string; i; @ o; ;I"7only screen and (min--moz-device-pixel-ratio: 1.5); T; 12 | ;; i ; @ o; ;I"5only screen and (-o-min-device-pixel-ratio: 3/2); T; 13 | ;; i 14 | ; @ o; ;I"2only screen and (min-device-pixel-ratio: 1.5); T; 15 | ;; i ; @ :@separator: 16 | comma; i; @ : @guarded0;[; i ; @ o; ;I" mobile; T;o; ;I"'only screen and (max-width: 529px); T; 17 | ;; i ; @ ;0;[; i ; @ o; ;I" tablet; T;o; ;I">only screen and (min-width: 530px) and (max-width: 699px); T; 18 | ;; i ; @ ;0;[; i ; @ o; ;I" desktop; T;o; ;I"?only screen and (min-width: 700px) and (max-width: 1200px); T; 19 | ;; i; @ ;0;[; i; @ o; ;I"desktop-xl; T;o; ;I"(only screen and (min-width: 1201px); T; 20 | ;; i; @ ;0;[; i; @ :@templateI"|// Breakpoints 21 | // ------------------------- Source: http://blog.scur.pl/2012/06/variable-media-queries-less-css/ 22 | $highdensity: "only screen and (-webkit-min-device-pixel-ratio: 1.5)", 23 | "only screen and (min--moz-device-pixel-ratio: 1.5)", 24 | "only screen and (-o-min-device-pixel-ratio: 3/2)", 25 | "only screen and (min-device-pixel-ratio: 1.5)"; 26 | $mobile: "only screen and (max-width: 529px)"; 27 | $tablet: "only screen and (min-width: 530px) and (max-width: 699px)"; 28 | $desktop: "only screen and (min-width: 700px) and (max-width: 1200px)"; 29 | $desktop-xl: "only screen and (min-width: 1201px)";; T; i:@has_childrenT; @ -------------------------------------------------------------------------------- /client/views/media/media_list.js: -------------------------------------------------------------------------------- 1 | Template.media.events({ 2 | 'change .fileUploader': function (e) { 3 | FS.Utility.eachFile(e, function (file) { 4 | Media.insert(file, function(err, fileObj){ 5 | 6 | }); 7 | }); 8 | }, 9 | 'click #add-media-btn': function(e) { 10 | e.preventDefault(); 11 | $('.fileUploader').click(); 12 | }, 13 | 'click .delete-file': function(e) { 14 | Media.remove(this._id); 15 | } 16 | }); 17 | 18 | Template.imageList.files = function(){ 19 | return Media.find(); 20 | } 21 | 22 | Template.imageList.events({ 23 | 'click .delete-file': function(e){ 24 | Media.remove(this._id); 25 | } 26 | }); 27 | 28 | Template.setFeaturedImage.files = function(){ 29 | return Media.find({}, { sort: { uploadDate:-1 } }); 30 | } 31 | 32 | Template.setFeaturedImage.events({ 33 | 'click .set-featured-image': function(e){ 34 | e.preventDefault(); 35 | var url = $(e.target).closest('img').attr('src'); 36 | $('body').find('[name=featured-image]').val(url); 37 | $('.media-image').attr('src', url); 38 | $('.modal').remove(); 39 | }, 40 | 'click .close-button': function(){ 41 | $('.modal').remove(); 42 | } 43 | }) 44 | 45 | Template.insertImage.files = function(){ 46 | return Media.find({}, { sort: { uploadDate:-1 } }); 47 | } 48 | 49 | Template.insertImage.events({ 50 | 'click .insert-image': function(e){ 51 | e.preventDefault(); 52 | 53 | //set the value of the editor to include a new image 54 | var url = $(e.target).closest('img').attr('src'); 55 | var oldContent = $('#editor').val(); 56 | var newContent = oldContent + "
"; 57 | $('#editor').val(newContent); 58 | 59 | //update the iframe with the image before saving 60 | var iframe = $('#editor').next('iframe'); 61 | iframe.contents().find('body').append("
"); 62 | $('.modal').remove(); 63 | }, 64 | 'click .close-button': function(){ 65 | $('.modal').remove(); 66 | } 67 | }) 68 | 69 | -------------------------------------------------------------------------------- /client/views/settings/header_settings.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/stylesheets/sass/_mixins.scss: -------------------------------------------------------------------------------- 1 | .show{ 2 | opacity: 1.0 !important; 3 | } 4 | 5 | .hidden{ 6 | display: none; 7 | } 8 | 9 | .pull-left{ 10 | float: left; 11 | } 12 | 13 | .pull-right{ 14 | float: right; 15 | } 16 | 17 | .strong{ 18 | font-weight: 600; 19 | } 20 | 21 | .light{ 22 | font-weight: 100; 23 | } 24 | 25 | .centered{ 26 | text-align: center; 27 | } 28 | 29 | .align-left{ 30 | text-align: left; 31 | } 32 | 33 | .align-right{ 34 | text-align: right; 35 | } 36 | 37 | .transition-1000{ 38 | @include transition(all 1000ms); 39 | } 40 | 41 | // ******** BORDERS ********** 42 | 43 | .bordered{ 44 | border: 1px solid $light-grey; 45 | } 46 | 47 | .border-bottom-pink{ 48 | border-bottom: 2px solid $pink1; 49 | } 50 | 51 | .separator{ 52 | border-bottom: 1px solid $blue; 53 | } 54 | 55 | // ******** TYPOGRAPHY ********** 56 | 57 | .heading{ 58 | font-family: $heading-font; 59 | } 60 | 61 | .small{ 62 | font-size: 90%; 63 | } 64 | 65 | 66 | // ******** POSITIONING ********** 67 | 68 | .fixed{ 69 | position: fixed; 70 | } 71 | 72 | .relative{ 73 | position: relative; 74 | } 75 | 76 | .absolute{ 77 | position: absolute; 78 | } 79 | 80 | .inline{ 81 | display: inline; 82 | } 83 | 84 | // ******** SIZING ********** 85 | 86 | .full-height{ 87 | height: 100%; 88 | } 89 | 90 | .full-width{ 91 | width: 100%; 92 | } 93 | 94 | .max-100{ 95 | max-width: 100%; 96 | } 97 | 98 | 99 | // ******** MARGIN ********** 100 | 101 | .m-1{ 102 | margin: 1rem; 103 | } 104 | 105 | .left-right-margin-1{ 106 | margin: 0 1rem; 107 | } 108 | 109 | .left-right-margin-2{ 110 | margin: 0 2rem; 111 | } 112 | 113 | .top-margin-1{ 114 | margin-top: 1rem; 115 | } 116 | 117 | .m-t-1{ 118 | margin-top: 1rem; 119 | } 120 | 121 | .m-b-1{ 122 | margin-bottom: 1rem; 123 | } 124 | 125 | .m-b-2{ 126 | margin-bottom: 2rem; 127 | } 128 | 129 | .m-l-1{ 130 | margin-left: 1rem; 131 | } 132 | 133 | .m-r-1{ 134 | margin-right: 1rem; 135 | } 136 | 137 | // ********PADDING********** 138 | 139 | .p-1-4{ 140 | padding: .25rem; 141 | } 142 | 143 | .p-1-2{ 144 | padding: .5rem; 145 | } 146 | 147 | .p-1{ 148 | padding: 1rem; 149 | } 150 | 151 | .p-2{ 152 | padding: 2rem; 153 | } 154 | 155 | .p-top-2{ 156 | padding-top: 2rem; 157 | } 158 | .p-bottom-2{ 159 | padding-bottom: 2rem; 160 | } -------------------------------------------------------------------------------- /client/views/media/media_list.html: -------------------------------------------------------------------------------- 1 | 11 | 12 | 40 | 41 | 56 | 57 | -------------------------------------------------------------------------------- /client/views/pages/new_page.js: -------------------------------------------------------------------------------- 1 | Template.newPage.events({ 2 | 'submit form': function(e){ 3 | e.preventDefault(); 4 | 5 | var page ={ 6 | title: $(e.target).find('[name=title]').val(), 7 | slug: Session.get('slug'), 8 | hideTitle: checkOptions($('#show-title')), 9 | pageTemplate: $(e.target).find('[name=template-type]').val().replace(/_/g, ' '), 10 | content: $(e.target).find('[name=editor]').val() 11 | } 12 | 13 | Meteor.call('page', page, function(error, id) { 14 | if (error){ 15 | //call custom throwError function 16 | throwError(error.reason, 'error'); 17 | } else { 18 | Router.go('/admin/pages', page); 19 | } 20 | }); 21 | } 22 | }); 23 | 24 | //reset Session variable that stores the slug for New Pages 25 | Template.newPage.created = function(){ 26 | var val = $('#title').val(); 27 | Session.set('slug', encodeURI(val).toLowerCase()); 28 | } 29 | 30 | Template.displayPageAdmin.rendered = function(){ 31 | $('#editor').cleditor(); 32 | } 33 | 34 | Template.displayPageAdmin.destroyed = function(){ 35 | Session.set('slug'); 36 | } 37 | 38 | //live update the slug based on the title being typed in 39 | Template.displayPageAdmin.events({ 40 | 'keyup #title':function(e){ 41 | Session.set('slug', encodeURI(e.target.value.replace(/\s+/g, '-').toLowerCase())); 42 | }, 43 | 'change #slug':function(e){ 44 | Session.set('slug', encodeURI(e.target.value.replace(/\s+/g, '-').toLowerCase())); 45 | }, 46 | 'click .edit-slug': function(e){ 47 | e.preventDefault(); 48 | $('.editable-slug').toggleClass('hidden'); 49 | $('#slug').toggleClass('hidden'); 50 | }, 51 | 'click .add-media-btn': function(e){ 52 | e.preventDefault(); 53 | var frag = Meteor.render(Template.insertImage); 54 | $('body').append(frag); 55 | } 56 | }); 57 | 58 | Template.displayPageAdmin.helpers({ 59 | value: function(){ 60 | return Session.get('slug'); 61 | }, 62 | url: function(){ 63 | return Meteor.absoluteUrl(); 64 | }, 65 | getTemplates: function(){ 66 | var templates = _.filter(_.keys(Template), function(name){return name.match('template');}); 67 | return _.map(templates, function(name){ return name.replace(/_/g, ' ');}); 68 | }, 69 | isSelected: function(name, pageTemplate){ 70 | if (name == pageTemplate){ 71 | return "selected"; 72 | } 73 | } 74 | }); 75 | 76 | function checkOptions(option){ 77 | if (option.is(':checked')){ 78 | return 'checked' 79 | } else { 80 | return '' 81 | } 82 | } -------------------------------------------------------------------------------- /client/views/posts/new_post.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | 69 | -------------------------------------------------------------------------------- /client/stylesheets/sass/_header.scss: -------------------------------------------------------------------------------- 1 | .admin-header{ 2 | position: fixed; 3 | height: 35px; 4 | width: 100%; 5 | top: 0px; 6 | background-color: $dark-grey; 7 | z-index: 100; 8 | } 9 | 10 | #login-buttons{ 11 | float:right; 12 | } 13 | 14 | .header{ 15 | background-color: $red; 16 | 17 | .logo{ 18 | background-color: white; 19 | 20 | .logo-letter{ 21 | font-weight: 900; 22 | line-height: 2.5rem; 23 | } 24 | 25 | } 26 | 27 | .nav{ 28 | .nav-links{ 29 | text-align: center; 30 | li{ 31 | position: relative; 32 | 33 | &:hover{ 34 | background-color: $dark-red; 35 | 36 | a{ 37 | color: white; 38 | } 39 | } 40 | a{ 41 | display: block; 42 | padding: .5rem; 43 | color: white; 44 | font-weight: 600; 45 | @include transition(100ms); 46 | 47 | &:hover{ 48 | color: $red; 49 | } 50 | } 51 | } 52 | } 53 | } 54 | } 55 | 56 | .header-right{ 57 | position: fixed; 58 | right: 0px; 59 | height: 100%; 60 | width: 220px; 61 | 62 | .logo-image{ 63 | max-width: 100%; 64 | } 65 | 66 | .nav{ 67 | .nav-links{ 68 | li{ 69 | padding: 1rem; 70 | } 71 | } 72 | } 73 | } 74 | 75 | .header-left{ 76 | position: fixed; 77 | left: 0px; 78 | height: 100%; 79 | width: 220px; 80 | 81 | .logo-image{ 82 | max-width: 100%; 83 | } 84 | 85 | .nav{ 86 | .nav-links{ 87 | li{ 88 | &:hover{ 89 | &:after{ 90 | content: ' '; 91 | height: 0; 92 | position: absolute; 93 | width: 0; 94 | border-bottom: 15px solid transparent; 95 | border-top: 15px solid transparent; 96 | border-right: 15px solid $light-grey; /* arrow size */ 97 | right: 0px; 98 | top: 8px; 99 | } 100 | } 101 | } 102 | } 103 | } 104 | } 105 | 106 | .header-top{ 107 | top: 0px; 108 | width: 100%; 109 | height: 100px; 110 | 111 | .logo{ 112 | height: 100%; 113 | float: left; 114 | img{ 115 | max-height: 100px; 116 | } 117 | } 118 | 119 | .nav{ 120 | height: 100%; 121 | .nav-links{ 122 | height: 100%; 123 | li{ 124 | display: inline-block; 125 | padding: 1rem; 126 | } 127 | } 128 | } 129 | 130 | } 131 | 132 | .header-bottom{ 133 | position: fixed; 134 | bottom: 0px; 135 | width: 100%; 136 | z-index: 100; 137 | 138 | .logo{ 139 | height: 100%; 140 | float: left; 141 | img{ 142 | max-height: 100px; 143 | } 144 | } 145 | 146 | .nav{ 147 | height: 100%; 148 | .nav-links{ 149 | height: 100%; 150 | li{ 151 | display: inline-block; 152 | padding: 1rem; 153 | } 154 | } 155 | } 156 | } -------------------------------------------------------------------------------- /client/stylesheets/sass/main.min.scss: -------------------------------------------------------------------------------- 1 | @import "breakpoints"; 2 | @import "colors"; 3 | @import "compass/reset"; 4 | @import "compass/css3"; 5 | @import "typeplate"; 6 | @import "vars-typeplate"; 7 | @import "grid"; 8 | @import "mixins"; 9 | @import "sidebar"; 10 | @import "header"; 11 | @import "footer"; 12 | @import "titles"; 13 | @import "tables"; 14 | @import "forms"; 15 | @import "buttons"; 16 | @import "blocks"; 17 | @import "errors"; 18 | @import "media"; 19 | 20 | /* apply a natural box layout model to all elements */ 21 | *, *:before, *:after { 22 | -moz-box-sizing: border-box; 23 | -webkit-box-sizing: border-box; 24 | box-sizing: border-box; 25 | } 26 | 27 | html{ 28 | @media #{$mobile}{ 29 | font: normal 70%/1.65 serif; 30 | } 31 | } 32 | 33 | body{ 34 | background-color: $light-grey; 35 | } 36 | 37 | a{ 38 | color: $blue; 39 | text-decoration: none; 40 | @include transition(all 300ms); 41 | 42 | &:hover{ 43 | color: $dark-blue; 44 | } 45 | } 46 | 47 | .wrapper{ 48 | position: relative; 49 | max-width: 980px; 50 | margin: 0 auto; 51 | } 52 | 53 | 54 | .main{ 55 | margin-left: 220px; 56 | margin-top: 35px; 57 | } 58 | 59 | .admin .main{ 60 | margin-left: 160px; 61 | } 62 | 63 | .content{ 64 | padding: 1rem; 65 | } 66 | 67 | #spinner{ 68 | position: absolute; 69 | top: 200px; 70 | left: 50%; 71 | } 72 | 73 | //***************** POSTS ************************ 74 | 75 | .featured-image{ 76 | width: 100%; 77 | max-height: 400px; 78 | overflow: hidden; 79 | 80 | img{ 81 | width: 100%; 82 | } 83 | } 84 | 85 | //***************** SETTINGS ************************ 86 | 87 | .settings{ 88 | position: relative; 89 | 90 | .settings-block{ 91 | position: relative; 92 | padding: 0rem .5rem; 93 | margin-bottom: .5rem; 94 | 95 | .settings-header{ 96 | position: relative; 97 | padding: .5rem; 98 | cursor: pointer; 99 | @include transition (300ms); 100 | 101 | &:hover{ 102 | background-color: rgba($dark-grey, .2); 103 | } 104 | } 105 | 106 | .settings-title{ 107 | font-family: $heading-font; 108 | font-weight: 600; 109 | } 110 | 111 | .arrow{ 112 | position: absolute; 113 | right: 2rem; 114 | top: 1rem; 115 | } 116 | 117 | .settings-content{ 118 | position: relative; 119 | background-color: white; 120 | padding: .5rem; 121 | } 122 | } 123 | } 124 | 125 | .toggle{ 126 | content: ' '; 127 | height: 0; 128 | position: absolute; 129 | width: 0; 130 | border-left: 10px solid transparent; 131 | border-right: 10px solid transparent; 132 | border-top: 15px solid rgba($dark-grey, .5); /* arrow size */ 133 | right: 20px; 134 | top: 20px; 135 | @include transition(300ms); 136 | } 137 | 138 | .toggle-active{ 139 | @include rotateZ(180deg); 140 | } 141 | -------------------------------------------------------------------------------- /client/views/posts/new_post.js: -------------------------------------------------------------------------------- 1 | Template.newPost.events({ 2 | 'submit form': function(e){ 3 | e.preventDefault(); 4 | 5 | var categories = []; 6 | $('.category-choices input[type="checkbox"]:checked').each(function(){ 7 | categories.push($(this).val()); 8 | }); 9 | 10 | 11 | var post ={ 12 | title: $(e.target).find('[name=title]').val(), 13 | slug: encodeURI(Session.get('slug').replace(/\s+/g, '-')).toLowerCase(), 14 | content: $(e.target).find('[name=editor]').val(), 15 | excerpt: $(e.target).find('[name=excerpt]').val(), 16 | featuredImage: $(e.target).find('[name=featured-image]').val(), 17 | categories: categories 18 | } 19 | 20 | Meteor.call('post', post, function(error, id) { 21 | if (error){ 22 | //call custom throwError function 23 | throwError(error.reason, 'error'); 24 | } else { 25 | Router.go('/admin/posts', post); 26 | } 27 | }); 28 | } 29 | }); 30 | 31 | //reset Session variable that stores the slug for New Posts 32 | Template.newPost.created = function(){ 33 | Session.set('slug'); 34 | } 35 | 36 | Template.displayPostAdmin.rendered = function(){ 37 | $('#editor').cleditor(); 38 | } 39 | 40 | Template.displayPostAdmin.destroyed = function(){ 41 | Session.set('slug'); 42 | } 43 | 44 | 45 | //live update the slug based on the title being typed in 46 | Template.displayPostAdmin.events({ 47 | 'keyup #title':function(e){ 48 | Session.set('slug', encodeURI(e.target.value.replace(/\s+/g, '-').toLowerCase())); 49 | }, 50 | 'change #slug':function(e){ 51 | Session.set('slug', encodeURI(e.target.value.replace(/\s+/g, '-').toLowerCase())); 52 | }, 53 | 'click .edit-slug': function(e){ 54 | e.preventDefault(); 55 | $('.editable-slug').toggleClass('hidden'); 56 | $('#slug').toggleClass('hidden'); 57 | }, 58 | 'click .add-media-btn': function(e){ 59 | e.preventDefault(); 60 | var frag = Meteor.render(Template.insertImage); 61 | $('body').append(frag); 62 | }, 63 | 'click #featured-image-btn':function(e){ 64 | e.preventDefault(); 65 | UI.insert(UI.render(Template.setFeaturedImage), document.body); 66 | }, 67 | 'click #remove-image-btn':function(e){ 68 | e.preventDefault(); 69 | var currentPostId = this._id; 70 | Posts.update(currentPostId, {$set: {featuredImage: ""}}); 71 | } 72 | }); 73 | 74 | Template.displayPostAdmin.helpers({ 75 | value: function(){ 76 | var slug = Session.get('slug'); 77 | if (slug == ''){ 78 | return Posts.findOne({_id: this._id}).slug; 79 | } else { 80 | return slug; 81 | } 82 | }, 83 | url: function(){ 84 | return Meteor.absoluteUrl(); 85 | }, 86 | categories: function(){ 87 | return Categories.find(); 88 | }, 89 | isChecked: function(name){ 90 | if (name){ 91 | for (var i=0; i 2 |
3 |
4 | 5 | 7 |
8 |
9 |   10 | 15 |
16 |
17 | 18 | 19 | 20 | 21 |
22 |
23 | 24 | 25 | 26 | 27 |
28 |
29 | 30 | 31 | 32 | 33 |
34 |
35 | 36 | 40 | 41 | 42 |
43 | 44 |
45 | 46 | 47 |
48 |
49 | 50 | 51 |
52 | 53 |
54 | 55 |
56 | Go ahead… 57 |
58 | 59 | -------------------------------------------------------------------------------- /client/stylesheets/sass/_vars-typeplate.scss: -------------------------------------------------------------------------------- 1 | // .||..||..||..||..||..||..||..||..||..||..||..||..||..||..||..||..||. 2 | 3 | // . '|| . 4 | // .||. .... ... ... ... .... ... ... || .... .||. .... 5 | // || '|. | ||' || .|...|| ||' || || '' .|| || .|...|| 6 | // || '|.| || | || || | || .|' || || || 7 | // '|.' '| ||...' '|...' ||...' .||. '|..'|' '|.' '|...' 8 | // .. | || || 9 | // '' '''' '''' VARIABLES 10 | // 11 | 12 | // .||..||..||..||..||..||..||..||..||..||..||..||..||..||..||..||..||. 13 | 14 | 15 | 16 | // $BaseType 17 | // -------------------------------------// 18 | 19 | $font-weight: normal; 20 | $line-height: 1.65; 21 | $font-size: 112.5; // percentage value (16 * 112.5% = 18px) 22 | $font-base: 16 * ($font-size/100); // converts our percentage to a pixel value 23 | $font-family: serif; // Non-font-face font-stack 24 | 25 | $custom-font-family: false; // Custom font-face stack, if set will be added to the $font-family 26 | 27 | 28 | // $Small Print 29 | // -------------------------------------// 30 | 31 | $small-print-size: 65%; 32 | 33 | 34 | // $Color 35 | // -------------------------------------// 36 | 37 | $body-copy-color: #444; 38 | $heading-color: #222; 39 | 40 | 41 | // $Ampersand 42 | // -------------------------------------// 43 | 44 | $amp-fontface-name: Ampersand; 45 | $amp-fontface-source: local('Georgia'), local('Garamond'), local('Palatino'), local('Book Antiqua'); 46 | $amp-fontface-fallback: local('Georgia'); 47 | 48 | // Allows for our ampersand element to have differing 49 | // font-family from the ampersand unicode font-family. 50 | $amp-font-family: Verdana, sans-serif; 51 | 52 | 53 | // $Icon-Font-Helper 54 | // -------------------------------------// 55 | // ex.1) $icon-fonts: (icon-name); 56 | // ex.2) $icon-fonts: (icon-name1, icon-name2, icon-name3); 57 | $icon-fonts: null; 58 | 59 | 60 | // $TypeScale 61 | // -------------------------------------// 62 | 63 | $tera: 117; // 117 = 18 × 6.5 64 | $giga: 90; // 90 = 18 × 5 65 | $mega: 72; // 72 = 18 × 4 66 | $alpha: 60; // 60 = 18 × 3.3333 67 | $beta: 48; // 48 = 18 × 2.6667 68 | $gamma: 36; // 36 = 18 × 2 69 | $delta: 24; // 24 = 18 × 1.3333 70 | $epsilon: 21; // 21 = 18 × 1.1667 71 | $zeta: 18; // 18 = 18 × 1 72 | 73 | 74 | // $TypeScale-Unit 75 | // -------------------------------------// 76 | 77 | $type-scale-unit-value: rem; 78 | 79 | 80 | // $Text-Indentation 81 | // -------------------------------------// 82 | 83 | $indent-val: 1.5em; 84 | 85 | 86 | // $Pull-Quotes 87 | // -------------------------------------// 88 | 89 | $pull-quote-fontsize: 4em; 90 | $pull-quote-opacity: 0.5; 91 | $pull-quote-color: #dc976e; 92 | 93 | 94 | // $Citation 95 | // -------------------------------------// 96 | 97 | $cite-display: block; 98 | $cite-text-align: right; 99 | $cite-font-size: inherit; 100 | 101 | 102 | // $SmallCaps 103 | // -------------------------------------// 104 | 105 | $small-caps-color: gray; 106 | $small-caps-weight: 600; 107 | 108 | 109 | // $DropCap 110 | // -------------------------------------// 111 | 112 | $dropcap-float-position: left; 113 | $dropcap-font-size: 4em; 114 | $dropcap-font-family: inherit; 115 | $dropcap-txt-indent: 0; 116 | $dropcap-margin: inherit; 117 | $dropcap-padding: inherit; 118 | $dropcap-color: inherit; 119 | $dropcap-line-height: 1; 120 | $dropcap-bg: transparent; 121 | -------------------------------------------------------------------------------- /.sass-cache/62cd69437928356a2188ce533ef9db05abe43add/_background-size.scssc: -------------------------------------------------------------------------------- 1 | 3.2.12 (Media Mark) 2 | 6786874c50cc328547b8feca493ee76659f8e9a8 3 | o:Sass::Tree::RootNode 4 | : 5 | @linei:@template"_@import "shared"; 6 | 7 | // override to change the default 8 | $default-background-size: 100% auto !default; 9 | 10 | // Set the size of background images using px, width and height, or percentages. 11 | // Currently supported in: Opera, Gecko, Webkit. 12 | // 13 | // * percentages are relative to the background-origin (default = padding-box) 14 | // * mixin defaults to: `$default-background-size` 15 | @mixin background-size( 16 | $size-1: $default-background-size, 17 | $size-2: false, 18 | $size-3: false, 19 | $size-4: false, 20 | $size-5: false, 21 | $size-6: false, 22 | $size-7: false, 23 | $size-8: false, 24 | $size-9: false, 25 | $size-10: false 26 | ) { 27 | $size-1: if(type-of($size-1) == string, unquote($size-1), $size-1); 28 | $sizes: compact($size-1, $size-2, $size-3, $size-4, $size-5, $size-6, $size-7, $size-8, $size-9, $size-10); 29 | @include experimental(background-size, $sizes, -moz, -webkit, -o, not -ms, not -khtml); 30 | } 31 | :@has_childrenT: @options{:@children[ 32 | o:Sass::Tree::ImportNode ;i;0:@imported_file0; @; 33 | [:@imported_filename" sharedo:Sass::Tree::CommentNode 34 | : @value["*/* override to change the default */;i; @; 35 | [: 36 | @type: silento:Sass::Tree::VariableNode : @guarded" !default: 37 | @name"default-background-size;i : 38 | @expro:Sass::Script::List ;[o:Sass::Script::Number :@original" 100%;ii:@numerator_units["%;i ; @:@denominator_units[o:Sass::Script::String ;" auto;i ; @;:identifier:@separator: 39 | space;i ; @; @; 40 | [o; 41 | ;[" /* Set the size of background images using px, width and height, or percentages. 42 | * Currently supported in: Opera, Gecko, Webkit. 43 | * 44 | * * percentages are relative to the background-origin (default = padding-box) 45 | * * mixin defaults to: `$default-background-size` */;i ; @; 46 | [;;o:Sass::Tree::MixinDefNode ;"background-size;i;T; @: @splat0; 47 | [o; ;0;" size-1;i;o:Sass::Script::Funcall :@keywords{;"if;i; @; 0: 48 | @args[o:Sass::Script::Operation 49 | ;i:@operand2o; ;" string;i; @;;; @:@operand1o;! ;"{;" type-of;i; @; 0;#[o:Sass::Script::Variable ;" size-1;i:@underscored_name" size_1; @:@operator:eqo;! ;"{;" unquote;i; @; 0;#[o;' ;" size-1;i;(" size_1; @o;' ;" size-1;i;(" size_1; @; @; 50 | [o; ;0;" 51 | sizes;i;o;! ;"{;" compact;i; @; 0;#[o;' ;" size-1;i;(" size_1; @o;' ;" size-2;i;(" size_2; @o;' ;" size-3;i;(" size_3; @o;' ;" size-4;i;(" size_4; @o;' ;" size-5;i;(" size_5; @o;' ;" size-6;i;(" size_6; @o;' ;" size-7;i;(" size_7; @o;' ;" size-8;i;(" size_8; @o;' ;" size-9;i;(" size_9; @o;' ;" size-10;i;(" size_10; @; @; 52 | [o:Sass::Tree::MixinNode ;"{;"experimental;i; @; 0; 53 | [;#[ o; ;"background-size;i; @;;o;' ;" 54 | sizes;i;(" 55 | sizes; @o; ;" -moz;i; @;;o; ;" -webkit;i; @;;o; ;"-o;i; @;;o:!Sass::Script::UnaryOperation ;i: @operando; ;"-ms;i; @;;; @;):noto;, ;i;-o; ;" -khtml;i; @;;; @;);.;#[[o;';" size-1;(" size_1; @o;' ;"default-background-size;i;("default_background_size; @[o;';" size-2;(" size_2; @o:Sass::Script::Bool;F;i; @[o;';" size-3;(" size_3; @o;/;F;i; @[o;';" size-4;(" size_4; @o;/;F;i; @[o;';" size-5;(" size_5; @o;/;F;i; @[o;';" size-6;(" size_6; @o;/;F;i; @[o;';" size-7;(" size_7; @o;/;F;i; @[o;';" size-8;(" size_8; @o;/;F;i; @[o;';" size-9;(" size_9; @o;/;F;i; @[o;';" size-10;(" size_10; @o;/;F;i; @ -------------------------------------------------------------------------------- /.sass-cache/850734b355edad0c5a94f6e312f00ffd28a993d2/_background-size.scssc: -------------------------------------------------------------------------------- 1 | 3.2.8 (Media Mark) 2 | 6786874c50cc328547b8feca493ee76659f8e9a8 3 | o:Sass::Tree::RootNode 4 | : 5 | @linei: @options{:@template"_@import "shared"; 6 | 7 | // override to change the default 8 | $default-background-size: 100% auto !default; 9 | 10 | // Set the size of background images using px, width and height, or percentages. 11 | // Currently supported in: Opera, Gecko, Webkit. 12 | // 13 | // * percentages are relative to the background-origin (default = padding-box) 14 | // * mixin defaults to: `$default-background-size` 15 | @mixin background-size( 16 | $size-1: $default-background-size, 17 | $size-2: false, 18 | $size-3: false, 19 | $size-4: false, 20 | $size-5: false, 21 | $size-6: false, 22 | $size-7: false, 23 | $size-8: false, 24 | $size-9: false, 25 | $size-10: false 26 | ) { 27 | $size-1: if(type-of($size-1) == string, unquote($size-1), $size-1); 28 | $sizes: compact($size-1, $size-2, $size-3, $size-4, $size-5, $size-6, $size-7, $size-8, $size-9, $size-10); 29 | @include experimental(background-size, $sizes, -moz, -webkit, -o, not -ms, not -khtml); 30 | } 31 | :@has_childrenT:@children[ 32 | o:Sass::Tree::ImportNode :@imported_file0;@;0;i:@imported_filename" shared; 33 | [o:Sass::Tree::CommentNode 34 | ;@: @value["*/* override to change the default */: 35 | @type: silent;i; 36 | [o:Sass::Tree::VariableNode : 37 | @expro:Sass::Script::List ;i ;@:@separator: 38 | space;[o:Sass::Script::Number :@numerator_units["%;i ;@:@original" 100%;ii:@denominator_units[o:Sass::Script::String ;i ;@;:identifier;" auto: 39 | @name"default-background-size;@;i ; 40 | [: @guarded" !defaulto; 41 | ;@;[" /* Set the size of background images using px, width and height, or percentages. 42 | * Currently supported in: Opera, Gecko, Webkit. 43 | * 44 | * * percentages are relative to the background-origin (default = padding-box) 45 | * * mixin defaults to: `$default-background-size` */;;;i ; 46 | [o:Sass::Tree::MixinDefNode ;"background-size;@; T: @splat0: 47 | @args[[o:Sass::Script::Variable;" size-1;@:@underscored_name" size_1o;" ;"default-background-size;i;@;#"default_background_size[o;";" size-2;@;#" size_2o:Sass::Script::Bool;i;@;F[o;";" size-3;@;#" size_3o;$;i;@;F[o;";" size-4;@;#" size_4o;$;i;@;F[o;";" size-5;@;#" size_5o;$;i;@;F[o;";" size-6;@;#" size_6o;$;i;@;F[o;";" size-7;@;#" size_7o;$;i;@;F[o;";" size-8;@;#" size_8o;$;i;@;F[o;";" size-9;@;#" size_9o;$;i;@;F[o;";" size-10;@;#" size_10o;$;i;@;F;i; 48 | [o; ;o:Sass::Script::Funcall ;![o:Sass::Script::Operation 49 | ;i:@operator:eq;@:@operand1o;% ;![o;" ;" size-1;i;@;#" size_1;" type-of;i;@; 0:@keywords{:@operand2o; ;i;@;;;" stringo;% ;![o;" ;" size-1;i;@;#" size_1;" unquote;i;@; 0;*{o;" ;" size-1;i;@;#" size_1;"if;i;@; 0;*{;" size-1;@;i; 50 | [;0o; ;o;% ;![o;" ;" size-1;i;@;#" size_1o;" ;" size-2;i;@;#" size_2o;" ;" size-3;i;@;#" size_3o;" ;" size-4;i;@;#" size_4o;" ;" size-5;i;@;#" size_5o;" ;" size-6;i;@;#" size_6o;" ;" size-7;i;@;#" size_7o;" ;" size-8;i;@;#" size_8o;" ;" size-9;i;@;#" size_9o;" ;" size-10;i;@;#" size_10;" compact;i;@; 0;*{;" 51 | sizes;@;i; 52 | [;0o:Sass::Tree::MixinNode ;"experimental;@; 0;![ o; ;i;@;;;"background-sizeo;" ;" 53 | sizes;i;@;#" 54 | sizeso; ;i;@;;;" -mozo; ;i;@;;;" -webkito; ;i;@;;;"-oo:!Sass::Script::UnaryOperation ;i;':not;@: @operando; ;i;@;;;"-mso;- ;i;';.;@;/o; ;i;@;;;" -khtml;i; 55 | [;*{ -------------------------------------------------------------------------------- /lib/router.js: -------------------------------------------------------------------------------- 1 | Router.configure({ 2 | layoutTemplate: 'layout', 3 | loadingTemplate: 'loading', 4 | }); 5 | 6 | //clears all Errors from the view before being routed 7 | Router.onBeforeAction(function(){ 8 | clearErrors(); 9 | }); 10 | 11 | Router.map(function(){ 12 | this.route('viewPage', { 13 | path:'/', 14 | controller: 'DefaultLayoutController', 15 | waitOn: function() { return Meteor.subscribe('settings')}, 16 | data: function(){ 17 | var landingPage = Settings.findOne().landingPage; 18 | return Pages.findOne({title: landingPage}); 19 | } 20 | }); 21 | 22 | this.route('login', { 23 | path: '/login', 24 | onBeforeAction: function(){ 25 | if (Meteor.user()) { 26 | this.redirect('/admin'); 27 | } 28 | }, 29 | }); 30 | 31 | this.route('admin', { 32 | path:'/admin', 33 | controller: 'AdminLayoutController' 34 | }); 35 | 36 | this.route('media', { 37 | path:'/admin/media', 38 | controller: 'AdminLayoutController' 39 | }); 40 | 41 | //************** PAGE ROUTES ******************* 42 | 43 | this.route('pagesList', { 44 | path:'/admin/pages', 45 | controller: 'AdminLayoutController', 46 | waitOn: function() { return Meteor.subscribe('pages'); } 47 | }); 48 | 49 | this.route('newPage',{ 50 | path:'/admin/new-page', 51 | controller: 'AdminLayoutController' 52 | }); 53 | 54 | this.route('editPage',{ 55 | path:'/admin/pages/:_id', 56 | controller: 'AdminLayoutController', 57 | data: function() { return Pages.findOne(this.params._id); } 58 | }); 59 | 60 | this.route('viewPage', { 61 | path:'/:slug', 62 | controller: 'DefaultLayoutController', 63 | data: function() { return Pages.findOne({slug: this.params.slug}); }, 64 | }); 65 | 66 | this.route('categories', { 67 | path:'/admin/categories', 68 | controller: 'AdminLayoutController', 69 | waitOn: function() { return Meteor.subscribe('categories'); } 70 | }); 71 | 72 | //************** POST ROUTES ******************* 73 | 74 | this.route('postsList', { 75 | path:'/admin/posts', 76 | controller: 'AdminLayoutController', 77 | waitOn: function() { return Meteor.subscribe('posts'); } 78 | }); 79 | 80 | this.route('newPost',{ 81 | path:'/admin/new-post', 82 | controller: 'AdminLayoutController' 83 | }); 84 | 85 | this.route('editPost', { 86 | path:'/admin/posts/:_id', 87 | controller: 'AdminLayoutController', 88 | data: function() { return Posts.findOne(this.params._id); } 89 | }); 90 | 91 | this.route('viewPostSingle', { 92 | path:'posts/:slug', 93 | controller: 'DefaultLayoutController', 94 | data: function() { return Posts.findOne({slug: this.params.slug}); } 95 | }); 96 | 97 | //************** CATEGORY ROUTES ******************* 98 | this.route('categoryPosts', { 99 | path:'category/:slug', 100 | controller: 'DefaultLayoutController', 101 | data: function(){ 102 | var slug = this.params.slug; 103 | var posts = Posts.find({categories: slug}).fetch(); 104 | return{ 105 | posts: posts 106 | } 107 | } 108 | }); 109 | 110 | //************** SETTINGS ROUTES ******************* 111 | 112 | this.route('settings', { 113 | path:'/admin/settings', 114 | controller: 'AdminLayoutController' 115 | }); 116 | 117 | //************** SETTINGS ROUTES ******************* 118 | 119 | this.route('users', { 120 | path:'/admin/users', 121 | controller: 'AdminLayoutController' 122 | }) 123 | 124 | //DEFINE LAYOUT CONTROLLERS HERE 125 | DefaultLayoutController = RouteController.extend({ 126 | yieldTemplates: { 127 | 'header': {to: 'header'} 128 | } 129 | }); 130 | 131 | AdminLayoutController = RouteController.extend({ 132 | yieldTemplates: { 133 | 'adminHeader': {to: 'header'}, 134 | 'adminSidebar': {to: 'sidebar'} 135 | }, 136 | onBeforeAction: function(){ 137 | if (!Meteor.user()) { 138 | this.redirect('/login'); 139 | 140 | // stop the rest of the before hooks and the action function 141 | this.pause(); 142 | } 143 | } 144 | }); 145 | }); -------------------------------------------------------------------------------- /.sass-cache/ceef6b4763ed1f0ad749aa13106fa5835ff2542c/_background-size.scssc: -------------------------------------------------------------------------------- 1 | 3.2.7 (Media Mark) 2 | 6786874c50cc328547b8feca493ee76659f8e9a8 3 | o:Sass::Tree::RootNode 4 | :@children[ 5 | o:Sass::Tree::ImportNode :@imported_filenameI" shared:ET;[:@template0: 6 | @linei: @options{:@imported_file0o:Sass::Tree::CommentNode 7 | : @value[I"*/* override to change the default */; T: 8 | @type: silent;[; i; @ 9 | o:Sass::Tree::VariableNode : 10 | @nameI"default-background-size; T: 11 | @expro:Sass::Script::List ;[o:Sass::Script::Number ;ii:@numerator_units[I"%; T:@denominator_units[; i :@originalI" 100%; F; @ 12 | o:Sass::Script::String ;I" auto; T;:identifier; i ; @ 13 | :@separator: 14 | space; i ; @ 15 | : @guardedI" !default; T;[; i ; @ 16 | o; 17 | ;[I" /* Set the size of background images using px, width and height, or percentages. 18 | * Currently supported in: Opera, Gecko, Webkit. 19 | * 20 | * * percentages are relative to the background-origin (default = padding-box) 21 | * * mixin defaults to: `$default-background-size` */; T;;;[; i ; @ 22 | o:Sass::Tree::MixinDefNode ;I"background-size; T: 23 | @args[[o:Sass::Script::Variable;I" size-1; T:@underscored_nameI" size_1; T; @ 24 | o;! ;I"default-background-size; T;"I"default_background_size; T; i; @ 25 | [o;!;I" size-2; T;"I" size_2; T; @ 26 | o:Sass::Script::Bool;F; i; @ 27 | [o;!;I" size-3; T;"I" size_3; T; @ 28 | o;#;F; i; @ 29 | [o;!;I" size-4; T;"I" size_4; T; @ 30 | o;#;F; i; @ 31 | [o;!;I" size-5; T;"I" size_5; T; @ 32 | o;#;F; i; @ 33 | [o;!;I" size-6; T;"I" size_6; T; @ 34 | o;#;F; i; @ 35 | [o;!;I" size-7; T;"I" size_7; T; @ 36 | o;#;F; i; @ 37 | [o;!;I" size-8; T;"I" size_8; T; @ 38 | o;#;F; i; @ 39 | [o;!;I" size-9; T;"I" size_9; T; @ 40 | o;#;F; i; @ 41 | [o;!;I" size-10; T;"I" size_10; T; @ 42 | o;#;F; i; @ 43 | : @splat0;[o; ;I" size-1; T;o:Sass::Script::Funcall ;I"if; T; [o:Sass::Script::Operation 44 | :@operand1o;% ;I" type-of; T; [o;! ;I" size-1; T;"I" size_1; T; i; @ 45 | :@keywords{;$0; i; @ 46 | :@operand2o; ;I" string; T;;; i; @ 47 | :@operator:eq; i; @ 48 | o;% ;I" unquote; T; [o;! ;I" size-1; T;"I" size_1; T; i; @ 49 | ;({;$0; i; @ 50 | o;! ;I" size-1; T;"I" size_1; T; i; @ 51 | ;({;$0; i; @ 52 | ;0;[; i; @ 53 | o; ;I" 54 | sizes; T;o;% ;I" compact; T; [o;! ;I" size-1; T;"I" size_1; T; i; @ 55 | o;! ;I" size-2; T;"I" size_2; T; i; @ 56 | o;! ;I" size-3; T;"I" size_3; T; i; @ 57 | o;! ;I" size-4; T;"I" size_4; T; i; @ 58 | o;! ;I" size-5; T;"I" size_5; T; i; @ 59 | o;! ;I" size-6; T;"I" size_6; T; i; @ 60 | o;! ;I" size-7; T;"I" size_7; T; i; @ 61 | o;! ;I" size-8; T;"I" size_8; T; i; @ 62 | o;! ;I" size-9; T;"I" size_9; T; i; @ 63 | o;! ;I" size-10; T;"I" size_10; T; i; @ 64 | ;({;$0; i; @ 65 | ;0;[; i; @ 66 | o:Sass::Tree::MixinNode ;I"experimental; T; [ o; ;I"background-size; T;;; i; @ 67 | o;! ;I" 68 | sizes; T;"I" 69 | sizes; T; i; @ 70 | o; ;I" -moz; T;;; i; @ 71 | o; ;I" -webkit; T;;; i; @ 72 | o; ;I"-o; T;;; i; @ 73 | o:!Sass::Script::UnaryOperation : @operando; ;I"-ms; T;;; i; @ 74 | ;*:not; i; @ 75 | o;- ;.o; ;I" -khtml; T;;; i; @ 76 | ;*;/; i; @ 77 | ;({;$0;[; i; @ 78 | ; i:@has_childrenT; @ 79 | ; 80 | I"_@import "shared"; 81 | 82 | // override to change the default 83 | $default-background-size: 100% auto !default; 84 | 85 | // Set the size of background images using px, width and height, or percentages. 86 | // Currently supported in: Opera, Gecko, Webkit. 87 | // 88 | // * percentages are relative to the background-origin (default = padding-box) 89 | // * mixin defaults to: `$default-background-size` 90 | @mixin background-size( 91 | $size-1: $default-background-size, 92 | $size-2: false, 93 | $size-3: false, 94 | $size-4: false, 95 | $size-5: false, 96 | $size-6: false, 97 | $size-7: false, 98 | $size-8: false, 99 | $size-9: false, 100 | $size-10: false 101 | ) { 102 | $size-1: if(type-of($size-1) == string, unquote($size-1), $size-1); 103 | $sizes: compact($size-1, $size-2, $size-3, $size-4, $size-5, $size-6, $size-7, $size-8, $size-9, $size-10); 104 | @include experimental(background-size, $sizes, -moz, -webkit, -o, not -ms, not -khtml); 105 | } 106 | ; T; i;0T; @ 107 | -------------------------------------------------------------------------------- /.sass-cache/02158e44c02044ad36accebd5ec2647e198987b9/_background-size.scssc: -------------------------------------------------------------------------------- 1 | 3.2.14 (Media Mark) 2 | 6786874c50cc328547b8feca493ee76659f8e9a8 3 | o:Sass::Tree::RootNode 4 | :@children[ 5 | o:Sass::Tree::ImportNode :@imported_filenameI" shared:ET;[:@template0: 6 | @linei: @options{:@imported_file0o:Sass::Tree::CommentNode 7 | : @value[I"*/* override to change the default */; T: 8 | @type: silent;[; i; @ 9 | o:Sass::Tree::VariableNode : 10 | @nameI"default-background-size; T: 11 | @expro:Sass::Script::List ;[o:Sass::Script::Number ;ii:@numerator_units[I"%; T:@denominator_units[; i :@originalI" 100%; F; @ 12 | o:Sass::Script::String ;I" auto; T;:identifier; i ; @ 13 | :@separator: 14 | space; i ; @ 15 | : @guardedI" !default; T;[; i ; @ 16 | o; 17 | ;[I" /* Set the size of background images using px, width and height, or percentages. 18 | * Currently supported in: Opera, Gecko, Webkit. 19 | * 20 | * * percentages are relative to the background-origin (default = padding-box) 21 | * * mixin defaults to: `$default-background-size` */; T;;;[; i ; @ 22 | o:Sass::Tree::MixinDefNode ;I"background-size; T: 23 | @args[[o:Sass::Script::Variable;I" size-1; T:@underscored_nameI" size_1; T; @ 24 | o;! ;I"default-background-size; T;"I"default_background_size; T; i; @ 25 | [o;!;I" size-2; T;"I" size_2; T; @ 26 | o:Sass::Script::Bool;F; i; @ 27 | [o;!;I" size-3; T;"I" size_3; T; @ 28 | o;#;F; i; @ 29 | [o;!;I" size-4; T;"I" size_4; T; @ 30 | o;#;F; i; @ 31 | [o;!;I" size-5; T;"I" size_5; T; @ 32 | o;#;F; i; @ 33 | [o;!;I" size-6; T;"I" size_6; T; @ 34 | o;#;F; i; @ 35 | [o;!;I" size-7; T;"I" size_7; T; @ 36 | o;#;F; i; @ 37 | [o;!;I" size-8; T;"I" size_8; T; @ 38 | o;#;F; i; @ 39 | [o;!;I" size-9; T;"I" size_9; T; @ 40 | o;#;F; i; @ 41 | [o;!;I" size-10; T;"I" size_10; T; @ 42 | o;#;F; i; @ 43 | : @splat0;[o; ;I" size-1; T;o:Sass::Script::Funcall ;I"if; T; [o:Sass::Script::Operation 44 | :@operand1o;% ;I" type-of; T; [o;! ;I" size-1; T;"I" size_1; T; i; @ 45 | :@keywords{;$0; i; @ 46 | :@operand2o; ;I" string; T;;; i; @ 47 | :@operator:eq; i; @ 48 | o;% ;I" unquote; T; [o;! ;I" size-1; T;"I" size_1; T; i; @ 49 | ;({;$0; i; @ 50 | o;! ;I" size-1; T;"I" size_1; T; i; @ 51 | ;({;$0; i; @ 52 | ;0;[; i; @ 53 | o; ;I" 54 | sizes; T;o;% ;I" compact; T; [o;! ;I" size-1; T;"I" size_1; T; i; @ 55 | o;! ;I" size-2; T;"I" size_2; T; i; @ 56 | o;! ;I" size-3; T;"I" size_3; T; i; @ 57 | o;! ;I" size-4; T;"I" size_4; T; i; @ 58 | o;! ;I" size-5; T;"I" size_5; T; i; @ 59 | o;! ;I" size-6; T;"I" size_6; T; i; @ 60 | o;! ;I" size-7; T;"I" size_7; T; i; @ 61 | o;! ;I" size-8; T;"I" size_8; T; i; @ 62 | o;! ;I" size-9; T;"I" size_9; T; i; @ 63 | o;! ;I" size-10; T;"I" size_10; T; i; @ 64 | ;({;$0; i; @ 65 | ;0;[; i; @ 66 | o:Sass::Tree::MixinNode ;I"experimental; T; [ o; ;I"background-size; T;;; i; @ 67 | o;! ;I" 68 | sizes; T;"I" 69 | sizes; T; i; @ 70 | o; ;I" -moz; T;;; i; @ 71 | o; ;I" -webkit; T;;; i; @ 72 | o; ;I"-o; T;;; i; @ 73 | o:!Sass::Script::UnaryOperation : @operando; ;I"-ms; T;;; i; @ 74 | ;*:not; i; @ 75 | o;- ;.o; ;I" -khtml; T;;; i; @ 76 | ;*;/; i; @ 77 | ;({;$0;[; i; @ 78 | ; i:@has_childrenT; @ 79 | ; 80 | I"_@import "shared"; 81 | 82 | // override to change the default 83 | $default-background-size: 100% auto !default; 84 | 85 | // Set the size of background images using px, width and height, or percentages. 86 | // Currently supported in: Opera, Gecko, Webkit. 87 | // 88 | // * percentages are relative to the background-origin (default = padding-box) 89 | // * mixin defaults to: `$default-background-size` 90 | @mixin background-size( 91 | $size-1: $default-background-size, 92 | $size-2: false, 93 | $size-3: false, 94 | $size-4: false, 95 | $size-5: false, 96 | $size-6: false, 97 | $size-7: false, 98 | $size-8: false, 99 | $size-9: false, 100 | $size-10: false 101 | ) { 102 | $size-1: if(type-of($size-1) == string, unquote($size-1), $size-1); 103 | $sizes: compact($size-1, $size-2, $size-3, $size-4, $size-5, $size-6, $size-7, $size-8, $size-9, $size-10); 104 | @include experimental(background-size, $sizes, -moz, -webkit, -o, not -ms, not -khtml); 105 | } 106 | ; T; i;0T; @ 107 | -------------------------------------------------------------------------------- /client/views/settings/menu_settings.js: -------------------------------------------------------------------------------- 1 | Template.menuSettings.helpers({ 2 | menus: function(){ 3 | return Menus.find(); 4 | }, 5 | isSelected: function(title){ 6 | var currentTitle = Session.get("currentMenuTitle"); 7 | console.log(currentTitle); 8 | console.log(title); 9 | if (currentTitle == title){ 10 | return "selected='selected'"; 11 | } 12 | } 13 | 14 | }); 15 | 16 | Template.menuSettings.events({ 17 | 'change .menu-select': function(){ 18 | var title = $('.menu-select').val(); 19 | Session.set("currentMenuTitle",title); 20 | }, 21 | 'click .page-menu-option': function(e){ 22 | e.preventDefault(); 23 | var link = $(e.target).html(); 24 | var linkURL = "/" + encodeURI(link.replace(/\s+/g, '-')).toLowerCase(); 25 | var menu = Menus.findOne({title: Session.get("currentMenuTitle")}); 26 | Menus.update({_id: menu._id}, {$addToSet: {links: {linkTitle: link, linkURL: linkURL, linkType: "Page"}}}); 27 | }, 28 | 'click .categories-menu-option': function(e){ 29 | e.preventDefault(); 30 | var link = $(e.target).html(); 31 | var linkURL = "/category/" + encodeURI(link.replace(/\s+/g, '-')).toLowerCase(); 32 | var menu = Menus.findOne({title: Session.get("currentMenuTitle")}); 33 | Menus.update({_id: menu._id}, {$addToSet: {links: {linkTitle: link, linkURL: linkURL, linkType: "Category"}}}); 34 | }, 35 | 'click .remove-menu-link': function(e){ 36 | e.preventDefault(); 37 | $(e.target).parents('li').remove(); 38 | }, 39 | 'click .add-link-button': function(e){ 40 | e.preventDefault(); 41 | var menu = Menus.findOne({title: Session.get("currentMenuTitle")}); 42 | var link = $('.link-name').val(); 43 | var linkURL = encodeURI($('.link-url').val().replace(/\s+/g, '-')).toLowerCase(); 44 | var linkAttributes = { 45 | linkTitle: $('.link-name').val(), 46 | linkURL: encodeURI($('.link-url').val().replace(/\s+/g, '-')).toLowerCase(), 47 | linkType: "Custom" 48 | } 49 | 50 | Meteor.call('addLink', menu, linkAttributes, function(error, id){ 51 | if(error){ 52 | throwError(error.reason, 'error'); 53 | } 54 | }); 55 | }, 56 | 'click .update-link-button': function(e){ 57 | e.preventDefault(); 58 | var menu = Menus.findOne({title: Session.get("currentMenuTitle")}); 59 | var originalTitle = $(e.target).attr('data-title'); 60 | var linkAttributes = { 61 | linkTitle: $(e.target).parent().find('.update-link-title').val(), 62 | linkURL: encodeURI($(e.target).parent().find('.update-link-url').val().replace(/\s+/g, '-')).toLowerCase(), 63 | linkType: $(e.target).parent().find('.update-link-type').val() 64 | } 65 | 66 | Meteor.call('updateLink', menu, originalTitle, linkAttributes, function(error, id){ 67 | if(error){ 68 | throwError(error.reason, 'error'); 69 | } else{ 70 | throwError('Updated!', 'success'); 71 | } 72 | }); 73 | }, 74 | 'click .add-menu-button': function(e){ 75 | e.preventDefault(); 76 | var title = {title: $('.new-menu-title').val()}; 77 | Meteor.call('addMenu', title, function(error, id){ 78 | if(error){ 79 | throwError(error.reason, 'error'); 80 | } else { 81 | throwError('Menu Added!', 'success'); 82 | } 83 | }); 84 | } 85 | }); 86 | 87 | Template.menuSettings.created = function(){ 88 | var title = Menus.findOne().title; 89 | console.log("created " + title); 90 | Session.set("currentMenuTitle", title); 91 | } 92 | 93 | Template.menuChoices.helpers({ 94 | categories: function(){ 95 | return Categories.find(); 96 | } 97 | }); 98 | 99 | Template.menuLayout.helpers({ 100 | menuLinks: function(){ 101 | var title = Session.get("currentMenuTitle"); 102 | return Menus.findOne({title: title}, {fields: {'links': 1}}); 103 | }, 104 | currentMenuTitle: function(){ 105 | return Session.get("currentMenuTitle"); 106 | }, 107 | isSelected: function(location){ 108 | var menuLocation = Menus.findOne({title: Session.get("currentMenuTitle")}).location; 109 | if (location == menuLocation){ 110 | return "selected='selected'"; 111 | } 112 | } 113 | }); 114 | 115 | Template.menuLayout.events({ 116 | 'click .save-menu-button': function(e){ 117 | e.preventDefault(); 118 | var menu = Menus.findOne({title: Session.get("currentMenuTitle")}); 119 | var menuAttributes = { 120 | title: $('.menu-name').val(), 121 | location: $('.menu-location').val() 122 | } 123 | 124 | //get all the links and their attributes and store them as objects in an array 125 | var links = []; 126 | var i = 0; 127 | $('.menu-links-list').children().children('li').each(function(){ 128 | links[i++] = { 129 | linkTitle: $(this).find('.update-link-title').val(), 130 | linkType: $(this).find('.update-link-type').val(), 131 | linkURL: $(this).find('.update-link-url').val() 132 | } 133 | }); 134 | 135 | Meteor.call('updateMenu', menu._id, menuAttributes, links, function(error, id){ 136 | if(error){ 137 | throwError(error.reason, 'error'); 138 | } else{ 139 | throwError('Menu updated!', 'success'); 140 | } 141 | }); 142 | }, 143 | 'click .delete-menu-button': function(e){ 144 | e.preventDefault(); 145 | var menu = Menus.findOne({title: Session.get("currentMenuTitle")}); 146 | Menus.remove(menu._id); 147 | } 148 | }) -------------------------------------------------------------------------------- /client/views/settings/menu_settings.html: -------------------------------------------------------------------------------- 1 | 27 | 28 | 81 | 82 | -------------------------------------------------------------------------------- /smart.lock: -------------------------------------------------------------------------------- 1 | { 2 | "meteor": {}, 3 | "dependencies": { 4 | "basePackages": { 5 | "iron-router": {}, 6 | "spin": {}, 7 | "moment": {}, 8 | "user-session": {}, 9 | "bootstrap-wysiwyg": {}, 10 | "collectionFS": {}, 11 | "roles": {}, 12 | "graphicsmagick": {}, 13 | "cfs-public-folder": {} 14 | }, 15 | "packages": { 16 | "iron-router": { 17 | "git": "https://github.com/EventedMind/iron-router.git", 18 | "tag": "v0.7.0", 19 | "commit": "05f34bc48c4cad9fdaa366c1ddcabe6980232ece" 20 | }, 21 | "spin": { 22 | "git": "https://github.com/SachaG/meteor-spin.git", 23 | "tag": "v0.2.2", 24 | "commit": "3f655f0016228e4195acc784c45d3e3a247dc39f" 25 | }, 26 | "moment": { 27 | "git": "https://github.com/acreeger/meteor-moment.git", 28 | "tag": "v2.5.1", 29 | "commit": "8c9bc5d3fc96705057737cb9743d555417f6e551" 30 | }, 31 | "user-session": { 32 | "git": "https://github.com/BenjaminRH/meteor-user-session.git", 33 | "tag": "v0.2.0", 34 | "commit": "9ce8cb3385f6bc08918dd30313f2251a42e6ff3b" 35 | }, 36 | "bootstrap-wysiwyg": { 37 | "git": "https://github.com/mcrider/meteor-bootstrap-wysiwyg.git", 38 | "tag": "v0.1.0", 39 | "commit": "b9b1ffadb42b8bbfade08aaea10e4fbe890d21dd" 40 | }, 41 | "collectionFS": { 42 | "git": "https://github.com/CollectionFS/Meteor-CollectionFS.git", 43 | "tag": "v0.4.5", 44 | "commit": "29de048b54e7a3667bbe6e6f2e15c7ce982224bc" 45 | }, 46 | "roles": { 47 | "git": "https://github.com/alanning/meteor-roles.git", 48 | "tag": "v1.2.8", 49 | "commit": "68844ba216c348d332bdb840825850f497f515bb" 50 | }, 51 | "graphicsmagick": { 52 | "git": "https://github.com/ewindso/meteor-graphicsmagick.git", 53 | "tag": "v1.12.2", 54 | "commit": "795dcb78be6d2b493a547073f98c967e284248e0" 55 | }, 56 | "cfs-public-folder": { 57 | "git": "https://github.com/nooitaf/meteor-cfs-public-folder.git", 58 | "tag": "v0.0.3", 59 | "commit": "581c716424b374efb6f611110002621f9cc9212b" 60 | }, 61 | "blaze-layout": { 62 | "git": "https://github.com/EventedMind/blaze-layout.git", 63 | "tag": "v0.2.2", 64 | "commit": "8bc53798fe5965669ae67c72f91829fcfdceabfd" 65 | }, 66 | "cfs-base-package": { 67 | "git": "https://github.com/CollectionFS/Meteor-cfs-base-package.git", 68 | "tag": "v0.0.14", 69 | "commit": "ca3b540db2efaa27c66f70057bb575336cca5cfb" 70 | }, 71 | "cfs-file": { 72 | "git": "https://github.com/CollectionFS/Meteor-cfs-file.git", 73 | "tag": "v0.0.22", 74 | "commit": "54d0b0091b5edfc9752b2f9ef32c102a1b4a903e" 75 | }, 76 | "cfs-ejson-file": { 77 | "git": "https://github.com/CollectionFS/Meteor-cfs-ejson-file.git", 78 | "tag": "v0.0.6", 79 | "commit": "0e988cc88389a5474c904f5fcc7d11da34880353" 80 | }, 81 | "cfs-collection": { 82 | "git": "https://github.com/CollectionFS/Meteor-cfs-collection.git", 83 | "tag": "v0.4.5", 84 | "commit": "721a892450f336a9842201b789fd3567ed439ae9" 85 | }, 86 | "cfs-access-point": { 87 | "git": "https://github.com/CollectionFS/Meteor-cfs-access-point.git", 88 | "tag": "v0.0.23", 89 | "commit": "3f50fb8118212b9c80c9964f2b05433857edd92a" 90 | }, 91 | "cfs-worker": { 92 | "git": "https://github.com/CollectionFS/Meteor-cfs-worker.git", 93 | "tag": "v0.0.14", 94 | "commit": "f7f4796e2eb184fd1ac9c99abe9c3568db9c0c37" 95 | }, 96 | "cfs-upload-http": { 97 | "git": "https://github.com/CollectionFS/Meteor-cfs-upload-http.git", 98 | "tag": "v0.0.9", 99 | "commit": "97f2cb43b8b02dc62a6e3a428b3eb26c3dd93ada" 100 | }, 101 | "cfs-filesaver": { 102 | "git": "https://github.com/CollectionFS/Meteor-cfs-filesaver.git", 103 | "tag": "v0.0.3", 104 | "commit": "29cd7ae4dab138aa5e3792485945e742c46fc330" 105 | }, 106 | "cfs-storage-adapter": { 107 | "git": "https://github.com/CollectionFS/Meteor-cfs-storage-adapter.git", 108 | "tag": "v0.0.18", 109 | "commit": "a6dd87623186c760f4808869b545730ad5b6100d" 110 | }, 111 | "http-methods": { 112 | "git": "https://github.com/CollectionFS/Meteor-http-methods.git", 113 | "tag": "v0.0.22", 114 | "commit": "5b0f7723f49436b8a0a930f284ed05f0b26021fe" 115 | }, 116 | "cfs-upload-ddp": { 117 | "git": "https://github.com/CollectionFS/Meteor-cfs-upload-ddp.git", 118 | "tag": "v0.0.9", 119 | "commit": "8306605b51a37123f01f1c9662bddc2f487c3c4d" 120 | }, 121 | "http-publish": { 122 | "git": "https://github.com/CollectionFS/Meteor-http-publish.git", 123 | "tag": "v0.0.10", 124 | "commit": "f308999d074a3c4c056a88c431be04cead93228b" 125 | }, 126 | "cfs-gridfs": { 127 | "git": "https://github.com/CollectionFS/Meteor-cfs-gridfs.git", 128 | "tag": "v0.0.14", 129 | "commit": "7da36ad68ef6c30d3186cd690f53a3e6e76c7402" 130 | }, 131 | "cfs-tempstore": { 132 | "git": "https://github.com/CollectionFS/Meteor-cfs-tempstore.git", 133 | "tag": "v0.0.14", 134 | "commit": "bc5abdc5483475109a62e0a996f8e8361a154e8c" 135 | }, 136 | "power-queue": { 137 | "git": "https://github.com/CollectionFS/Meteor-power-queue.git", 138 | "tag": "v0.9.8", 139 | "commit": "28e12e43df4a16183fc4165bd7ec8901717964c5" 140 | }, 141 | "reactive-list": { 142 | "git": "https://github.com/CollectionFS/Meteor-reactive-list.git", 143 | "tag": "v0.0.6", 144 | "commit": "85e378691d432e959a69203df0b1ff8b577dc53b" 145 | }, 146 | "cfs-filesystem": { 147 | "git": "https://github.com/CollectionFS/Meteor-cfs-filesystem.git", 148 | "tag": "v0.0.18", 149 | "commit": "b8d4997e6c08bab33b971c75209a8a049b8e4322" 150 | }, 151 | "reactive-property": { 152 | "git": "https://github.com/CollectionFS/Meteor-reactive-property.git", 153 | "tag": "v0.0.1", 154 | "commit": "f742b8656bb88fafff2a9c3a32ff1f97b3ebf2f7" 155 | }, 156 | "micro-queue": { 157 | "git": "https://github.com/CollectionFS/Meteor-micro-queue.git", 158 | "tag": "v0.0.2", 159 | "commit": "d9ccd457508380837304924a3347e02616896a4b" 160 | } 161 | } 162 | } 163 | } 164 | -------------------------------------------------------------------------------- /client/stylesheets/sass/_grid.scss: -------------------------------------------------------------------------------- 1 | .row{ 2 | &:nth-of-type(odd){ 3 | background-color: $light-grey; 4 | } 5 | } 6 | 7 | 8 | .pure-g { 9 | text-rendering: optimizespeed; 10 | width: 100%; 11 | 12 | &:after{ 13 | content: ""; 14 | display: table; 15 | clear: both; 16 | } 17 | 18 | } 19 | 20 | .pure-u { 21 | float: left; 22 | zoom: 1; 23 | vertical-align: top; 24 | } 25 | 26 | 27 | .pure-u-1,.pure-u-1-2,.pure-u-1-3,.pure-u-2-3,.pure-u-1-4,.pure-u-3-4,.pure-u-1-5,.pure-u-2-5,.pure-u-3-5,.pure-u-4-5,.pure-u-1-6,.pure-u-5-6,.pure-u-1-7,.pure-u-2-7,.pure-u-3-7,.pure-u-4-7,.pure-u-5-7,.pure-u-6-7,.pure-u-1-8,.pure-u-3-8,.pure-u-5-8,.pure-u-7-8,.pure-u-1-9,.pure-u-2-9,.pure-u-4-9,.pure-u-5-9,.pure-u-6-9,.pure-u-7-9,.pure-u-8-9,.pure-u-1-10,.pure-u-3-10,.pure-u-7-10,.pure-u-9-10,.pure-u-1-11,.pure-u-2-11,.pure-u-3-11,.pure-u-4-11,.pure-u-5-11,.pure-u-6-11,.pure-u-7-11,.pure-u-8-11,.pure-u-9-11,.pure-u-10-11,.pure-u-1-12,.pure-u-5-12,.pure-u-7-12,.pure-u-9-12,.pure-u-11-12 { 28 | float: left; 29 | zoom: 1; 30 | vertical-align: top; 31 | } 32 | 33 | .pure-u-1-2 { 34 | width: 50%; 35 | } 36 | 37 | .pure-offset-1-2 { 38 | margin-left: 50%; 39 | } 40 | 41 | .pure-u-1-3 { 42 | width: 33.33333%; 43 | } 44 | 45 | .pure-offset-1-3 { 46 | margin-left: 33.33333%; 47 | } 48 | 49 | .pure-u-2-3 { 50 | width: 66.66667%; 51 | } 52 | 53 | .pure-offset-2-3 { 54 | margin-left: 66.66667%; 55 | } 56 | 57 | .pure-u-1-4 { 58 | width: 25%; 59 | } 60 | 61 | .pure-offset-1-4 { 62 | margin-left: 25%; 63 | } 64 | 65 | .pure-u-3-4 { 66 | width: 75%; 67 | } 68 | 69 | .pure-offset-3-4 { 70 | margin-left: 75%; 71 | } 72 | 73 | .pure-u-1-5 { 74 | width: 20%; 75 | } 76 | 77 | .pure-offset-1-5 { 78 | margin-left: 20%; 79 | } 80 | 81 | .pure-u-2-5 { 82 | width: 40%; 83 | } 84 | 85 | .pure-offset-2-5 { 86 | margin-left: 40%; 87 | } 88 | 89 | .pure-u-3-5 { 90 | width: 60%; 91 | } 92 | 93 | .pure-offset-3-5 { 94 | margin-left: 60%; 95 | } 96 | 97 | .pure-u-4-5 { 98 | width: 80%; 99 | } 100 | 101 | .pure-offset-4-5 { 102 | margin-left: 80%; 103 | } 104 | 105 | .pure-u-1-6 { 106 | width: 16.66667%; 107 | } 108 | 109 | .pure-offset-1-6 { 110 | margin-left: 16.66667%; 111 | } 112 | 113 | .pure-u-5-6 { 114 | width: 83.33333%; 115 | } 116 | 117 | .pure-offset-5-6 { 118 | margin-left: 83.33333%; 119 | } 120 | 121 | .pure-u-1-7 { 122 | width: 14.28571%; 123 | } 124 | 125 | .pure-offset-1-7 { 126 | margin-left: 14.28571%; 127 | } 128 | 129 | .pure-u-2-7 { 130 | width: 28.57143%; 131 | } 132 | 133 | .pure-offset-2-7 { 134 | margin-left: 28.57143%; 135 | } 136 | 137 | .pure-u-3-7 { 138 | width: 42.85714%; 139 | } 140 | 141 | .pure-offset-3-7 { 142 | margin-left: 42.85714%; 143 | } 144 | 145 | .pure-u-4-7 { 146 | width: 57.14286%; 147 | } 148 | 149 | .pure-offset-4-7 { 150 | margin-left: 57.14286%; 151 | } 152 | 153 | .pure-u-5-7 { 154 | width: 71.42857%; 155 | } 156 | 157 | .pure-offset-5-7 { 158 | margin-left: 71.42857%; 159 | } 160 | 161 | .pure-u-6-7 { 162 | width: 85.71429%; 163 | } 164 | 165 | .pure-offset-6-7 { 166 | margin-left: 85.71429%; 167 | } 168 | 169 | .pure-u-1-8 { 170 | width: 12.5%; 171 | } 172 | 173 | .pure-offset-1-8 { 174 | margin-left: 12.5%; 175 | } 176 | 177 | .pure-u-3-8 { 178 | width: 37.5%; 179 | } 180 | 181 | .pure-offset-3-8 { 182 | margin-left: 37.5%; 183 | } 184 | 185 | .pure-u-5-8 { 186 | width: 62.5%; 187 | } 188 | 189 | .pure-offset-5-8 { 190 | margin-left: 62.5%; 191 | } 192 | 193 | .pure-u-7-8 { 194 | width: 87.5%; 195 | } 196 | 197 | .pure-offset-7-8 { 198 | margin-left: 87.5%; 199 | } 200 | 201 | .pure-u-1-9 { 202 | width: 11.11111%; 203 | } 204 | 205 | .pure-offset-1-9 { 206 | margin-left: 11.11111%; 207 | } 208 | 209 | .pure-u-2-9 { 210 | width: 22.22222%; 211 | } 212 | 213 | .pure-offset-2-9 { 214 | margin-left: 22.22222%; 215 | } 216 | 217 | .pure-u-4-9 { 218 | width: 44.44444%; 219 | } 220 | 221 | .pure-offset-4-9 { 222 | margin-left: 44.44444%; 223 | } 224 | 225 | .pure-u-5-9 { 226 | width: 55.55556%; 227 | } 228 | 229 | .pure-offset-5-9 { 230 | margin-left: 55.55556%; 231 | } 232 | 233 | .pure-u-6-9 { 234 | width: 66.66667%; 235 | } 236 | 237 | .pure-offset-6-9 { 238 | margin-left: 66.66667%; 239 | } 240 | 241 | .pure-u-7-9 { 242 | width: 77.77778%; 243 | } 244 | 245 | .pure-offset-7-9 { 246 | margin-left: 77.77778%; 247 | } 248 | 249 | .pure-u-8-9 { 250 | width: 88.88889%; 251 | } 252 | 253 | .pure-offset-8-9 { 254 | margin-left: 88.88889%; 255 | } 256 | 257 | .pure-u-1-10 { 258 | width: 10%; 259 | } 260 | 261 | .pure-offset-1-10 { 262 | margin-left: 10%; 263 | } 264 | 265 | .pure-u-3-10 { 266 | width: 30%; 267 | } 268 | 269 | .pure-offset-3-10 { 270 | margin-left: 30%; 271 | } 272 | 273 | .pure-u-7-10 { 274 | width: 70%; 275 | } 276 | 277 | .pure-offset-7-10 { 278 | margin-left: 70%; 279 | } 280 | 281 | .pure-u-9-10 { 282 | width: 90%; 283 | } 284 | 285 | .pure-offset-9-10 { 286 | margin-left: 90%; 287 | } 288 | 289 | .pure-u-1-11 { 290 | width: 9.09091%; 291 | } 292 | 293 | .pure-offset-1-11 { 294 | margin-left: 9.09091%; 295 | } 296 | 297 | .pure-u-2-11 { 298 | width: 18.18182%; 299 | } 300 | 301 | .pure-offset-2-11 { 302 | margin-left: 18.18182%; 303 | } 304 | 305 | .pure-u-3-11 { 306 | width: 27.27273%; 307 | } 308 | 309 | .pure-offset-3-11 { 310 | margin-left: 27.27273%; 311 | } 312 | 313 | .pure-u-4-11 { 314 | width: 36.36364%; 315 | } 316 | 317 | .pure-offset-4-11 { 318 | margin-left: 36.36364%; 319 | } 320 | 321 | .pure-u-5-11 { 322 | width: 45.45455%; 323 | } 324 | 325 | .pure-offset-5-11 { 326 | margin-left: 45.45455%; 327 | } 328 | 329 | .pure-u-6-11 { 330 | width: 54.54545%; 331 | } 332 | 333 | .pure-offset-6-11 { 334 | margin-left: 54.54545%; 335 | } 336 | 337 | .pure-u-7-11 { 338 | width: 63.63636%; 339 | } 340 | 341 | .pure-offset-7-11 { 342 | margin-left: 63.63636%; 343 | } 344 | 345 | .pure-u-8-11 { 346 | width: 72.72727%; 347 | } 348 | 349 | .pure-offset-8-11 { 350 | margin-left: 72.72727%; 351 | } 352 | 353 | .pure-u-9-11 { 354 | width: 81.81818%; 355 | } 356 | 357 | .pure-offset-9-11 { 358 | margin-left: 81.81818%; 359 | } 360 | 361 | .pure-u-10-11 { 362 | width: 90.90909%; 363 | } 364 | 365 | .pure-offset-10-11 { 366 | margin-left: 90.90909%; 367 | } 368 | 369 | .pure-u-1-12 { 370 | width: 8.33333%; 371 | } 372 | 373 | .pure-offset-1-12 { 374 | margin-left: 8.33333%; 375 | } 376 | 377 | .pure-u-5-12 { 378 | width: 41.66667%; 379 | } 380 | 381 | .pure-offset-5-12 { 382 | margin-left: 41.66667%; 383 | } 384 | 385 | .pure-u-7-12 { 386 | width: 58.33333%; 387 | } 388 | 389 | .pure-offset-7-12 { 390 | margin-left: 58.33333%; 391 | } 392 | 393 | .pure-u-9-12 { 394 | width: 75%; 395 | } 396 | 397 | .pure-offset-9-12 { 398 | margin-left: 75%; 399 | } 400 | 401 | .pure-u-11-12 { 402 | width: 91.66667%; 403 | } 404 | 405 | .pure-offset-11-12 { 406 | margin-left: 91.66667%; 407 | } 408 | 409 | .pure-g-r img { 410 | max-width: 100%; 411 | } 412 | 413 | 414 | 415 | @media (min-width:980px) { 416 | .pure-visible-phone { display: none; } 417 | .pure-visible-tablet { display: none; } 418 | .pure-visible-desktop { } 419 | .pure-hidden-phone { } 420 | .pure-hidden-tablet { } 421 | .pure-hidden-desktop { display: none; } 422 | } 423 | 424 | 425 | 426 | 427 | @media (max-width:480px) { 428 | .pure-g-r > [class ^= "pure-u"] { 429 | width:100%; 430 | } 431 | } 432 | 433 | 434 | 435 | @media (max-width:767px) { 436 | 437 | .pure-g-r > [class ^= "pure-u"] { 438 | width:100%; 439 | } 440 | .pure-visible-phone { } 441 | .pure-hidden-phone { display: none; } 442 | .pure-hidden-desktop { } 443 | .pure-visible-desktop { display: none; } 444 | } 445 | 446 | 447 | 448 | @media (min-width:768px) and (max-width:979px) { 449 | .pure-visible-tablet {} 450 | .pure-hidden-tablet { display: none; } 451 | .pure-hidden-desktop {} 452 | .pure-visible-desktop { display: none; } 453 | } 454 | -------------------------------------------------------------------------------- /collections/collections.js: -------------------------------------------------------------------------------- 1 | Pages = new Meteor.Collection('pages'); 2 | Posts = new Meteor.Collection('posts'); 3 | Blocks = new Meteor.Collection('blocks'); 4 | Categories = new Meteor.Collection('categories'); 5 | Settings = new Meteor.Collection('settings'); 6 | Menus = new Meteor.Collection('menus'); 7 | 8 | 9 | full = new FS.Store.FileSystem("full"); 10 | 11 | Media = new FS.Collection("media", { 12 | stores: [full], 13 | filter: { 14 | allow: { 15 | contentTypes: ['image/*'], 16 | extensions: ['jpg', 'png', 'jpeg', 'gif'] 17 | }, 18 | onInvalid: function (message) { 19 | throwError(message, 'error'); 20 | } 21 | } 22 | }); 23 | 24 | FS.debug = true; 25 | 26 | 27 | 28 | //CollectionFS collection used for file uploads 29 | 30 | /* 31 | Media = new CollectionFS('media', { autopublish: false }); 32 | Media.filter({ 33 | allow: { 34 | contentTypes: ['image/*'] 35 | } 36 | }); 37 | 38 | Media.fileHandlers({ 39 | default: function(options) { // Options contains blob and fileRecord — same is expected in return if should be saved on filesytem, can be modified 40 | console.log('I am handling default: ' + options.fileRecord.filename); 41 | return { blob: options.blob, fileRecord: options.fileRecord }; // if no blob then save result in fileHandle (added createdAt) 42 | }, 43 | thumb: function(options) { 44 | var destination = options.destination(); 45 | var dest = destination.serverFilename; 46 | 47 | // Uses meteorite graphicsmagick 48 | gm(options.blob, dest).resize(60).quality(90).write(dest, function(err) { 49 | if (err) { 50 | console.log('Thumb: GraphicsMagick error ' + err); 51 | return false; 52 | // False will trigger rerun, could check options.sumFailes 53 | // if we only want to rerun 2 times (default limit is 3, 54 | // but sumFailes is reset at server idle + wait period) 55 | } else { 56 | console.log('Thumb: Finished writing image to ' + dest); 57 | // We only return the url for the file, no blob to save since we took care of it 58 | } 59 | }); 60 | 61 | // I failed to deliver a url for this, but don't try again 62 | return { blob: options.blob, fileRecord: options.fileRecord }; 63 | }, 64 | medium: function(options) { 65 | var destination = options.destination(); 66 | var dest = destination.serverFilename; 67 | 68 | // Uses meteorite graphicsmagick 69 | gm(options.blob, dest).resize(300).quality(90).write(dest, function(err) { 70 | if (err) { 71 | console.log('Medium: GraphicsMagick error ' + err); 72 | return false; 73 | // False will trigger rerun, could check options.sumFailes 74 | // if we only want to rerun 2 times (default limit is 3, 75 | // but sumFailes is reset at server idle + wait period) 76 | } else { 77 | console.log('Medium: Finished writing image to ' + dest); 78 | // We only return the url for the file, no blob to save since we took care of it 79 | } 80 | }); 81 | 82 | // I failed to deliver a url for this, but don't try again 83 | return { blob: options.blob, fileRecord: options.fileRecord }; 84 | } 85 | }); 86 | */ 87 | 88 | 89 | Pages.allow({ 90 | insert: isAdmin, 91 | update: isAdmin, 92 | remove: isAdmin 93 | }); 94 | 95 | Posts.allow({ 96 | insert: isAdmin, 97 | update: isAdmin, 98 | remove: isAdmin 99 | }) 100 | 101 | Blocks.allow({ 102 | insert: isAdmin, 103 | update: isAdmin, 104 | remove: isAdmin 105 | }); 106 | 107 | Media.allow({ 108 | insert: isAdmin, 109 | update: isAdmin, 110 | remove: isAdmin, 111 | download: isAdmin 112 | }) 113 | 114 | Categories.allow({ 115 | insert: isAdmin, 116 | update: isAdmin, 117 | remove: isAdmin 118 | }) 119 | 120 | Settings.allow({ 121 | insert: isAdmin, 122 | update: isAdmin, 123 | remove: isAdmin 124 | }) 125 | 126 | Menus.allow({ 127 | insert: isAdmin, 128 | update: isAdmin, 129 | remove: isAdmin 130 | }) 131 | 132 | Meteor.roles.allow({ 133 | insert: isAdmin, 134 | update: isAdmin, 135 | remove: isAdmin 136 | }) 137 | 138 | Meteor.users.allow({ 139 | insert: isAdmin, 140 | update: isAdmin, 141 | remove: isAdmin 142 | }) 143 | 144 | Meteor.methods({ 145 | page: function(pageAttributes){ 146 | var user = Meteor.user(), 147 | pageWithSameSlug = Pages.findOne({slug: pageAttributes.slug}); 148 | pageWithSameTitle = Pages.findOne({title: pageAttributes.title}); 149 | 150 | //make sure used is logged in before adding pages 151 | if (!user) 152 | throw new Meteor.Error(401, "You need to login to add pages"); 153 | 154 | //ensure page has a title 155 | if (!pageAttributes.title) 156 | throw new Meteor.Error(422, 'Please enter a page title'); 157 | 158 | //ensure page has a slug 159 | if (!pageAttributes.slug) 160 | throw new Meteor.Error(422, 'Please enter a page slug'); 161 | 162 | if (pageAttributes.slug && pageWithSameSlug){ 163 | throw new Meteor.Error(302, 'This slug has already been used', pageWithSameSlug._id); 164 | } 165 | 166 | if (pageAttributes.title && pageWithSameTitle){ 167 | throw new Meteor.Error(302, 'This page already exists', pageWithSameTitle._id); 168 | } 169 | 170 | var page = _.extend(_.pick(pageAttributes, 'title', 'slug', 'hideTitle', 'pageTemplate', 'content'), { 171 | submitted: new Date().getTime() 172 | }); 173 | 174 | var pageId = Pages.insert(page); 175 | 176 | return pageId; 177 | }, 178 | updatePage: function(pageID, pageAttributes){ 179 | var user = Meteor.user(); 180 | 181 | //make sure used is logged in before adding pages 182 | if (!user) 183 | throw new Meteor.Error(401, "You need to login to add pages"); 184 | 185 | //ensure page has a title 186 | if (!pageAttributes.title) 187 | throw new Meteor.Error(422, 'Please enter a page title'); 188 | 189 | //ensure page has a slug 190 | if (!pageAttributes.slug) 191 | throw new Meteor.Error(422, 'Please enter a page slug'); 192 | 193 | var page = _.extend(_.pick(pageAttributes, 'title', 'slug', 'hideTitle', 'pageTemplate', 'content'), { 194 | submitted: new Date().getTime() 195 | }); 196 | 197 | var pageId = Pages.update(pageID, page); 198 | 199 | return pageId; 200 | 201 | }, 202 | post: function(postAttributes){ 203 | var user = Meteor.user(), 204 | postWithSameSlug = Posts.findOne({slug: postAttributes.slug}); 205 | postWithSameTitle = Posts.findOne({title: postAttributes.title}); 206 | 207 | //make sure used is logged in before adding pages 208 | if (!user) 209 | throw new Meteor.Error(401, "You need to login to add posts"); 210 | 211 | //ensure post has a title 212 | if (!postAttributes.title) 213 | throw new Meteor.Error(422, 'Please enter a post title'); 214 | 215 | //ensure post has a slug 216 | if (!postAttributes.slug) 217 | throw new Meteor.Error(422, 'Please enter a post slug'); 218 | 219 | //if no excerpt is set, set excerpt to post content 220 | if (!postAttributes.excerpt) 221 | postAttributes.excerpt = postAttributes.content; 222 | 223 | if (postAttributes.slug && postWithSameSlug){ 224 | throw new Meteor.Error(302, 'This slug has already been used', postWithSameSlug._id); 225 | } 226 | 227 | if (postAttributes.title && postWithSameTitle){ 228 | throw new Meteor.Error(302, 'This page already exists', postWithSameTitle._id); 229 | } 230 | 231 | var post = _.extend(_.pick(postAttributes, 'title', 'slug', 'content', 'excerpt', 'featuredImage', 'categories'), { 232 | submitted: new Date().getTime() 233 | }); 234 | 235 | var postId = Posts.insert(post); 236 | 237 | return postId; 238 | }, 239 | updatePost: function(postID, postAttributes){ 240 | var user = Meteor.user(); 241 | 242 | //make sure used is logged in before adding pages 243 | if (!user) 244 | throw new Meteor.Error(401, "You need to login to add posts"); 245 | 246 | //ensure post has a title 247 | if (!postAttributes.title) 248 | throw new Meteor.Error(422, 'Please enter a post title'); 249 | 250 | //ensure post has a slug 251 | if (!postAttributes.slug) 252 | throw new Meteor.Error(422, 'Please enter a post slug'); 253 | 254 | if (!postAttributes.excerpt){ 255 | postAttributes.excerpt = postAttributes.content.substring(0,250) + "\u2026"; 256 | } 257 | 258 | 259 | var post = _.extend(_.pick(postAttributes, 'title', 'slug', 'content', 'excerpt', 'featuredImage', 'categories'), { 260 | submitted: new Date().getTime() 261 | }); 262 | 263 | var postId = Posts.update(postID, post); 264 | 265 | return postId; 266 | }, 267 | category: function(categoryAttributes){ 268 | //ensure category has a title 269 | if (!categoryAttributes.name) 270 | throw new Meteor.Error(422, 'Please enter a category name'); 271 | 272 | //ensure category has a slug 273 | if (!categoryAttributes.slug) 274 | throw new Meteor.Error(422, 'Please enter a category slug'); 275 | 276 | var category = _.extend(_.pick(categoryAttributes, 'name', 'slug'), { 277 | submitted: new Date().getTime() 278 | }); 279 | 280 | var categoryId = Categories.insert(category); 281 | 282 | return categoryId; 283 | }, 284 | updateCategory: function(categoryId, categoryAttributes){ 285 | //ensure category has a title 286 | if (!categoryAttributes.name) 287 | throw new Meteor.Error(422, 'Please enter a category name'); 288 | 289 | //ensure category has a slug 290 | if (!categoryAttributes.slug) 291 | throw new Meteor.Error(422, 'Please enter a category slug'); 292 | 293 | var category = _.extend(_.pick(categoryAttributes, 'name', 'slug'), { 294 | submitted: new Date().getTime() 295 | }); 296 | 297 | var updatedCategory = Categories.update(categoryId, category); 298 | 299 | return updatedCategory; 300 | }, 301 | updateSettings: function(settingsID, settingsOptions){ 302 | var user = Meteor.user(); 303 | 304 | //make sure used is logged in before adding pages 305 | if (!user) 306 | throw new Meteor.Error(401, "You need to login to add posts"); 307 | 308 | var settings = _.extend(_.pick(settingsOptions, 'siteTitle', 'landingPage', 'headerLocation', 'headerImage', 'headerHeight', 'headerWidth'), { 309 | submitted: new Date().getTime() 310 | }); 311 | 312 | var settingsId = Settings.upsert(settingsID, settings); 313 | 314 | return settings; 315 | }, 316 | addMenu: function(title){ 317 | var user = Meteor.user(); 318 | 319 | //make sure used is logged in before adding pages 320 | if (!user) 321 | throw new Meteor.Error(401, "You need to login to add posts"); 322 | 323 | if (!title.title) 324 | throw new Meteor.Error(422, 'Please enter a menu title'); 325 | 326 | var menu = _.extend(_.pick(title, 'title')); 327 | 328 | var menuId = Menus.insert(menu) 329 | 330 | return menuId; 331 | }, 332 | updateMenu: function(menuId, menuAttributes, links){ 333 | var user = Meteor.user(); 334 | 335 | //make sure used is logged in before adding pages 336 | if (!user) 337 | throw new Meteor.Error(401, "You need to login to add posts"); 338 | 339 | if (!menuAttributes.title) 340 | throw new Meteor.Error(422, 'Please enter a menu title'); 341 | 342 | if (!menuAttributes.location) 343 | throw new Meteor.Error(422, 'Please enter a menu location'); 344 | 345 | var menu = _.extend(_.pick(menuAttributes, 'title', 'location')); 346 | 347 | var menuId = Menus.update({_id: menuId}, {$set: {title: menu.title, location: menu.location, links: links}}); 348 | 349 | return menuId; 350 | }, 351 | addLink: function(menu, linkAttributes){ 352 | var user = Meteor.user(); 353 | 354 | //make sure used is logged in before adding link 355 | if (!user) 356 | throw new Meteor.Error(401, "You need to login to add menus"); 357 | 358 | //ensure link has a title 359 | if (!linkAttributes.linkTitle) 360 | throw new Meteor.Error(422, 'The link must have a title'); 361 | 362 | //ensure link has a URL 363 | if (!linkAttributes.linkURL) 364 | throw new Meteor.Error(422, 'The link must have a URL'); 365 | 366 | var link = _.extend(_.pick(linkAttributes, 'linkTitle', 'linkURL', 'linkType')); 367 | 368 | var linkId = Menus.update({_id: menu._id}, {$addToSet: {links: {linkTitle: link.linkTitle, linkURL: link.linkURL, linkType: "Custom"}}}); 369 | console.log(link.linkTitle); 370 | 371 | return linkId; 372 | }, 373 | updateLink: function(menu, originalTitle, linkAttributes){ 374 | var user = Meteor.user(); 375 | 376 | //make sure used is logged in before adding link 377 | if (!user) 378 | throw new Meteor.Error(401, "You need to login to add menus"); 379 | 380 | //ensure link has a title 381 | if (!linkAttributes.linkTitle) 382 | throw new Meteor.Error(422, 'The link must have a title'); 383 | 384 | //ensure link has a URL 385 | if (!linkAttributes.linkURL) 386 | throw new Meteor.Error(422, 'The link must have a URL'); 387 | 388 | var link = _.extend(_.pick(linkAttributes, 'linkTitle', 'linkURL', 'linkType')); 389 | 390 | var linkId = Menus.update({_id: menu._id, "links.linkTitle": originalTitle}, {$set: { "links.$.linkTitle" : linkAttributes.linkTitle, "links.$.linkURL": linkAttributes.linkURL}}); 391 | console.log(linkAttributes.linkTitle); 392 | 393 | return linkId; 394 | } 395 | }); 396 | -------------------------------------------------------------------------------- /compass_app_log.txt: -------------------------------------------------------------------------------- 1 | 2014-02-12 23:34:18 error client/stylesheets/sass/main.min.scss (Line 27: Undefined variable: "$brown".) 2 | 2014-02-12 23:34:18 create client/stylesheets/main.min.css 3 | 2014-02-12 23:38:57 error client/stylesheets/sass/main.min.scss (Line 27: Undefined variable: "$brown".) 4 | 2014-02-12 23:38:57 overwrite client/stylesheets/main.min.css 5 | 2014-02-12 23:39:25 error client/stylesheets/sass/main.min.scss (Line 108: Undefined variable: "$yellow".) 6 | 2014-02-12 23:39:25 overwrite client/stylesheets/main.min.css 7 | 2014-02-12 23:39:46 overwrite client/stylesheets/main.min.css 8 | 2014-02-12 23:58:12 overwrite client/stylesheets/main.min.css 9 | 2014-02-12 23:59:08 identical client/stylesheets/main.min.css 10 | 2014-02-12 23:59:29 overwrite client/stylesheets/main.min.css 11 | 2014-02-13 00:01:54 overwrite client/stylesheets/main.min.css 12 | 2014-02-13 00:07:55 identical client/stylesheets/main.min.css 13 | 2014-02-13 00:08:14 identical client/stylesheets/main.min.css 14 | 2014-02-13 00:08:22 identical client/stylesheets/main.min.css 15 | 2014-02-13 00:08:28 overwrite client/stylesheets/main.min.css 16 | 2014-02-13 00:08:51 overwrite client/stylesheets/main.min.css 17 | 2014-02-13 00:08:58 overwrite client/stylesheets/main.min.css 18 | 2014-02-13 00:09:06 identical client/stylesheets/main.min.css 19 | 2014-02-13 00:10:15 overwrite client/stylesheets/main.min.css 20 | 2014-02-13 00:10:29 overwrite client/stylesheets/main.min.css 21 | 2014-02-13 00:11:00 overwrite client/stylesheets/main.min.css 22 | 2014-02-13 00:11:15 overwrite client/stylesheets/main.min.css 23 | 2014-02-13 00:13:15 overwrite client/stylesheets/main.min.css 24 | 2014-02-13 00:13:23 overwrite client/stylesheets/main.min.css 25 | 2014-02-13 00:13:35 overwrite client/stylesheets/main.min.css 26 | 2014-02-13 00:13:51 overwrite client/stylesheets/main.min.css 27 | 2014-02-13 00:14:03 overwrite client/stylesheets/main.min.css 28 | 2014-02-13 00:14:26 overwrite client/stylesheets/main.min.css 29 | 2014-02-13 00:14:34 overwrite client/stylesheets/main.min.css 30 | 2014-02-13 00:16:11 identical client/stylesheets/main.min.css 31 | 2014-02-13 00:16:40 error client/stylesheets/sass/main.min.scss (Line 12 of client/stylesheets/sass/_sidebar.scss: Undefined variable: "$light-greyl".) 32 | 2014-02-13 00:16:40 overwrite client/stylesheets/main.min.css 33 | 2014-02-13 00:16:54 error client/stylesheets/sass/main.min.scss (Line 12 of client/stylesheets/sass/_sidebar.scss: Undefined variable: "$light-grey".) 34 | 2014-02-13 00:16:54 overwrite client/stylesheets/main.min.css 35 | 2014-02-13 00:17:02 overwrite client/stylesheets/main.min.css 36 | 2014-02-13 00:17:24 overwrite client/stylesheets/main.min.css 37 | 2014-02-13 00:17:26 overwrite client/stylesheets/main.min.css 38 | 2014-02-13 00:22:23 overwrite client/stylesheets/main.min.css 39 | 2014-02-13 00:22:34 overwrite client/stylesheets/main.min.css 40 | 2014-02-13 00:26:17 identical client/stylesheets/main.min.css 41 | 2014-02-13 00:27:55 overwrite client/stylesheets/main.min.css 42 | 2014-02-13 00:28:00 overwrite client/stylesheets/main.min.css 43 | 2014-02-13 00:28:11 overwrite client/stylesheets/main.min.css 44 | 2014-02-13 00:28:31 overwrite client/stylesheets/main.min.css 45 | 2014-02-13 00:28:58 overwrite client/stylesheets/main.min.css 46 | 2014-02-13 00:29:10 overwrite client/stylesheets/main.min.css 47 | 2014-02-13 00:29:19 identical client/stylesheets/main.min.css 48 | 2014-02-13 00:29:48 overwrite client/stylesheets/main.min.css 49 | 2014-02-13 00:30:34 error client/stylesheets/sass/main.min.scss (Line 5 of client/stylesheets/sass/_colors.scss: Invalid CSS after "$midnight: ": expected expression (e.g. 1px, bold), was "#;171616;") 50 | 2014-02-13 00:30:34 overwrite client/stylesheets/main.min.css 51 | 2014-02-13 00:30:36 overwrite client/stylesheets/main.min.css 52 | 2014-02-13 00:30:48 overwrite client/stylesheets/main.min.css 53 | 2014-02-13 00:31:52 overwrite client/stylesheets/main.min.css 54 | 2014-02-13 00:32:05 overwrite client/stylesheets/main.min.css 55 | 2014-02-13 00:32:21 overwrite client/stylesheets/main.min.css 56 | 2014-02-13 00:32:40 overwrite client/stylesheets/main.min.css 57 | 2014-02-13 00:33:05 overwrite client/stylesheets/main.min.css 58 | 2014-02-13 00:35:46 overwrite client/stylesheets/main.min.css 59 | 2014-02-13 00:35:54 overwrite client/stylesheets/main.min.css 60 | 2014-02-13 00:36:00 overwrite client/stylesheets/main.min.css 61 | 2014-02-13 00:36:57 overwrite client/stylesheets/main.min.css 62 | 2014-02-13 00:45:10 overwrite client/stylesheets/main.min.css 63 | 2014-02-13 00:45:25 overwrite client/stylesheets/main.min.css 64 | 2014-02-13 00:45:58 overwrite client/stylesheets/main.min.css 65 | 2014-02-13 01:00:27 overwrite client/stylesheets/main.min.css 66 | 2014-02-13 01:00:44 overwrite client/stylesheets/main.min.css 67 | 2014-02-13 01:02:30 overwrite client/stylesheets/main.min.css 68 | 2014-02-13 01:02:38 overwrite client/stylesheets/main.min.css 69 | 2014-02-13 01:04:17 overwrite client/stylesheets/main.min.css 70 | 2014-02-13 01:04:48 overwrite client/stylesheets/main.min.css 71 | 2014-02-13 01:05:02 overwrite client/stylesheets/main.min.css 72 | 2014-02-13 01:05:12 overwrite client/stylesheets/main.min.css 73 | 2014-02-13 01:05:37 overwrite client/stylesheets/main.min.css 74 | 2014-02-13 01:06:02 overwrite client/stylesheets/main.min.css 75 | 2014-02-13 01:06:26 overwrite client/stylesheets/main.min.css 76 | 2014-02-13 01:07:10 identical client/stylesheets/main.min.css 77 | 2014-02-13 01:07:13 overwrite client/stylesheets/main.min.css 78 | 2014-02-13 01:07:26 identical client/stylesheets/main.min.css 79 | 2014-02-13 01:07:53 overwrite client/stylesheets/main.min.css 80 | 2014-02-13 01:07:56 overwrite client/stylesheets/main.min.css 81 | 2014-02-13 01:08:22 overwrite client/stylesheets/main.min.css 82 | 2014-02-13 01:08:45 overwrite client/stylesheets/main.min.css 83 | 2014-02-13 01:09:17 overwrite client/stylesheets/main.min.css 84 | 2014-02-13 01:10:34 overwrite client/stylesheets/main.min.css 85 | 2014-02-13 01:10:36 overwrite client/stylesheets/main.min.css 86 | 2014-02-13 01:10:55 overwrite client/stylesheets/main.min.css 87 | 2014-02-13 01:11:00 identical client/stylesheets/main.min.css 88 | 2014-02-13 01:11:21 overwrite client/stylesheets/main.min.css 89 | 2014-02-13 01:12:38 overwrite client/stylesheets/main.min.css 90 | 2014-02-13 01:14:34 overwrite client/stylesheets/main.min.css 91 | 2014-02-13 01:33:15 overwrite client/stylesheets/main.min.css 92 | 2014-02-13 01:33:17 overwrite client/stylesheets/main.min.css 93 | 2014-02-13 01:33:24 overwrite client/stylesheets/main.min.css 94 | 2014-02-13 01:33:27 overwrite client/stylesheets/main.min.css 95 | 2014-02-13 01:33:39 error client/stylesheets/sass/main.min.scss (Line 8 of client/stylesheets/sass/_tables.scss: Invalid CSS after " font-size: 1.2": expected ";", was ".rem;") 96 | 2014-02-13 01:33:39 overwrite client/stylesheets/main.min.css 97 | 2014-02-13 01:33:44 overwrite client/stylesheets/main.min.css 98 | 2014-02-13 01:37:33 overwrite client/stylesheets/main.min.css 99 | 2014-02-13 01:37:46 overwrite client/stylesheets/main.min.css 100 | 2014-02-13 01:38:44 overwrite client/stylesheets/main.min.css 101 | 2014-02-13 01:39:37 overwrite client/stylesheets/main.min.css 102 | 2014-02-13 09:42:07 overwrite client/stylesheets/main.min.css 103 | 2014-02-13 09:42:10 identical client/stylesheets/main.min.css 104 | 2014-02-13 10:03:37 overwrite client/stylesheets/main.min.css 105 | 2014-02-13 10:06:12 overwrite client/stylesheets/main.min.css 106 | 2014-02-13 10:06:47 overwrite client/stylesheets/main.min.css 107 | 2014-02-13 10:07:37 overwrite client/stylesheets/main.min.css 108 | 2014-02-13 10:08:40 overwrite client/stylesheets/main.min.css 109 | 2014-02-13 10:15:42 overwrite client/stylesheets/main.min.css 110 | 2014-02-13 10:15:44 overwrite client/stylesheets/main.min.css 111 | 2014-02-13 10:15:55 overwrite client/stylesheets/main.min.css 112 | 2014-02-13 10:40:51 identical client/stylesheets/main.min.css 113 | 2014-02-13 11:29:49 overwrite client/stylesheets/main.min.css 114 | 2014-02-13 11:38:22 overwrite client/stylesheets/main.min.css 115 | 2014-02-13 11:40:52 overwrite client/stylesheets/main.min.css 116 | 2014-02-13 11:42:04 overwrite client/stylesheets/main.min.css 117 | 2014-02-13 11:42:20 overwrite client/stylesheets/main.min.css 118 | 2014-02-13 11:42:59 identical client/stylesheets/main.min.css 119 | 2014-02-13 11:50:41 overwrite client/stylesheets/main.min.css 120 | 2014-02-13 11:50:49 overwrite client/stylesheets/main.min.css 121 | 2014-02-13 11:50:53 overwrite client/stylesheets/main.min.css 122 | 2014-02-13 11:51:36 overwrite client/stylesheets/main.min.css 123 | 2014-02-13 11:51:53 overwrite client/stylesheets/main.min.css 124 | 2014-02-13 13:19:51 overwrite client/stylesheets/main.min.css 125 | 2014-02-13 13:19:54 identical client/stylesheets/main.min.css 126 | 2014-02-13 13:27:24 overwrite client/stylesheets/main.min.css 127 | 2014-02-13 13:28:16 overwrite client/stylesheets/main.min.css 128 | 2014-02-13 18:23:23 overwrite client/stylesheets/main.min.css 129 | 2014-02-13 18:24:53 overwrite client/stylesheets/main.min.css 130 | 2014-02-13 18:24:58 overwrite client/stylesheets/main.min.css 131 | 2014-02-13 18:26:26 identical client/stylesheets/main.min.css 132 | 2014-02-13 18:28:32 overwrite client/stylesheets/main.min.css 133 | 2014-02-13 18:34:11 error client/stylesheets/sass/main.min.scss (Line 44 of client/stylesheets/sass/_mixins.scss: Undefined variable: "$script".) 134 | 2014-02-13 18:34:11 overwrite client/stylesheets/main.min.css 135 | 2014-02-13 18:34:51 overwrite client/stylesheets/main.min.css 136 | 2014-02-13 18:35:22 overwrite client/stylesheets/main.min.css 137 | 2014-02-13 18:35:33 overwrite client/stylesheets/main.min.css 138 | 2014-02-13 18:35:42 overwrite client/stylesheets/main.min.css 139 | 2014-02-13 18:36:32 identical client/stylesheets/main.min.css 140 | 2014-02-13 18:37:02 overwrite client/stylesheets/main.min.css 141 | 2014-02-13 19:05:24 overwrite client/stylesheets/main.min.css 142 | 2014-02-14 00:41:50 overwrite client/stylesheets/main.min.css 143 | 2014-02-14 00:46:25 overwrite client/stylesheets/main.min.css 144 | 2014-02-14 00:46:28 identical client/stylesheets/main.min.css 145 | 2014-02-14 02:19:55 create stylesheets/main.min.css 146 | 2014-02-14 09:53:22 overwrite client/stylesheets/main.min.css 147 | 2014-02-14 09:54:01 overwrite client/stylesheets/main.min.css 148 | 2014-02-14 09:54:28 overwrite client/stylesheets/main.min.css 149 | 2014-02-14 09:54:42 overwrite client/stylesheets/main.min.css 150 | 2014-02-14 09:55:05 overwrite client/stylesheets/main.min.css 151 | 2014-02-14 09:55:49 overwrite client/stylesheets/main.min.css 152 | 2014-02-14 09:56:09 overwrite client/stylesheets/main.min.css 153 | 2014-02-14 09:56:20 overwrite client/stylesheets/main.min.css 154 | 2014-02-14 09:56:56 overwrite client/stylesheets/main.min.css 155 | 2014-02-14 09:57:06 overwrite client/stylesheets/main.min.css 156 | 2014-02-14 09:57:18 overwrite client/stylesheets/main.min.css 157 | 2014-02-14 09:57:36 overwrite client/stylesheets/main.min.css 158 | 2014-02-14 09:58:04 overwrite client/stylesheets/main.min.css 159 | 2014-02-14 10:12:00 overwrite client/stylesheets/main.min.css 160 | 2014-02-14 10:12:13 overwrite client/stylesheets/main.min.css 161 | 2014-02-14 10:12:26 overwrite client/stylesheets/main.min.css 162 | 2014-02-14 10:12:55 overwrite client/stylesheets/main.min.css 163 | 2014-02-14 10:38:17 overwrite client/stylesheets/main.min.css 164 | 2014-02-14 10:39:53 overwrite client/stylesheets/main.min.css 165 | 2014-02-14 10:40:02 error client/stylesheets/sass/main.min.scss (Line 9 of client/stylesheets/sass/_errors.scss: Undefined variable: "$green".) 166 | 2014-02-14 10:40:02 overwrite client/stylesheets/main.min.css 167 | 2014-02-14 10:40:20 error client/stylesheets/sass/main.min.scss (Line 9 of client/stylesheets/sass/_errors.scss: Undefined variable: "$green".) 168 | 2014-02-14 10:40:20 identical client/stylesheets/main.min.css 169 | 2014-02-14 10:40:34 error client/stylesheets/sass/main.min.scss (Line 9 of client/stylesheets/sass/_errors.scss: Undefined variable: "$green".) 170 | 2014-02-14 10:40:34 identical client/stylesheets/main.min.css 171 | 2014-02-14 10:40:50 overwrite client/stylesheets/main.min.css 172 | 2014-02-14 10:42:28 error client/stylesheets/sass/main.min.scss (Line 2 of client/stylesheets/sass/_colors.scss: Invalid CSS after "$light-red: ": expected expression (e.g. 1px, bold), was "##F46264;") 173 | 2014-02-14 10:42:28 overwrite client/stylesheets/main.min.css 174 | 2014-02-14 10:42:32 error client/stylesheets/sass/main.min.scss (Line 2 of client/stylesheets/sass/_colors.scss: Invalid CSS after "$light-red: ": expected expression (e.g. 1px, bold), was "##F46264;") 175 | 2014-02-14 10:42:32 identical client/stylesheets/main.min.css 176 | 2014-02-14 10:42:39 overwrite client/stylesheets/main.min.css 177 | 2014-02-14 10:43:41 overwrite client/stylesheets/main.min.css 178 | 2014-02-14 10:43:56 overwrite client/stylesheets/main.min.css 179 | 2014-02-14 10:44:33 overwrite client/stylesheets/main.min.css 180 | 2014-02-14 10:44:50 overwrite client/stylesheets/main.min.css 181 | 2014-02-14 10:45:04 overwrite client/stylesheets/main.min.css 182 | --------------------------------------------------------------------------------