From 42c3dfd07dcce54d3043474dc929d1a8f6083dce Mon Sep 17 00:00:00 2001 From: Ted Kesgar Date: Wed, 8 Oct 2014 15:34:00 +0700 Subject: [PATCH 1/7] First commit; please be gentle... --- assets/css/screen.css | 861 -------------------------------------- assets/img/favicon.ico | Bin 799 -> 0 bytes assets/img/pre.png | Bin 78 -> 0 bytes assets/js/app.js | 144 ------- assets/js/fittext.js | 46 -- assets/js/jquery.min.js | 4 - assets/js/respond.min.js | 2 - css/less/font.less | 32 ++ css/less/mixin.less | 13 + css/less/normalize.less | 427 +++++++++++++++++++ css/less/style.less | 201 +++++++++ css/style.css | 2 + index.html | 115 ----- index.php | 23 + new_post.html | 112 ----- php/config.php | 9 + php/crud/comment.php | 56 +++ php/crud/post.php | 46 ++ php/lib/admin_auth.php | 16 + php/lib/database.php | 21 + php/views/post_create.php | 0 php/views/post_delete.php | 0 php/views/post_edit.php | 0 php/views/post_list.php | 52 +++ php/views/post_view.php | 0 post.html | 141 ------- templates/bottom.php | 2 + templates/top.php | 20 + 28 files changed, 920 insertions(+), 1425 deletions(-) delete mode 100644 assets/css/screen.css delete mode 100644 assets/img/favicon.ico delete mode 100644 assets/img/pre.png delete mode 100644 assets/js/app.js delete mode 100644 assets/js/fittext.js delete mode 100644 assets/js/jquery.min.js delete mode 100644 assets/js/respond.min.js create mode 100644 css/less/font.less create mode 100644 css/less/mixin.less create mode 100644 css/less/normalize.less create mode 100644 css/less/style.less create mode 100644 css/style.css delete mode 100644 index.html create mode 100644 index.php delete mode 100644 new_post.html create mode 100644 php/config.php create mode 100644 php/crud/comment.php create mode 100644 php/crud/post.php create mode 100644 php/lib/admin_auth.php create mode 100644 php/lib/database.php create mode 100644 php/views/post_create.php create mode 100644 php/views/post_delete.php create mode 100644 php/views/post_edit.php create mode 100644 php/views/post_list.php create mode 100644 php/views/post_view.php delete mode 100644 post.html create mode 100644 templates/bottom.php create mode 100644 templates/top.php diff --git a/assets/css/screen.css b/assets/css/screen.css deleted file mode 100644 index 1d8fdf3..0000000 --- a/assets/css/screen.css +++ /dev/null @@ -1,861 +0,0 @@ -@import url(http://fonts.googleapis.com/css?family=Open+Sans); -@import url(http://fonts.googleapis.com/css?family=Questrial); - -/* Reset & Basics (Inspired by E. Meyers) -================================================== */ -html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, address, cite, code, em, img, small, strong, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, embed, figure, figcaption, footer, header, hgroup, menu, nav, section, summary, time, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; } -article, aside, details, figcaption, figure, footer, header, hgroup, menu, time, nav, section { - display: block; } -html, body, .wrapper { - min-height: 100%; -} - - -/* Body -================================================== */ -html, body { - height: 100%; -} -.wrapper { - min-height: 100%; -} -body { - overflow-x: hidden; - font: 17px/28px ff-meta-serif-web-pro, "Georgia", serif; - color: #333; - background: #fff; -} - - -/* Typography -================================================== */ -h1, h2, h3, h4, h5, h6 { - font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif; - font-weight: normal; - text-transform: uppercase; - font-weight: 700; - color: #000; - text-rendering: optimizeLegibility; -} - -h1 { - font-size: 50px; - padding-bottom: 30px; -} - -h2 { - font-size: 45px; - padding-bottom: 25px; -} - -h3 { - font-size: 40px; - padding-bottom: 20px; -} - -h4 { - font-size: 35px; - padding-bottom: 15px; -} - -h5 { - font-size: 30px; - padding-bottom: 10px; -} - -p { - margin: 0 0 28px 0; -} - -strong { - font-weight: bold; -} -em { - font-style: italic; -} -sup { - line-height: 0; -} - -small { - font-size: 70%; -} - -cite { - font-size: 80%; - font-style: italic; - } - -/* Teaser -================================================== */ - -header#teaser h1 { - text-transform: none !important; - color: #333; - font-size: 28px !important; - font-weight: 300 !important; -} - - -/* Links -================================================== */ -a { - color: #F40034; - text-decoration: none; - -webkit-transition: color .2s ease-in-out; - -moz-transition: color .2s ease-in-out; - transition: color .2s ease-in-out; -} -a:hover { - color: #F40034; -} - -/* Layout -================================================== */ -/* White container that is the "page" */ -.wrapper { - max-width: 1500px; - margin: 0 auto; - background: #fff; -} - -/* Containers to keep content to a set width */ -.nav, -.art-header-inner, -.footer, -.art-list, -.abt, -.fourohfour { - width: 980px; -} -.nav, -.art-body-inner, -.footer, -.art-list, -.abt, -.fourohfour { - position: relative; - margin: 0 auto; -} - -/* Nav -================================================== */ -.nav { - position: absolute; - top: 0; - left: 50%; - height: 70px; - padding-top: 40px; - margin-left: -490px; /* Half width of nav */ - border-bottom: 1px solid #333; - z-index: 2; -} -.nav.fixed { - position: fixed; -} -#logo { - float: left; -} -.nav-primary { - float: right; -} -.nav-primary li { - display: inline-block; - margin-left: 10px; - font-weight: 500; -} -#logo h1, -.nav-primary li, -.nav-primary li a { - font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif; - font-weight: 700; - font-size: 13px; - line-height: 30px; - color: #000; - text-transform: uppercase; -} - -#logo h1 { - height: 30px; - margin-left: 0px; - letter-spacing: 1px; - font-family: 'Questrial', sans-serif; - font-size: 30px; -} - -#logo h1 span{ - color: #F40034 !important; -} - -.nav li:first-child { - margin-left: 0; /* Remove left margin from the first nav li */ -} - -/* Home Page -================================================== */ - -div#home {} - -#home > div.cover { - max-width: 980px; - margin: 0px auto; - /*padding-top: 110px;*/ -} - -div.cover { - -} - -div.cover > img { - width: 100%; - height: 100%; -} - - -/* Article -================================================== */ -.art { - margin-top: -131px; -} -/* Header */ -.art-header { - height: 900px; - /* Background image is defined in the post */ - background-position: top center; - background-attachment: fixed; - overflow: hidden; -} -/* Contains the time, title and subtitle for an article */ -.art-header-inner { - position: fixed; - top: 300px; - left: 50%; - margin-left: -490px; -} -.art-time, -.art-title, -.art-subtitle { - text-align: center; - text-transform: uppercase; -} -.art-time { - font-size: 14px; - line-height: 1.8; - letter-spacing: 4px; -} -.art-title { - font-size: 100px; - line-height: .9; - letter-spacing: -2px; - width: 100%; -} -.art-subtitle { - margin-top: 4px; - font-size: 14px; - line-height: 1.3; - letter-spacing: 4px; -} - -/* If small header, make few adjustments */ -.small .art-title { - font-size: 70px; - line-height: 65px; -} -.small.art-header-inner { - top: 320px; -} - -/* Body */ -.art-body { - position: relative; - width: 100%; - background: #fff; - z-index: 100; - -webkit-box-shadow: 0 -3px 3px rgba(0,0,0,.2); - -moz-box-shadow: 0 -3px 3px rgba(0,0,0,.2); - box-shadow: 0 -3px 3px rgba(0,0,0,.2); -} -.art-body-inner { - font-family: Georgia,Cambria,"Times New Roman",Times,serif; - max-width: 640px; - padding: 80px 0 50px; - letter-spacing: 0.01rem; - font-weight: 400; - font-style: normal; - font-size: 21px; - line-height: 1.5; -} -.art-body-inner a:hover { - border-bottom: 1px solid #F40034; - padding-bottom:2px; -} -.art-body-inner ul, -.art-body-inner ol { /* For lists in the article body */ - margin-bottom: 26px; -} -.art-body-inner ul li { - list-style: disc; -} - -.art-body-inner mark { - background-color: #fdffb6; - padding: 2px; - -webkit-box-shadow: #fdffb6 0 0 5px; - -moz-box-shadow: #fdffb6 0 0 5px; - box-shadow: #fdffb6 0 0 5px; -} - -.art-body-inner blockquote { - font-size: 16px; - background: #f9f9f9; - border-left: 10px solid #ccc; - margin: 1.5em 10px; - padding: 0.5em 10px; - quotes: "\201C""\201D""\2018""\2019"; -} - -.art-body-inner blockquote p:first-child:before { - color: #ccc; - content: "“"; - font-size: 4em; - line-height: 0.1em; - margin-right: 0.25em; - vertical-align: -0.4em; -} - -.art-body-inner blockquote p { - margin-bottom: 1.5em; -} - -.art-body-inner blockquote p:last-child { - margin-bottom: 0; -} - - -.dropcap { /* First character on articles */ - float: left; - margin: 47px 10px 20px 0; - font-size: 100px; - line-height: 0; -} -.art-subhead { /* Subheads are used to break up sections of an article */ - margin: 60px 0 15px; - font-size: 20px; - line-height: 28px; - letter-spacing: 3px; -} -.callout { /* Callouts are like large pullquotes */ - font-weight: bold; -} -.art-body-inner img { - max-width: 100%; - max-height: 600px; - margin-bottom: 26px; -} -.art-body-inner img.center { - display: block; - margin-left: auto; - margin-right: auto; -} -.art-body-inner .art-reference { - font-size: 80%; - color: #999; - margin-top: 50px; -} - -/* For simple, white background posts */ -.simple .art-body { - background: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - - -/* List of Articles -================================================== */ -.art-list { - padding: 120px 0 0; -} -.art-list-body { - position: relative; - overflow: hidden; -} -.art-list-item { - padding: 40px 0; - list-style: none; - overflow: hidden; - border-bottom: 1px solid #ccc; -} -.art-list-item:last-child { - border-bottom: none; -} -.art-list-title { - font-size: 26px; - line-height: 26px; - font-weight: 700; -} -.art-list-item-title-and-time { - float: left; - width: 30%; - margin-bottom: 10px; -} -.art-list-time { - font-size: 12px; - line-height: 20px; - letter-spacing: 2px; - text-transform: uppercase; - color: #999; -} -.art-list-title a { - color: #000; -} -.art-list-title a:hover { - color: #F40034; -} -.art-list-item p { - width: 65%; - float: left; - margin-left: 5%; - margin-bottom: 0; - font-size: 16px; - line-height: 24px; -} - - -/* Footer -================================================== */ -.footer { - padding: 30px 0 40px; - overflow: hidden; - border-top: 1px solid #ccc; -} -.footer, -.footer a { - font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif; - font-size: 13px; - text-transform: uppercase; - color: #777; -} -.footer a:hover { - color: #000; -} -.back-to-top, -.footer-nav, -.offsite-links { - width: 45%; - float: left; -} -.psi { - width:10%; - float:left; - text-align: center; -} -.footer-nav { - text-align: center; -} -.offsite-links { - text-align: right; -} -.footer .twitter-link:hover { - color: #0084B4; -} -.footer .instagram-link:hover { - color: #3F729B; -} -.footer .github-link:hover { - color: #c5376d; -} -.footer .caffein8-link:hover{ - color: black; -} -.footer .rss-link:hover { - color: #e85d24; -} -/* Remove prev & next links on loop */ -.art-list + .footer .footer-nav, -.abt + .footer .footer-nav { - text-indent: -9999px; - text-align: left; -} - - -/* White Reverse Theme -================================================== */ -/* Nav */ -.nav.white { - border-bottom-color: #fff; - border-bottom-color: rgba(255,255,255,.3); -} -.nav.white li a, -.nav.white li, -.nav.white #logo h1 { - color: #fff; - text-shadow: 0 0 8px rgba(0,0,0,.5); -} -.nav.white #logo h1 { - background-position: top center; -} - -nav.pagination{ - text-align: right; - padding-bottom: 25px; -} -/* Art header */ -.art-header.white { - background-color: #111; -} -.art-header.white .art-time, -.art-header.white .art-title, -.art-header.white .art-subtitle { - color: #fff; - text-shadow: 0 0 8px rgba(0,0,0,.5); -} - - -/* About page -================================================== */ -.abt { - padding: 200px 0 100px; - list-style: none; -} -.abt .abt-header { - font-size: 140px; - line-height: 1; - text-transform: none; -} -.abt .abt-subheader { - font-size: 24px; - font-style: italic; - text-transform: none; - color: #777; -} -.abt-body { - -moz-column-count: 2; - -moz-column-gap: 20px; - -webkit-column-count: 2; - -webkit-column-gap: 20px; - margin-bottom: 28px; -} -.abt-signoff { - line-height: 1.3; - font-style: italic; - color: #777; -} - -/* 404 page -================================================== */ -.fourohfour { - padding: 240px 0 100px; - text-align: center; -} - -/* Code -================================================== */ - -code, tt { -background: #ededee; -color: #3C4043; -font-size: 90%; -padding: 1px 3px; -} - -pre { - width: 92%; - overflow: auto; - margin: 2rem 0; - padding: 1rem 0.8rem 1rem 1.2rem; - color: #3f3b36; - border: 1px solid #ccc; - border-left: 1rem solid #ccc; - font: lighter 1.2rem/2rem monospace; - background: url(/assets/img/pre.png) repeat 0 -0.9rem; - background-size: 1px 4rem; -} - -pre code, tt { -font-size: inherit; -white-space: -moz-pre-wrap; -white-space: pre-wrap; -background: transparent; -border: none; -padding: 0; -} - - -.gist { - font-size: 14px; -} - - -/* Responsive -================================================== */ -@media only screen and (max-width: 1080px) { - /* Set all of the 980 containers to flexible width */ - .nav, - .art-body-inner, - .art-header-inner, - .footer, - .art-list, - .abt, - .fourohfour { - width: 90%; - } - .nav, - .art-header-inner { - margin-left: -45%; - } -} - -@media only screen and (max-width: 1024px) { - /* Everything becomes scrolling and non-fading */ - .nav, - .nav.fixed { - position: relative; - opacity: 1 !important; /* Important to override JS values */ - display: inline-block; - } - .art-header-inner { - position: relative; - top: 0 !important; /* Important to override JS values */ - margin-top: 240px !important; /* Important to override JS values */ - opacity: 1 !important; /* Important to override JS values */ - } - /* Articles no longer have fixed heights */ - .art-header { - height: auto; - padding-bottom: 100px; - background-size: cover !important; - background-attachment: scroll; - } - /* Remove bottom space out if articles doesn't have a background */ - .simple .art-header { - padding-bottom: 0; - } - .art-list { - padding-top: 0; - } - .abt { - padding: 40px 0; - } - .fourohfour { - padding: 80px 0 60px; - } -} - -@media only screen and (max-width: 780px) { - .art-body-inner ul, - .art-body-inner ol { - margin-left: 20px; - } - .art-title { - letter-spacing: 0; - } - .art-subtitle, - .art-time { - font-size: 12px; - } - .nav { - padding-top: 25px; - height: 55px; - } - .art-list-item-title-and-time, - .art-list-item p { - float: none; - width: auto; - margin-left: 0; - } - .abt-body { - -moz-column-count: 1; - -webkit-column-count: 1; - } -} - -@media only screen and (max-width: 500px) { - .nav-primary li { - margin-left: 10px; - } - .nav #logo h1 { - font-size: 16px; - letter-spacing: -1px; - } - .nav li a { - font-size: 12px; - } - .art-header { - padding-bottom: 50px; - } - .art-header-inner { - margin-top: 190px !important; - } - .art-body-inner { - padding-top: 30px; - } - body { - font-size: 15px; - line-height: 24px; - } - p { - margin-bottom: 24px; - } - .footer { - padding: 10px 0 20px; - } - .back-to-top, - .footer-nav { - width: 50%; - } - .back-to-top { - text-align: left; - } - .footer-nav { - text-align: right; - } - .offsite-links { - float: left; - width: 100%; - text-align: left; - } - .offsite-links a { - font-size: 12px; - } - .art-list + .footer .footer-nav { - display: none; - } - .abt .abt-header { - font-size: 80px; - } - .abt .abt-subheader { - font-size: 18px; - } -} - - -/* Misc -================================================== */ -::selection { - background: #000; - color: #fff; -} -::-moz-selection { - background: #000; - color: #fff; -} -img.left { - float: left; - margin-right: 20px; -} -img.right { - float: right; - margin-left: 20px; -} -/* Clearfixing pile */ -.nav:before, -.art-body-inner:before, -.footer:before, -.art-list:before { - content:""; - display:table; -} -.nav:after, -.art-body-inner:after, -.footer:after, -.art-list:after { - clear:both; -} -.nav, -.art-body-inner, -.footer, -.art-list { - zoom:1; /* For IE 6/7 (trigger hasLayout) */ -} - - -@-webkit-keyframes le-fade { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -@-moz-keyframes le-fade { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} - -.art-header-inner { - -webkit-animation: le-fade .5s 0 1 ease-out; - -moz-animation: le-fade .5s 0 1 ease-out; -} - -.art-list, -.nav, -.abt, -.art-body { - -webkit-animation: le-fade .5s 0s 1 ease-out; - -moz-animation: le-fade .5s 0s 1 ease-out; -} - -hr.featured-article { - padding: 0; - border: none; - border-top: medium double #bbb; - color: #bbb; - text-align: center; -} -hr.featured-article:after { - content: "✭ Featured Article ✭"; - display: inline-block; - position: relative; - top: -0.8em; - font-size: 1.2em; - padding: 0 0.6em; - background: white; -} - -/* FORM */ - -#contact-area { - width: 600px; - margin-top: 25px; -} - -#contact-area input, #contact-area textarea { - padding: 5px; - width: 471px; - font-family: Helvetica, sans-serif; - margin: 0px 0px 10px 0px; - border: 2px solid #ccc; -} - -#contact-area textarea { - height: 90px; -} - -#contact-area textarea:focus, #contact-area input:focus { - border: 2px solid #900; -} - -#contact-area input.submit-button { - width: 100px; - -} - -label { - float: left; - text-align: right; - margin-right: 15px; - width: 100px; - padding-top: 5px; -} \ No newline at end of file diff --git a/assets/img/favicon.ico b/assets/img/favicon.ico deleted file mode 100644 index 40b40ed345847af1db325abe295a4d7c33cc51d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 799 zcmZ?wbhEHbRA5kGc$UeqZ{NPZfB)9j)^6Us`Olv}|Ni~^`SWLYcXw)Ps)K`rqod=Z zMT^$0Ti4v&eCN)c-@kvqef!qi+dDKg^!@wyU%q@%RaG@NH($Pd`GN%tl9G}xUc6XR zQu6E9FLibGuV25udiCn{>(}4Ee~*cY`SIh2tE=m-UAqn)I`rbji{9SeckkZKojdp0 zvuEz^?gtJWP*G9YxN+mzvuFMM{GL2{qNu1iW5$g8_wN@K6&V>BZQHi(@#DvNd3lzW zmLEQRxPANf_U+p*UAlDo^y%p6==k{fH*el_bab?~wpLVBeE$47J3IUC-Mhxd#!Hqg z@$m34Gc(J{$+Z^ zfgzJY2V@Q?P8it#H)J+7x3spkcXW1jck-(-hw?JH@v`)EtEXqoo}E5zdY96i*(uFN zj0-Y3q?&aXr)xJUr*kZjNcUQi$uByGv)MHxowvt!Rt9@B(;SH=f#c~~U98q~HZ(=d zNo?X+@6f5SID?ZlQ)UiZror)R3hjJv=A>l?%&`{^ew41l*Dk;$_GoTkf%6J>Eil=TJ#E=(?aY;SM|LZ4G}!4c(8v)yZsj{E+;CCD xp^pWP3S4uv5|&mxacW8Syewc*%yzV+uO-MJ;ZQ").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="
"+""+"
",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
t
",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( -a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f -.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/assets/js/respond.min.js b/assets/js/respond.min.js deleted file mode 100644 index b7fe2f4..0000000 --- a/assets/js/respond.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! Respond.js v1.0.1pre: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ -(function(e,h){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=h;if(h){return}var u=e.document,r=u.documentElement,i=[],k=[],p=[],o={},g=30,f=u.getElementsByTagName("head")[0]||r,b=f.getElementsByTagName("link"),d=[],a=function(){var B=b,w=B.length,z=0,y,x,A,v;for(;z=F.minw)&&(!F.maxw||F.maxw&&D<=F.maxw)){if(!z[F.media]){z[F.media]=[]}z[F.media].push(k[F.rules])}}for(var y in p){if(p[y]&&p[y].parentNode===f){f.removeChild(p[y])}}for(var y in z){var G=u.createElement("style"),A=z[y].join("\n");G.type="text/css";G.media=y;if(G.styleSheet){G.styleSheet.cssText=A}else{G.appendChild(u.createTextNode(A))}C.appendChild(G);p.push(G)}f.insertBefore(C,B.nextSibling)},n=function(v,x){var w=c();if(!w){return}w.open("GET",v,true);w.onreadystatechange=function(){if(w.readyState!=4||w.status!=200&&w.status!=304){return}x(w.responseText)};if(w.readyState==4){return}w.send(null)},c=(function(){var v=false;try{v=new XMLHttpRequest()}catch(w){v=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return v}})();a();respond.update=a;function s(){j(true)}if(e.addEventListener){e.addEventListener("resize",s,false)}else{if(e.attachEvent){e.attachEvent("onresize",s)}}})(this,(function(f){if(f.matchMedia){return true}var e,i=document,c=i.documentElement,g=c.firstElementChild||c.firstChild,h=!i.body,d=i.body||i.createElement("body"),b=i.createElement("div"),a="only all";b.id="mq-test-1";b.style.cssText="position:absolute;top:-99em";d.appendChild(b);b.innerHTML='_';if(h){c.insertBefore(d,g)}b.removeChild(b.firstChild);e=b.offsetWidth==9;if(h){c.removeChild(d)}else{d.removeChild(b)}return e})(this)); \ No newline at end of file diff --git a/css/less/font.less b/css/less/font.less new file mode 100644 index 0000000..0c0bc28 --- /dev/null +++ b/css/less/font.less @@ -0,0 +1,32 @@ +.roboto(@weight : 400) +{ + font-family: 'Roboto', 'Ubuntu', sans-serif; + font-weight: @weight; +} + +.roboto-condensed(@weight : 400) +{ + font-family: 'Roboto Condensed', 'Ubuntu Condensed', sans-serif; + font-weight: @weight; +} + +.inconsolata(@weight : 400) +{ + font-family: 'Inconsolata', 'Consolas', monospace; + font-weight: @weight; +} + +html +{ + .roboto(400); +} + +h1, h2, h3, h4, h5, h6 +{ + .roboto-condensed(700); +} + +code, samp, kbd, pre +{ + .inconsolata(400); +} \ No newline at end of file diff --git a/css/less/mixin.less b/css/less/mixin.less new file mode 100644 index 0000000..544f690 --- /dev/null +++ b/css/less/mixin.less @@ -0,0 +1,13 @@ +.clear-margin() +{ + margin: 0 auto; + padding: 0; +} + +.noselect() { + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} \ No newline at end of file diff --git a/css/less/normalize.less b/css/less/normalize.less new file mode 100644 index 0000000..458eea1 --- /dev/null +++ b/css/less/normalize.less @@ -0,0 +1,427 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/css/less/style.less b/css/less/style.less new file mode 100644 index 0000000..a8411e2 --- /dev/null +++ b/css/less/style.less @@ -0,0 +1,201 @@ +@import 'normalize.less'; + +@import 'mixin.less'; +@import 'font.less'; + +a +{ + border-bottom: 1px solid transparent; + color: #aaa; + text-decoration: none; + transition: 0.5s; + + &:hover, + &:active + { + border-bottom-color: #aaa; + } +} + +body > header +{ + .clear-margin(); + padding: 40px 0; + width: 960px; + text-align: center; + + .header-title + { + .roboto-condensed(700); + .noselect(); + font-size: 4em; + text-transform: uppercase; + } + + .header-subtitle + { + .roboto-condensed(300); + .noselect(); + font-size: 1.5em; + text-transform: lowercase; + } +} + +body > nav +{ + .clear-margin(); + background: #000; + color: #fff; + height: 50px; + overflow: hidden; + width: 960px; + + ul + { + .clear-margin(); + height: 100%; + list-style-type: none; + + li + { + display: inline-block; + height: 50px; + + a + { + .roboto-condensed(700); + border: none; + color: #fff; + display: inline-block; + font-size: 16px; + height: 16px; + line-height: 16px; + padding: 17px; + text-decoration: none; + text-transform: uppercase; + transition: 0.5s; + + &:hover, + &:active + { + background: #ccc; + color: #000; + } + } + } + } + + .nav-left, + .nav-left li + { + float: left; + } + + .nav-right, + .nav-right li + { + float: right; + } +} + +body > section +{ + .clear-margin(); + width: 960px; + + & > article + { + margin: 40px auto; + width: 600px; + + & > header + { + h1 + { + text-align: center; + + a + { + color: #000; + + &:hover, + &:active + { + border-bottom-color: currentColor; + font-size: 1.2em; + } + } + } + + .article-date + { + color: #888; + letter-spacing: 0.2em; + text-align: center; + } + } + + & > section + { + margin: 20px auto; + text-align: justify; + } + + & > footer + { + text-align: center; + + ul.actions + { + .clear-margin(); + list-style-type: none; + + li + { + display: inline-block; + + a + { + background: #000; + border: none; + color: #fff; + display: inline-block; + font-size: 0.8em; + letter-spacing: 0.1em; + padding: 0.5em 1em; + text-transform: lowercase; + transition: 0.5s; + + &:hover, + &:active + { + background: #ccc; + color: #000; + font-size: 1em; + } + } + } + } + } + + &:nth-child(odd) + { + margin-left: 0; + } + + &:nth-child(even) + { + margin-right: 0; + } + } +} + +body > footer +{ + .clear-margin(); + border-top: 1px solid #ccc; + padding: 20px; + width: 960px; + font-size: 0.8em; + text-align: center; +} \ No newline at end of file diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..b5f46ec --- /dev/null +++ b/css/style.css @@ -0,0 +1,2 @@ +/* CSS crunched with Crunch - http://crunchapp.net/ */ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-family:'Roboto','Ubuntu',sans-serif;font-weight:400}h1,h2,h3,h4,h5,h6{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700}code,samp,kbd,pre{font-family:'Inconsolata','Consolas',monospace;font-weight:400}a{border-bottom:1px solid transparent;color:#aaa;text-decoration:none;transition:0.5s}a:hover,a:active{border-bottom-color:#aaa}body>header{margin:0 auto;padding:0;padding:40px 0;width:960px;text-align:center}body>header .header-title{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:4em;text-transform:uppercase}body>header .header-subtitle{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:300;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1.5em;text-transform:lowercase}body>nav{margin:0 auto;padding:0;background:#000;color:#fff;height:50px;overflow:hidden;width:960px}body>nav ul{margin:0 auto;padding:0;height:100%;list-style-type:none}body>nav ul li{display:inline-block;height:50px}body>nav ul li a{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;border:none;color:#fff;display:inline-block;font-size:16px;height:16px;line-height:16px;padding:17px;text-decoration:none;text-transform:uppercase;transition:0.5s}body>nav ul li a:hover,body>nav ul li a:active{background:#ccc;color:#000}body>nav .nav-left,body>nav .nav-left li{float:left}body>nav .nav-right,body>nav .nav-right li{float:right}body>section{margin:0 auto;padding:0;width:960px}body>section>article{margin:40px auto;width:600px}body>section>article>header h1{text-align:center}body>section>article>header h1 a{color:#000}body>section>article>header h1 a:hover,body>section>article>header h1 a:active{border-bottom-color:currentColor;font-size:1.2em}body>section>article>header .article-date{color:#888;letter-spacing:0.2em;text-align:center}body>section>article>section{margin:20px auto;text-align:justify}body>section>article>footer{text-align:center}body>section>article>footer ul.actions{margin:0 auto;padding:0;list-style-type:none}body>section>article>footer ul.actions li{display:inline-block}body>section>article>footer ul.actions li a{background:#000;border:none;color:#fff;display:inline-block;font-size:0.8em;letter-spacing:0.1em;padding:0.5em 1em;text-transform:lowercase;transition:0.5s}body>section>article>footer ul.actions li a:hover,body>section>article>footer ul.actions li a:active{background:#ccc;color:#000;font-size:1em}body>section>article:nth-child(odd){margin-left:0}body>section>article:nth-child(even){margin-right:0}body>footer{margin:0 auto;padding:0;border-top:1px solid #ccc;padding:20px;width:960px;font-size:0.8em;text-align:center} \ No newline at end of file diff --git a/index.html b/index.html deleted file mode 100644 index 92548e1..0000000 --- a/index.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Simple Blog - - - - - -
- - - -
-
- -
-
- - - -
- - - - - - - - - \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..6b77693 --- /dev/null +++ b/index.php @@ -0,0 +1,23 @@ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Simple Blog | Tambah Post - - - - - -
- - - -
- - -

-

- -
-
-

Tambah Post

- -
-
- - - - - - -
- - - - -
-
-
- -
- - - -
- - - - - - - - - \ No newline at end of file diff --git a/php/config.php b/php/config.php new file mode 100644 index 0000000..78add47 --- /dev/null +++ b/php/config.php @@ -0,0 +1,9 @@ + $post_id, + 'content' => $content, + 'email' => $email, + 'name' => $name, + 'date' => $date + ); + return db_query($query, $param); +} + +function comment_select($post_id = null, $id = null) { + $query = "SELECT * FROM comments WHERE TRUE "; + if ($post_id) { + $post_id_q = mysqli_real_escape_string($db, $post_id); + $query .= "AND post_id = '%post_id%' "; + } + if ($id) { + $id_q = mysqli_real_escape_string($db, $id); + $query .= "AND id = '%id%' "; + } + $param = array( + 'post_id' => $post_id, + 'id' => $id + ); + return db_query($query, $param); +} + +function comment_update($id, $name, $email, $content, $date) { + $query = "UPDATE posts + SET content = '%content%', + email = '%email%', + name = '%name%', + date = '%date%' + WHERE id = '%id%'"; + $param = array( + 'content' => $content, + 'email' => $email, + 'name' => $name, + 'date' => $date, + 'id' => $id + ); + return db_query($query, $param); +} + +function comment_delete($id) { + $query = "DELETE FROM comments WHERE id = '%id%'"; + $param = array('id' => $id); + return db_query($query, $param); +} \ No newline at end of file diff --git a/php/crud/post.php b/php/crud/post.php new file mode 100644 index 0000000..dc4209c --- /dev/null +++ b/php/crud/post.php @@ -0,0 +1,46 @@ + $content, + 'title' => $title, + 'date' => $date + ); + return db_query($query, $param); +} + +function post_select($id = null) { + if ($id) { + $query = "SELECT * FROM posts WHERE id = '%id%'"; + $param = array('id' => $id); + } else { + $query = "SELECT * FROM posts"; + $param = array(); + } + return db_query($query, $param); +} + +function post_update($id, $title, $content, $date) { + $query = "UPDATE posts + SET content = '%content%', + title = '%title%', + date = '%date%' + WHERE id = '%id%'"; + $param = array( + 'content' => $content, + 'title' => $title, + 'date' => $date, + 'id' => $id + ); + return db_query($query, $param); +} + +function post_delete($id) { + $query = "DELETE FROM posts WHERE id = '%id%'"; + $param = array('id' => $id); + return db_query($query, $param); +} \ No newline at end of file diff --git a/php/lib/admin_auth.php b/php/lib/admin_auth.php new file mode 100644 index 0000000..fbb4dd0 --- /dev/null +++ b/php/lib/admin_auth.php @@ -0,0 +1,16 @@ + $value) { + $query = str_ireplace("%{$key}%", mysqli_real_escape_string($db, $value), $query); + } + return mysqli_query($db, $query); +} \ No newline at end of file diff --git a/php/views/post_create.php b/php/views/post_create.php new file mode 100644 index 0000000..e69de29 diff --git a/php/views/post_delete.php b/php/views/post_delete.php new file mode 100644 index 0000000..e69de29 diff --git a/php/views/post_edit.php b/php/views/post_edit.php new file mode 100644 index 0000000..e69de29 diff --git a/php/views/post_list.php b/php/views/post_list.php new file mode 100644 index 0000000..a95ed25 --- /dev/null +++ b/php/views/post_list.php @@ -0,0 +1,52 @@ + + + + +
+
Slog
+
A simple blog by Ted Kesgar
+
+ + + +
+ + + +
+ + + + \ No newline at end of file diff --git a/php/views/post_view.php b/php/views/post_view.php new file mode 100644 index 0000000..e69de29 diff --git a/post.html b/post.html deleted file mode 100644 index c09e8e6..0000000 --- a/post.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Simple Blog | Apa itu Simple Blog? - - - - - -
- - - -
- -
-
- -

Apa itu Simple Blog?

-

-
-
- -
-
-
-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Blanditiis aliquam minus consequuntur amet nulla eius, neque beatae, nostrum possimus, officiis eaque consectetur. Sequi sunt maiores dolore, illum quidem eos explicabo! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magnam consequuntur consequatur molestiae saepe sed, incidunt sunt inventore minima voluptatum adipisci hic, est ipsa iste. Nobis, aperiam provident quae. Reprehenderit, iste.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores animi tenetur nam delectus eveniet iste non culpa laborum provident minima numquam excepturi rem commodi, officia accusamus eos voluptates obcaecati. Possimus?

- -
- -

Komentar

- -
-
- - - - - - -
- - - - -
- -
    -
  • -
    -

    Jems

    -
    2 menit lalu
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Perferendis repudiandae quae natus quos alias eos repellendus a obcaecati cupiditate similique quibusdam, atque omnis illum, minus ex dolorem facilis tempora deserunt! …

    -
  • - -
  • -
    -

    Kave

    -
    1 jam lalu
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Perferendis repudiandae quae natus quos alias eos repellendus a obcaecati cupiditate similique quibusdam, atque omnis illum, minus ex dolorem facilis tempora deserunt! …

    -
  • -
-
-
- -
- - - -
- - - - - - - - - \ No newline at end of file diff --git a/templates/bottom.php b/templates/bottom.php new file mode 100644 index 0000000..4d4a7e5 --- /dev/null +++ b/templates/bottom.php @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/templates/top.php b/templates/top.php new file mode 100644 index 0000000..5db9950 --- /dev/null +++ b/templates/top.php @@ -0,0 +1,20 @@ + + + + + + + + + + Slog + + + + + + + \ No newline at end of file From 20510a08d25491732096b990b0011438905ccc4d Mon Sep 17 00:00:00 2001 From: Ted Kesgar Date: Tue, 14 Oct 2014 12:55:11 +0700 Subject: [PATCH 2/7] Finished post management, added pages --- css/less/base.less | 28 ++++ css/less/font.less | 15 -- css/less/footer.less | 10 ++ css/less/header.less | 23 +++ css/less/nav.less | 61 ++++++++ css/less/section-edit.less | 81 +++++++++++ css/less/section-list.less | 85 +++++++++++ css/less/section-view.less | 67 +++++++++ css/less/section.less | 6 + css/less/style.less | 205 ++------------------------- css/style.css | 2 +- index.php | 15 +- js/script.js | 22 +++ php/action/add_post.php | 11 ++ php/action/delete_post.php | 8 ++ php/action/edit_post.php | 12 ++ php/config.php | 4 +- php/crud/post.php | 4 +- php/lib/admin_auth.php | 16 --- php/lib/database.php | 9 +- php/lib/url.php | 61 ++++++++ php/pages/about.php | 2 + php/pages/license.php | 2 + php/templates/bottom.php | 9 ++ php/templates/navbar.php | 15 ++ {templates => php/templates}/top.php | 16 ++- php/views/post_create.php | 0 php/views/post_delete.php | 23 +++ php/views/post_edit.php | 33 +++++ php/views/post_list.php | 41 ++---- php/views/post_page.php | 9 ++ php/views/post_view.php | 39 +++++ templates/bottom.php | 2 - 33 files changed, 658 insertions(+), 278 deletions(-) create mode 100644 css/less/base.less create mode 100644 css/less/footer.less create mode 100644 css/less/header.less create mode 100644 css/less/nav.less create mode 100644 css/less/section-edit.less create mode 100644 css/less/section-list.less create mode 100644 css/less/section-view.less create mode 100644 css/less/section.less create mode 100644 js/script.js create mode 100644 php/action/add_post.php create mode 100644 php/action/delete_post.php create mode 100644 php/action/edit_post.php delete mode 100644 php/lib/admin_auth.php create mode 100644 php/lib/url.php create mode 100644 php/pages/about.php create mode 100644 php/pages/license.php create mode 100644 php/templates/bottom.php create mode 100644 php/templates/navbar.php rename {templates => php/templates}/top.php (65%) delete mode 100644 php/views/post_create.php create mode 100644 php/views/post_page.php delete mode 100644 templates/bottom.php diff --git a/css/less/base.less b/css/less/base.less new file mode 100644 index 0000000..f41ea01 --- /dev/null +++ b/css/less/base.less @@ -0,0 +1,28 @@ +html +{ + .roboto(400); +} + +h1, h2, h3, h4, h5, h6 +{ + .roboto-condensed(700); +} + +code, samp, kbd, pre +{ + .inconsolata(400); +} + +a +{ + border-bottom: 1px solid transparent; + color: #aaa; + text-decoration: none; + transition: 0.5s; + + &:hover, + &:active + { + border-bottom-color: #aaa; + } +} \ No newline at end of file diff --git a/css/less/font.less b/css/less/font.less index 0c0bc28..0144315 100644 --- a/css/less/font.less +++ b/css/less/font.less @@ -14,19 +14,4 @@ { font-family: 'Inconsolata', 'Consolas', monospace; font-weight: @weight; -} - -html -{ - .roboto(400); -} - -h1, h2, h3, h4, h5, h6 -{ - .roboto-condensed(700); -} - -code, samp, kbd, pre -{ - .inconsolata(400); } \ No newline at end of file diff --git a/css/less/footer.less b/css/less/footer.less new file mode 100644 index 0000000..cde334b --- /dev/null +++ b/css/less/footer.less @@ -0,0 +1,10 @@ +body > footer +{ + .clear-margin(); + border-top: 1px solid #888; + clear: both; + padding: 20px 0; + width: 960px; + font-size: 0.8em; + text-align: center; +} \ No newline at end of file diff --git a/css/less/header.less b/css/less/header.less new file mode 100644 index 0000000..5caca41 --- /dev/null +++ b/css/less/header.less @@ -0,0 +1,23 @@ +body > header +{ + .clear-margin(); + padding: 40px 0; + width: 960px; + text-align: center; + + .header-title + { + .roboto-condensed(700); + .noselect(); + font-size: 4em; + text-transform: uppercase; + } + + .header-subtitle + { + .roboto-condensed(300); + .noselect(); + font-size: 1.5em; + text-transform: lowercase; + } +} \ No newline at end of file diff --git a/css/less/nav.less b/css/less/nav.less new file mode 100644 index 0000000..4b1fdf4 --- /dev/null +++ b/css/less/nav.less @@ -0,0 +1,61 @@ +body > nav +{ + .clear-margin(); + background: #000; + color: #fff; + height: 50px; + width: 960px; + + @media (min-width : 960px) + { + border-radius: 10px; + overflow: hidden; + } + + ul + { + .clear-margin(); + height: 100%; + list-style-type: none; + + li + { + display: inline-block; + height: 50px; + + a + { + .roboto-condensed(700); + border: none; + color: #fff; + display: inline-block; + font-size: 16px; + height: 16px; + line-height: 16px; + padding: 17px; + text-decoration: none; + text-transform: uppercase; + transition: 0.5s; + + &:hover, + &:active + { + background: #ccc; + color: #000; + } + } + } + } + + .nav-left, + .nav-left li + { + float: left; + } + + .nav-right, + .nav-right li + { + float: right; + } +} \ No newline at end of file diff --git a/css/less/section-edit.less b/css/less/section-edit.less new file mode 100644 index 0000000..d61649b --- /dev/null +++ b/css/less/section-edit.less @@ -0,0 +1,81 @@ +.input-shared() +{ + background: #fff; + border: 1px solid #888; + border-radius: 10px; + display: block; + margin: 10px auto; + padding: 10px; + transition: 0.5s; + width: 500px; + + &:focus + { + border-color: #000; + box-shadow: 0 0 4px 2px #888; + outline: none; + width: 550px; + } +} + +.section-edit +{ + text-align: center; + width: 600px; + + input[type="text"] + { + .input-shared(); + } + + input[type="date"] + { + .input-shared(); + } + + textarea + { + .input-shared(); + .inconsolata(); + height: 300px; + resize: none; + } + + button + { + .roboto-condensed(700); + background: #ccc; + border: 1px solid #888; + border-radius: 10px; + display: block; + margin: 20px auto; + outline: none; + padding: 10px; + text-transform: uppercase; + transition: 0.5s; + width: 300px; + + &:hover, &:active + { + border-color: #000; + box-shadow: 0 0 10px 5px #888; + width: 330px; + } + } + + .edit-message + { + background: #000; + border-radius: 10px; + color: #fff; + opacity: 1.0; + padding: 10px; + transition: 0.5s; + } + + .edit-hidden + { + opacity: 0.0; + height: 0; + } +} \ No newline at end of file diff --git a/css/less/section-list.less b/css/less/section-list.less new file mode 100644 index 0000000..9d0e62e --- /dev/null +++ b/css/less/section-list.less @@ -0,0 +1,85 @@ +.section-list > article +{ + margin: 40px auto; + width: 600px; + + & > header + { + h1 + { + text-align: center; + + a + { + color: #000; + + &:hover, + &:active + { + border-bottom-color: currentColor; + font-size: 1.2em; + } + } + } + + .article-date + { + color: #888; + letter-spacing: 0.2em; + text-align: center; + } + } + + & > section + { + margin: 20px auto; + text-align: justify; + } + + & > footer + { + text-align: center; + + ul.actions + { + .clear-margin(); + list-style-type: none; + + li + { + display: inline-block; + + a + { + background: #000; + border: none; + color: #fff; + display: inline-block; + font-size: 0.8em; + letter-spacing: 0.1em; + padding: 0.5em 1em; + text-transform: lowercase; + transition: 0.5s; + + &:hover, + &:active + { + background: #ccc; + color: #000; + font-size: 1em; + } + } + } + } + } + + &:nth-child(odd) + { + margin-left: 0; + } + + &:nth-child(even) + { + margin-right: 0; + } +} \ No newline at end of file diff --git a/css/less/section-view.less b/css/less/section-view.less new file mode 100644 index 0000000..69e67f0 --- /dev/null +++ b/css/less/section-view.less @@ -0,0 +1,67 @@ +.section-view +{ + width: 720px; + + .view-message + { + .clear-margin(); + width: 600px; + padding: 20px; + border-radius: 20px; + background: #000; + color: #fff; + } + + .article-left + { + margin: 40px auto; + width: 240px; + float: left; + + .article-date + { + color: #888; + letter-spacing: 0.2em; + } + + ul.actions + { + .clear-margin(); + list-style-type: none; + + li + { + display: block; + margin: 10px 0; + a + { + background: #000; + border: none; + color: #fff; + display: inline-block; + font-size: 0.8em; + letter-spacing: 0.1em; + padding: 0.5em 1em; + text-transform: lowercase; + transition: 0.5s; + + &:hover, + &:active + { + background: #ccc; + color: #000; + font-size: 1em; + } + } + } + } + } + + .article-right + { + margin: 40px auto; + width: 480px; + float: right; + text-align: justify; + } +} \ No newline at end of file diff --git a/css/less/section.less b/css/less/section.less new file mode 100644 index 0000000..12e8362 --- /dev/null +++ b/css/less/section.less @@ -0,0 +1,6 @@ +body > section +{ + .clear-margin(); + margin: 40px auto; + width: 960px; +} \ No newline at end of file diff --git a/css/less/style.less b/css/less/style.less index a8411e2..83d4580 100644 --- a/css/less/style.less +++ b/css/less/style.less @@ -1,201 +1,14 @@ @import 'normalize.less'; -@import 'mixin.less'; @import 'font.less'; +@import 'mixin.less'; +@import 'base.less'; -a -{ - border-bottom: 1px solid transparent; - color: #aaa; - text-decoration: none; - transition: 0.5s; - - &:hover, - &:active - { - border-bottom-color: #aaa; - } -} - -body > header -{ - .clear-margin(); - padding: 40px 0; - width: 960px; - text-align: center; - - .header-title - { - .roboto-condensed(700); - .noselect(); - font-size: 4em; - text-transform: uppercase; - } - - .header-subtitle - { - .roboto-condensed(300); - .noselect(); - font-size: 1.5em; - text-transform: lowercase; - } -} - -body > nav -{ - .clear-margin(); - background: #000; - color: #fff; - height: 50px; - overflow: hidden; - width: 960px; - - ul - { - .clear-margin(); - height: 100%; - list-style-type: none; - - li - { - display: inline-block; - height: 50px; - - a - { - .roboto-condensed(700); - border: none; - color: #fff; - display: inline-block; - font-size: 16px; - height: 16px; - line-height: 16px; - padding: 17px; - text-decoration: none; - text-transform: uppercase; - transition: 0.5s; - - &:hover, - &:active - { - background: #ccc; - color: #000; - } - } - } - } - - .nav-left, - .nav-left li - { - float: left; - } - - .nav-right, - .nav-right li - { - float: right; - } -} - -body > section -{ - .clear-margin(); - width: 960px; - - & > article - { - margin: 40px auto; - width: 600px; - - & > header - { - h1 - { - text-align: center; - - a - { - color: #000; - - &:hover, - &:active - { - border-bottom-color: currentColor; - font-size: 1.2em; - } - } - } - - .article-date - { - color: #888; - letter-spacing: 0.2em; - text-align: center; - } - } - - & > section - { - margin: 20px auto; - text-align: justify; - } - - & > footer - { - text-align: center; - - ul.actions - { - .clear-margin(); - list-style-type: none; - - li - { - display: inline-block; - - a - { - background: #000; - border: none; - color: #fff; - display: inline-block; - font-size: 0.8em; - letter-spacing: 0.1em; - padding: 0.5em 1em; - text-transform: lowercase; - transition: 0.5s; - - &:hover, - &:active - { - background: #ccc; - color: #000; - font-size: 1em; - } - } - } - } - } - - &:nth-child(odd) - { - margin-left: 0; - } - - &:nth-child(even) - { - margin-right: 0; - } - } -} +@import 'header.less'; +@import 'nav.less'; +@import 'footer.less'; -body > footer -{ - .clear-margin(); - border-top: 1px solid #ccc; - padding: 20px; - width: 960px; - font-size: 0.8em; - text-align: center; -} \ No newline at end of file +@import 'section.less'; +@import 'section-list.less'; +@import 'section-edit.less'; +@import 'section-view.less'; \ No newline at end of file diff --git a/css/style.css b/css/style.css index b5f46ec..b6f897e 100644 --- a/css/style.css +++ b/css/style.css @@ -1,2 +1,2 @@ /* CSS crunched with Crunch - http://crunchapp.net/ */ -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-family:'Roboto','Ubuntu',sans-serif;font-weight:400}h1,h2,h3,h4,h5,h6{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700}code,samp,kbd,pre{font-family:'Inconsolata','Consolas',monospace;font-weight:400}a{border-bottom:1px solid transparent;color:#aaa;text-decoration:none;transition:0.5s}a:hover,a:active{border-bottom-color:#aaa}body>header{margin:0 auto;padding:0;padding:40px 0;width:960px;text-align:center}body>header .header-title{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:4em;text-transform:uppercase}body>header .header-subtitle{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:300;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1.5em;text-transform:lowercase}body>nav{margin:0 auto;padding:0;background:#000;color:#fff;height:50px;overflow:hidden;width:960px}body>nav ul{margin:0 auto;padding:0;height:100%;list-style-type:none}body>nav ul li{display:inline-block;height:50px}body>nav ul li a{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;border:none;color:#fff;display:inline-block;font-size:16px;height:16px;line-height:16px;padding:17px;text-decoration:none;text-transform:uppercase;transition:0.5s}body>nav ul li a:hover,body>nav ul li a:active{background:#ccc;color:#000}body>nav .nav-left,body>nav .nav-left li{float:left}body>nav .nav-right,body>nav .nav-right li{float:right}body>section{margin:0 auto;padding:0;width:960px}body>section>article{margin:40px auto;width:600px}body>section>article>header h1{text-align:center}body>section>article>header h1 a{color:#000}body>section>article>header h1 a:hover,body>section>article>header h1 a:active{border-bottom-color:currentColor;font-size:1.2em}body>section>article>header .article-date{color:#888;letter-spacing:0.2em;text-align:center}body>section>article>section{margin:20px auto;text-align:justify}body>section>article>footer{text-align:center}body>section>article>footer ul.actions{margin:0 auto;padding:0;list-style-type:none}body>section>article>footer ul.actions li{display:inline-block}body>section>article>footer ul.actions li a{background:#000;border:none;color:#fff;display:inline-block;font-size:0.8em;letter-spacing:0.1em;padding:0.5em 1em;text-transform:lowercase;transition:0.5s}body>section>article>footer ul.actions li a:hover,body>section>article>footer ul.actions li a:active{background:#ccc;color:#000;font-size:1em}body>section>article:nth-child(odd){margin-left:0}body>section>article:nth-child(even){margin-right:0}body>footer{margin:0 auto;padding:0;border-top:1px solid #ccc;padding:20px;width:960px;font-size:0.8em;text-align:center} \ No newline at end of file +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-family:'Roboto','Ubuntu',sans-serif;font-weight:400}h1,h2,h3,h4,h5,h6{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700}code,samp,kbd,pre{font-family:'Inconsolata','Consolas',monospace;font-weight:400}a{border-bottom:1px solid transparent;color:#aaa;text-decoration:none;transition:0.5s}a:hover,a:active{border-bottom-color:#aaa}body>header{margin:0 auto;padding:0;padding:40px 0;width:960px;text-align:center}body>header .header-title{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:4em;text-transform:uppercase}body>header .header-subtitle{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:300;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1.5em;text-transform:lowercase}body>nav{margin:0 auto;padding:0;background:#000;color:#fff;height:50px;width:960px}@media (min-width:960px){body>nav{border-radius:10px;overflow:hidden}}body>nav ul{margin:0 auto;padding:0;height:100%;list-style-type:none}body>nav ul li{display:inline-block;height:50px}body>nav ul li a{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;border:none;color:#fff;display:inline-block;font-size:16px;height:16px;line-height:16px;padding:17px;text-decoration:none;text-transform:uppercase;transition:0.5s}body>nav ul li a:hover,body>nav ul li a:active{background:#ccc;color:#000}body>nav .nav-left,body>nav .nav-left li{float:left}body>nav .nav-right,body>nav .nav-right li{float:right}body>footer{margin:0 auto;padding:0;border-top:1px solid #888;clear:both;padding:20px 0;width:960px;font-size:0.8em;text-align:center}body>section{margin:0 auto;padding:0;margin:40px auto;width:960px}.section-list>article{margin:40px auto;width:600px}.section-list>article>header h1{text-align:center}.section-list>article>header h1 a{color:#000}.section-list>article>header h1 a:hover,.section-list>article>header h1 a:active{border-bottom-color:currentColor;font-size:1.2em}.section-list>article>header .article-date{color:#888;letter-spacing:0.2em;text-align:center}.section-list>article>section{margin:20px auto;text-align:justify}.section-list>article>footer{text-align:center}.section-list>article>footer ul.actions{margin:0 auto;padding:0;list-style-type:none}.section-list>article>footer ul.actions li{display:inline-block}.section-list>article>footer ul.actions li a{background:#000;border:none;color:#fff;display:inline-block;font-size:0.8em;letter-spacing:0.1em;padding:0.5em 1em;text-transform:lowercase;transition:0.5s}.section-list>article>footer ul.actions li a:hover,.section-list>article>footer ul.actions li a:active{background:#ccc;color:#000;font-size:1em}.section-list>article:nth-child(odd){margin-left:0}.section-list>article:nth-child(even){margin-right:0}.section-edit{text-align:center;width:600px}.section-edit input[type="text"]{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:500px}.section-edit input[type="text"]:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:550px}.section-edit input[type="date"]{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:500px}.section-edit input[type="date"]:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:550px}.section-edit textarea{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:500px;font-family:'Inconsolata','Consolas',monospace;font-weight:400;height:300px;resize:none}.section-edit textarea:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:550px}.section-edit button{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;background:#ccc;border:1px solid #888;border-radius:10px;display:block;margin:20px auto;outline:none;padding:10px;text-transform:uppercase;transition:0.5s;width:300px}.section-edit button:hover,.section-edit button:active{border-color:#000;box-shadow:0 0 10px 5px #888;width:330px}.section-edit .edit-message{background:#000;border-radius:10px;color:#fff;opacity:1.0;padding:10px;transition:0.5s}.section-edit .edit-hidden{opacity:0.0;height:0}.section-view{width:720px}.section-view .view-message{margin:0 auto;padding:0;width:600px;padding:20px;border-radius:20px;background:#000;color:#fff}.section-view .article-left{margin:40px auto;width:240px;float:left}.section-view .article-left .article-date{color:#888;letter-spacing:0.2em}.section-view .article-left ul.actions{margin:0 auto;padding:0;list-style-type:none}.section-view .article-left ul.actions li{display:block;margin:10px 0}.section-view .article-left ul.actions li a{background:#000;border:none;color:#fff;display:inline-block;font-size:0.8em;letter-spacing:0.1em;padding:0.5em 1em;text-transform:lowercase;transition:0.5s}.section-view .article-left ul.actions li a:hover,.section-view .article-left ul.actions li a:active{background:#ccc;color:#000;font-size:1em}.section-view .article-right{margin:40px auto;width:480px;float:right;text-align:justify} \ No newline at end of file diff --git a/index.php b/index.php index 6b77693..8675464 100644 --- a/index.php +++ b/index.php @@ -1,13 +1,13 @@ true))); \ No newline at end of file diff --git a/php/action/delete_post.php b/php/action/delete_post.php new file mode 100644 index 0000000..fce1825 --- /dev/null +++ b/php/action/delete_post.php @@ -0,0 +1,8 @@ + true))); \ No newline at end of file diff --git a/php/config.php b/php/config.php index 78add47..f2f700c 100644 --- a/php/config.php +++ b/php/config.php @@ -6,4 +6,6 @@ $db_name = 'slog'; $admin_user = 'titodks'; -$admin_pass = 'rizahanakusuma'; \ No newline at end of file +$admin_pass = 'rizahanakusuma'; + +$baseurl = 'http://localhost/Ted-Simple-Blog/'; \ No newline at end of file diff --git a/php/crud/post.php b/php/crud/post.php index dc4209c..b7c28fe 100644 --- a/php/crud/post.php +++ b/php/crud/post.php @@ -6,7 +6,7 @@ function post_insert($title, $content, $date) { $query = "INSERT INTO posts (id, title, content, date) VALUES (NULL, '%title%', '%content%', '%date%')"; $param = array( - 'content' => $content, + 'content' => htmlspecialchars($content), 'title' => $title, 'date' => $date ); @@ -18,7 +18,7 @@ function post_select($id = null) { $query = "SELECT * FROM posts WHERE id = '%id%'"; $param = array('id' => $id); } else { - $query = "SELECT * FROM posts"; + $query = "SELECT * FROM posts ORDER BY date DESC, id DESC"; $param = array(); } return db_query($query, $param); diff --git a/php/lib/admin_auth.php b/php/lib/admin_auth.php deleted file mode 100644 index fbb4dd0..0000000 --- a/php/lib/admin_auth.php +++ /dev/null @@ -1,16 +0,0 @@ - $value) { $query = str_ireplace("%{$key}%", mysqli_real_escape_string($db, $value), $query); } - return mysqli_query($db, $query); + $result = mysqli_query($db, $query); + if (stripos($query, "INSERT") !== false || stripos($query, "UPDATE") !== false) { + return mysqli_insert_id($db); + } else { + return $result; + } } \ No newline at end of file diff --git a/php/lib/url.php b/php/lib/url.php new file mode 100644 index 0000000..afe1b16 --- /dev/null +++ b/php/lib/url.php @@ -0,0 +1,61 @@ + 0) { + $url .= "?"; + foreach ($param as $key => $value) { + $html_key = htmlspecialchars($key); + $html_value = htmlspecialchars($value); + $url .= "{$html_key}={$html_value}"; + + end($param); + if ($key !== key($param)) { + $url .= "&"; + } + } + } + return $url; +} + +function url_list_post() { + return url_make_get(array( + "action" => "list" + )); +} + +function url_edit_post($id = NULL) { + $param = array( + "action" => "edit" + ); + if ($id != NULL) { + $param["id"] = $id; + } + return url_make_get($param); +} + +function url_view_post($id, $param = NULL) { + if ($param == NULL) { + $param = array(); + } + $param["action"] = "view"; + $param["id"] = $id; + return url_make_get($param); +} + +function url_delete_post($id) { + $param = array( + "action" => "delete", + "id" => $id + ); + return url_make_get($param); +} \ No newline at end of file diff --git a/php/pages/about.php b/php/pages/about.php new file mode 100644 index 0000000..71276f8 --- /dev/null +++ b/php/pages/about.php @@ -0,0 +1,2 @@ +

About

+

Hello about!

\ No newline at end of file diff --git a/php/pages/license.php b/php/pages/license.php new file mode 100644 index 0000000..20de7a4 --- /dev/null +++ b/php/pages/license.php @@ -0,0 +1,2 @@ +

License

+

Hello license!

\ No newline at end of file diff --git a/php/templates/bottom.php b/php/templates/bottom.php new file mode 100644 index 0000000..f1bcf8c --- /dev/null +++ b/php/templates/bottom.php @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/php/templates/navbar.php b/php/templates/navbar.php new file mode 100644 index 0000000..204e8e2 --- /dev/null +++ b/php/templates/navbar.php @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/templates/top.php b/php/templates/top.php similarity index 65% rename from templates/top.php rename to php/templates/top.php index 5db9950..0725dff 100644 --- a/templates/top.php +++ b/php/templates/top.php @@ -1,3 +1,6 @@ + @@ -10,11 +13,10 @@ Slog - - - + - \ No newline at end of file + +
+
Slog
+
A simple blog by Ted Kesgar
+
\ No newline at end of file diff --git a/php/views/post_create.php b/php/views/post_create.php deleted file mode 100644 index e69de29..0000000 diff --git a/php/views/post_delete.php b/php/views/post_delete.php index e69de29..eb5658f 100644 --- a/php/views/post_delete.php +++ b/php/views/post_delete.php @@ -0,0 +1,23 @@ + + + + + + +
+

Post Deleted

+

Post '' has been successfully deleted.

+ Back to home +
+ + \ No newline at end of file diff --git a/php/views/post_edit.php b/php/views/post_edit.php index e69de29..40255ef 100644 --- a/php/views/post_edit.php +++ b/php/views/post_edit.php @@ -0,0 +1,33 @@ + + + + + + +
+ +

+

You can use Markdown to aid with the HTML tags.

+
+ + + + +

Please insert today's date () or newer (e.g. October 21, 2015).

+ + +
+ + \ No newline at end of file diff --git a/php/views/post_list.php b/php/views/post_list.php index a95ed25..770489c 100644 --- a/php/views/post_list.php +++ b/php/views/post_list.php @@ -1,52 +1,35 @@ - + -
-
Slog
-
A simple blog by Ted Kesgar
-
+ - - -
- +
+
- - - \ No newline at end of file + \ No newline at end of file diff --git a/php/views/post_page.php b/php/views/post_page.php new file mode 100644 index 0000000..3bd64e5 --- /dev/null +++ b/php/views/post_page.php @@ -0,0 +1,9 @@ + + + + +
+ +
+ + \ No newline at end of file diff --git a/php/views/post_view.php b/php/views/post_view.php index e69de29..040184e 100644 --- a/php/views/post_view.php +++ b/php/views/post_view.php @@ -0,0 +1,39 @@ + + + + + + +
+ +
Post "" successfully added.
+ + +
Post "" successfully edited.
+ + +
+ + \ No newline at end of file diff --git a/templates/bottom.php b/templates/bottom.php deleted file mode 100644 index 4d4a7e5..0000000 --- a/templates/bottom.php +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file From 0aa5d4e8997c56141ddb9a2bb70950a0fcb6fad6 Mon Sep 17 00:00:00 2001 From: Ted Kesgar Date: Tue, 14 Oct 2014 16:23:48 +0700 Subject: [PATCH 3/7] Finished comment section --- css/less/base.less | 22 ++++++++++- css/less/section-edit.less | 20 ---------- css/less/section-view.less | 80 ++++++++++++++++++++++++++++++++++++++ css/style.css | 2 +- index.php | 33 ++++++++++------ js/script.js | 37 ++++++++++++++++++ php/action/add_post.php | 12 +++--- php/action/delete_post.php | 8 ---- php/action/edit_post.php | 14 +++---- php/ajax/comment_add.php | 11 ++++++ php/ajax/comments_list.php | 24 ++++++++++++ php/config.php | 14 +++---- php/crud/comment.php | 55 +++++++------------------- php/crud/post.php | 18 ++++----- php/lib/database.php | 2 +- php/lib/url.php | 19 +++++---- php/templates/bottom.php | 7 ++-- php/templates/navbar.php | 8 ++-- php/templates/top.php | 4 +- php/views/post_delete.php | 17 ++++---- php/views/post_edit.php | 56 ++++++++++++++++---------- php/views/post_list.php | 25 ++++++------ php/views/post_page.php | 9 ++--- php/views/post_view.php | 55 ++++++++++++++++---------- 24 files changed, 350 insertions(+), 202 deletions(-) delete mode 100644 php/action/delete_post.php create mode 100644 php/ajax/comment_add.php create mode 100644 php/ajax/comments_list.php diff --git a/css/less/base.less b/css/less/base.less index f41ea01..6ca5119 100644 --- a/css/less/base.less +++ b/css/less/base.less @@ -25,4 +25,24 @@ a { border-bottom-color: #aaa; } -} \ No newline at end of file +} + +.input-shared(@width : 500px) +{ + background: #fff; + border: 1px solid #888; + border-radius: 10px; + display: block; + margin: 10px auto; + padding: 10px; + transition: 0.5s; + width: @width; + + &:focus + { + border-color: #000; + box-shadow: 0 0 4px 2px #888; + outline: none; + width: @width + 40px; + } +} diff --git a/css/less/section-edit.less b/css/less/section-edit.less index d61649b..2d6b790 100644 --- a/css/less/section-edit.less +++ b/css/less/section-edit.less @@ -1,23 +1,3 @@ -.input-shared() -{ - background: #fff; - border: 1px solid #888; - border-radius: 10px; - display: block; - margin: 10px auto; - padding: 10px; - transition: 0.5s; - width: 500px; - - &:focus - { - border-color: #000; - box-shadow: 0 0 4px 2px #888; - outline: none; - width: 550px; - } -} - .section-edit { text-align: center; diff --git a/css/less/section-view.less b/css/less/section-view.less index 69e67f0..e463322 100644 --- a/css/less/section-view.less +++ b/css/less/section-view.less @@ -64,4 +64,84 @@ float: right; text-align: justify; } + + .article-comments + { + .comment + { + margin: 1em auto; + + .comment-header + { + margin: 0.5em auto; + + .comment-author + { + .roboto-condensed(); + font-size: 1.25em; + } + + .comment-date + { + font-size: 0.8em; + } + } + + .comment-content + { + padding-left: 40px; + } + } + } + + .form-comment + { + width: 300px; + + input[type="text"] + { + .input-shared(400px); + } + + input[type="email"] + { + .input-shared(400px); + } + + input[type="date"] + { + .input-shared(400px); + } + + textarea + { + .input-shared(400px); + .inconsolata(); + height: 200px; + resize: none; + } + + button + { + .roboto-condensed(700); + background: #ccc; + border: 1px solid #888; + border-radius: 10px; + display: block; + margin: 20px auto; + margin-left: 0; + outline: none; + padding: 10px; + text-transform: uppercase; + transition: 0.5s; + width: 200px; + + &:hover, &:active + { + border-color: #000; + box-shadow: 0 0 10px 5px #888; + width: 220px; + } + } + } } \ No newline at end of file diff --git a/css/style.css b/css/style.css index b6f897e..9ad6d18 100644 --- a/css/style.css +++ b/css/style.css @@ -1,2 +1,2 @@ /* CSS crunched with Crunch - http://crunchapp.net/ */ -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-family:'Roboto','Ubuntu',sans-serif;font-weight:400}h1,h2,h3,h4,h5,h6{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700}code,samp,kbd,pre{font-family:'Inconsolata','Consolas',monospace;font-weight:400}a{border-bottom:1px solid transparent;color:#aaa;text-decoration:none;transition:0.5s}a:hover,a:active{border-bottom-color:#aaa}body>header{margin:0 auto;padding:0;padding:40px 0;width:960px;text-align:center}body>header .header-title{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:4em;text-transform:uppercase}body>header .header-subtitle{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:300;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1.5em;text-transform:lowercase}body>nav{margin:0 auto;padding:0;background:#000;color:#fff;height:50px;width:960px}@media (min-width:960px){body>nav{border-radius:10px;overflow:hidden}}body>nav ul{margin:0 auto;padding:0;height:100%;list-style-type:none}body>nav ul li{display:inline-block;height:50px}body>nav ul li a{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;border:none;color:#fff;display:inline-block;font-size:16px;height:16px;line-height:16px;padding:17px;text-decoration:none;text-transform:uppercase;transition:0.5s}body>nav ul li a:hover,body>nav ul li a:active{background:#ccc;color:#000}body>nav .nav-left,body>nav .nav-left li{float:left}body>nav .nav-right,body>nav .nav-right li{float:right}body>footer{margin:0 auto;padding:0;border-top:1px solid #888;clear:both;padding:20px 0;width:960px;font-size:0.8em;text-align:center}body>section{margin:0 auto;padding:0;margin:40px auto;width:960px}.section-list>article{margin:40px auto;width:600px}.section-list>article>header h1{text-align:center}.section-list>article>header h1 a{color:#000}.section-list>article>header h1 a:hover,.section-list>article>header h1 a:active{border-bottom-color:currentColor;font-size:1.2em}.section-list>article>header .article-date{color:#888;letter-spacing:0.2em;text-align:center}.section-list>article>section{margin:20px auto;text-align:justify}.section-list>article>footer{text-align:center}.section-list>article>footer ul.actions{margin:0 auto;padding:0;list-style-type:none}.section-list>article>footer ul.actions li{display:inline-block}.section-list>article>footer ul.actions li a{background:#000;border:none;color:#fff;display:inline-block;font-size:0.8em;letter-spacing:0.1em;padding:0.5em 1em;text-transform:lowercase;transition:0.5s}.section-list>article>footer ul.actions li a:hover,.section-list>article>footer ul.actions li a:active{background:#ccc;color:#000;font-size:1em}.section-list>article:nth-child(odd){margin-left:0}.section-list>article:nth-child(even){margin-right:0}.section-edit{text-align:center;width:600px}.section-edit input[type="text"]{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:500px}.section-edit input[type="text"]:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:550px}.section-edit input[type="date"]{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:500px}.section-edit input[type="date"]:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:550px}.section-edit textarea{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:500px;font-family:'Inconsolata','Consolas',monospace;font-weight:400;height:300px;resize:none}.section-edit textarea:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:550px}.section-edit button{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;background:#ccc;border:1px solid #888;border-radius:10px;display:block;margin:20px auto;outline:none;padding:10px;text-transform:uppercase;transition:0.5s;width:300px}.section-edit button:hover,.section-edit button:active{border-color:#000;box-shadow:0 0 10px 5px #888;width:330px}.section-edit .edit-message{background:#000;border-radius:10px;color:#fff;opacity:1.0;padding:10px;transition:0.5s}.section-edit .edit-hidden{opacity:0.0;height:0}.section-view{width:720px}.section-view .view-message{margin:0 auto;padding:0;width:600px;padding:20px;border-radius:20px;background:#000;color:#fff}.section-view .article-left{margin:40px auto;width:240px;float:left}.section-view .article-left .article-date{color:#888;letter-spacing:0.2em}.section-view .article-left ul.actions{margin:0 auto;padding:0;list-style-type:none}.section-view .article-left ul.actions li{display:block;margin:10px 0}.section-view .article-left ul.actions li a{background:#000;border:none;color:#fff;display:inline-block;font-size:0.8em;letter-spacing:0.1em;padding:0.5em 1em;text-transform:lowercase;transition:0.5s}.section-view .article-left ul.actions li a:hover,.section-view .article-left ul.actions li a:active{background:#ccc;color:#000;font-size:1em}.section-view .article-right{margin:40px auto;width:480px;float:right;text-align:justify} \ No newline at end of file +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-family:'Roboto','Ubuntu',sans-serif;font-weight:400}h1,h2,h3,h4,h5,h6{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700}code,samp,kbd,pre{font-family:'Inconsolata','Consolas',monospace;font-weight:400}a{border-bottom:1px solid transparent;color:#aaa;text-decoration:none;transition:0.5s}a:hover,a:active{border-bottom-color:#aaa}body>header{margin:0 auto;padding:0;padding:40px 0;width:960px;text-align:center}body>header .header-title{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:4em;text-transform:uppercase}body>header .header-subtitle{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:300;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1.5em;text-transform:lowercase}body>nav{margin:0 auto;padding:0;background:#000;color:#fff;height:50px;width:960px}@media (min-width:960px){body>nav{border-radius:10px;overflow:hidden}}body>nav ul{margin:0 auto;padding:0;height:100%;list-style-type:none}body>nav ul li{display:inline-block;height:50px}body>nav ul li a{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;border:none;color:#fff;display:inline-block;font-size:16px;height:16px;line-height:16px;padding:17px;text-decoration:none;text-transform:uppercase;transition:0.5s}body>nav ul li a:hover,body>nav ul li a:active{background:#ccc;color:#000}body>nav .nav-left,body>nav .nav-left li{float:left}body>nav .nav-right,body>nav .nav-right li{float:right}body>footer{margin:0 auto;padding:0;border-top:1px solid #888;clear:both;padding:20px 0;width:960px;font-size:0.8em;text-align:center}body>section{margin:0 auto;padding:0;margin:40px auto;width:960px}.section-list>article{margin:40px auto;width:600px}.section-list>article>header h1{text-align:center}.section-list>article>header h1 a{color:#000}.section-list>article>header h1 a:hover,.section-list>article>header h1 a:active{border-bottom-color:currentColor;font-size:1.2em}.section-list>article>header .article-date{color:#888;letter-spacing:0.2em;text-align:center}.section-list>article>section{margin:20px auto;text-align:justify}.section-list>article>footer{text-align:center}.section-list>article>footer ul.actions{margin:0 auto;padding:0;list-style-type:none}.section-list>article>footer ul.actions li{display:inline-block}.section-list>article>footer ul.actions li a{background:#000;border:none;color:#fff;display:inline-block;font-size:0.8em;letter-spacing:0.1em;padding:0.5em 1em;text-transform:lowercase;transition:0.5s}.section-list>article>footer ul.actions li a:hover,.section-list>article>footer ul.actions li a:active{background:#ccc;color:#000;font-size:1em}.section-list>article:nth-child(odd){margin-left:0}.section-list>article:nth-child(even){margin-right:0}.section-edit{text-align:center;width:600px}.section-edit input[type="text"]{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:500px}.section-edit input[type="text"]:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:540px}.section-edit input[type="date"]{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:500px}.section-edit input[type="date"]:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:540px}.section-edit textarea{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:500px;font-family:'Inconsolata','Consolas',monospace;font-weight:400;height:300px;resize:none}.section-edit textarea:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:540px}.section-edit button{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;background:#ccc;border:1px solid #888;border-radius:10px;display:block;margin:20px auto;outline:none;padding:10px;text-transform:uppercase;transition:0.5s;width:300px}.section-edit button:hover,.section-edit button:active{border-color:#000;box-shadow:0 0 10px 5px #888;width:330px}.section-edit .edit-message{background:#000;border-radius:10px;color:#fff;opacity:1.0;padding:10px;transition:0.5s}.section-edit .edit-hidden{opacity:0.0;height:0}.section-view{width:720px}.section-view .view-message{margin:0 auto;padding:0;width:600px;padding:20px;border-radius:20px;background:#000;color:#fff}.section-view .article-left{margin:40px auto;width:240px;float:left}.section-view .article-left .article-date{color:#888;letter-spacing:0.2em}.section-view .article-left ul.actions{margin:0 auto;padding:0;list-style-type:none}.section-view .article-left ul.actions li{display:block;margin:10px 0}.section-view .article-left ul.actions li a{background:#000;border:none;color:#fff;display:inline-block;font-size:0.8em;letter-spacing:0.1em;padding:0.5em 1em;text-transform:lowercase;transition:0.5s}.section-view .article-left ul.actions li a:hover,.section-view .article-left ul.actions li a:active{background:#ccc;color:#000;font-size:1em}.section-view .article-right{margin:40px auto;width:480px;float:right;text-align:justify}.section-view .article-comments .comment{margin:1em auto}.section-view .article-comments .comment .comment-header{margin:0.5em auto}.section-view .article-comments .comment .comment-header .comment-author{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:400;font-size:1.25em}.section-view .article-comments .comment .comment-header .comment-date{font-size:0.8em}.section-view .article-comments .comment .comment-content{padding-left:40px}.section-view .form-comment{width:300px}.section-view .form-comment input[type="text"]{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:400px}.section-view .form-comment input[type="text"]:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:440px}.section-view .form-comment input[type="email"]{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:400px}.section-view .form-comment input[type="email"]:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:440px}.section-view .form-comment input[type="date"]{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:400px}.section-view .form-comment input[type="date"]:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:440px}.section-view .form-comment textarea{background:#fff;border:1px solid #888;border-radius:10px;display:block;margin:10px auto;padding:10px;transition:0.5s;width:400px;font-family:'Inconsolata','Consolas',monospace;font-weight:400;height:200px;resize:none}.section-view .form-comment textarea:focus{border-color:#000;box-shadow:0 0 4px 2px #888;outline:none;width:440px}.section-view .form-comment button{font-family:'Roboto Condensed','Ubuntu Condensed',sans-serif;font-weight:700;background:#ccc;border:1px solid #888;border-radius:10px;display:block;margin:20px auto;margin-left:0;outline:none;padding:10px;text-transform:uppercase;transition:0.5s;width:200px}.section-view .form-comment button:hover,.section-view .form-comment button:active{border-color:#000;box-shadow:0 0 10px 5px #888;width:220px} \ No newline at end of file diff --git a/index.php b/index.php index 8675464..21c52e8 100644 --- a/index.php +++ b/index.php @@ -1,24 +1,33 @@ true))); \ No newline at end of file +header("Location: " . url_view_post($id, array("add" => true))); \ No newline at end of file diff --git a/php/action/delete_post.php b/php/action/delete_post.php deleted file mode 100644 index fce1825..0000000 --- a/php/action/delete_post.php +++ /dev/null @@ -1,8 +0,0 @@ - true))); \ No newline at end of file +header("Location: " . url_view_post($id, array("edit" => true))); \ No newline at end of file diff --git a/php/ajax/comment_add.php b/php/ajax/comment_add.php new file mode 100644 index 0000000..fa7fce2 --- /dev/null +++ b/php/ajax/comment_add.php @@ -0,0 +1,11 @@ + 0) ? "SUCCESS" : "FAILED"; \ No newline at end of file diff --git a/php/ajax/comments_list.php b/php/ajax/comments_list.php new file mode 100644 index 0000000..2f5956a --- /dev/null +++ b/php/ajax/comments_list.php @@ -0,0 +1,24 @@ + 0) { + while ($comment = mysqli_fetch_assoc($comments)) : + ?> +
+
+ "> + +
+
+ +
+
+ +

No comments have been posted for this post.

+ $post_id, - 'content' => $content, - 'email' => $email, - 'name' => $name, - 'date' => $date + "post_id" => $post_id, + "content" => $content, + "email" => $email, + "name" => $name, + "date" => $date ); return db_query($query, $param); } -function comment_select($post_id = null, $id = null) { - $query = "SELECT * FROM comments WHERE TRUE "; - if ($post_id) { - $post_id_q = mysqli_real_escape_string($db, $post_id); - $query .= "AND post_id = '%post_id%' "; +function comment_select($post_id, $id = NULL) { + $query = "SELECT * FROM comments WHERE post_id = '%post_id%'"; + $param = array("post_id" => $post_id); + if ($id != NULL) { + $query .= " AND id = '%id%'"; + $param["id"] = $id; } - if ($id) { - $id_q = mysqli_real_escape_string($db, $id); - $query .= "AND id = '%id%' "; - } - $param = array( - 'post_id' => $post_id, - 'id' => $id - ); - return db_query($query, $param); -} - -function comment_update($id, $name, $email, $content, $date) { - $query = "UPDATE posts - SET content = '%content%', - email = '%email%', - name = '%name%', - date = '%date%' - WHERE id = '%id%'"; - $param = array( - 'content' => $content, - 'email' => $email, - 'name' => $name, - 'date' => $date, - 'id' => $id - ); - return db_query($query, $param); -} - -function comment_delete($id) { - $query = "DELETE FROM comments WHERE id = '%id%'"; - $param = array('id' => $id); + $query .= " ORDER BY date DESC, id DESC"; return db_query($query, $param); } \ No newline at end of file diff --git a/php/crud/post.php b/php/crud/post.php index b7c28fe..9426264 100644 --- a/php/crud/post.php +++ b/php/crud/post.php @@ -1,14 +1,14 @@ htmlspecialchars($content), - 'title' => $title, - 'date' => $date + "content" => htmlspecialchars($content), + "title" => $title, + "date" => $date ); return db_query($query, $param); } @@ -31,16 +31,16 @@ function post_update($id, $title, $content, $date) { date = '%date%' WHERE id = '%id%'"; $param = array( - 'content' => $content, - 'title' => $title, - 'date' => $date, - 'id' => $id + "content" => $content, + "title" => $title, + "date" => $date, + "id" => $id ); return db_query($query, $param); } function post_delete($id) { $query = "DELETE FROM posts WHERE id = '%id%'"; - $param = array('id' => $id); + $param = array("id" => $id); return db_query($query, $param); } \ No newline at end of file diff --git a/php/lib/database.php b/php/lib/database.php index ec13763..cd3760a 100644 --- a/php/lib/database.php +++ b/php/lib/database.php @@ -1,6 +1,6 @@ $name)); +} + function url_list_post() { - return url_make_get(array( - "action" => "list" - )); + return url_make_get(array("action" => "list")); } function url_edit_post($id = NULL) { @@ -45,10 +47,11 @@ function url_edit_post($id = NULL) { function url_view_post($id, $param = NULL) { if ($param == NULL) { - $param = array(); + $param = array("id" => $id); + } else { + $param["action"] = "view"; + $param["id"] = $id; } - $param["action"] = "view"; - $param["id"] = $id; return url_make_get($param); } diff --git a/php/templates/bottom.php b/php/templates/bottom.php index f1bcf8c..10f2b32 100644 --- a/php/templates/bottom.php +++ b/php/templates/bottom.php @@ -1,9 +1,10 @@ - + \ No newline at end of file diff --git a/php/templates/navbar.php b/php/templates/navbar.php index 204e8e2..84ad06f 100644 --- a/php/templates/navbar.php +++ b/php/templates/navbar.php @@ -1,13 +1,11 @@